Skip to content

Commit

Permalink
docs(samples): adds samples and tests (#225)
Browse files Browse the repository at this point in the history
  • Loading branch information
steffnay authored Dec 2, 2020
1 parent 287f7a4 commit 3c290b1
Show file tree
Hide file tree
Showing 6 changed files with 387 additions and 9 deletions.
2 changes: 1 addition & 1 deletion packages/google-cloud-datacatalog/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"test": "c8 mocha build/test/*.js",
"predocs-test": "npm run docs",
"docs-test": "linkinator docs",
"samples-test": "c8 mocha samples/test/*.js",
"samples-test": "cd samples/ && npm link ../ && npm test",
"system-test": "c8 mocha --timeout=5000 build/system-test/*.js",
"compile": "tsc -p . && cp -r protos build/",
"prepare": "npm run compile",
Expand Down
122 changes: 122 additions & 0 deletions packages/google-cloud-datacatalog/samples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
[//]: # "This README.md file is auto-generated, all changes to this file will be lost."
[//]: # "To regenerate it, use `python -m synthtool`."
<img src="https://avatars2.githubusercontent.com/u/2810941?v=3&s=96" alt="Google Cloud Platform logo" title="Google Cloud Platform" align="right" height="96" width="96"/>

# [Data Catalog: Node.js Samples](https://github.com/googleapis/nodejs-datacatalog)

[![Open in Cloud Shell][shell_img]][shell_link]



## Table of Contents

* [Before you begin](#before-you-begin)
* [Samples](#samples)
* [Create Custom Entry](#create-custom-entry)
* [Create Fileset](#create-fileset)
* [Grant Tag Template User Role](#grant-tag-template-user-role)
* [Quickstart](#quickstart)
* [Search Assets](#search-assets)

## Before you begin

Before running the samples, make sure you've followed the steps outlined in
[Using the client library](https://github.com/googleapis/nodejs-datacatalog#using-the-client-library).

`cd samples`

`npm install`

`cd ..`

## Samples



### Create Custom Entry

View the [source code](https://github.com/googleapis/nodejs-datacatalog/blob/master/samples/createCustomEntry.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/createCustomEntry.js,samples/README.md)

__Usage:__


`node samples/createCustomEntry.js`


-----




### Create Fileset

View the [source code](https://github.com/googleapis/nodejs-datacatalog/blob/master/samples/createFileset.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/createFileset.js,samples/README.md)

__Usage:__


`node samples/createFileset.js`


-----




### Grant Tag Template User Role

View the [source code](https://github.com/googleapis/nodejs-datacatalog/blob/master/samples/grantTagTemplateUserRole.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/grantTagTemplateUserRole.js,samples/README.md)

__Usage:__


`node samples/grantTagTemplateUserRole.js`


-----




### Quickstart

View the [source code](https://github.com/googleapis/nodejs-datacatalog/blob/master/samples/quickstart.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/quickstart.js,samples/README.md)

__Usage:__


`node samples/quickstart.js`


-----




### Search Assets

View the [source code](https://github.com/googleapis/nodejs-datacatalog/blob/master/samples/searchAssets.js).

[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/searchAssets.js,samples/README.md)

__Usage:__


`node samples/searchAssets.js`






[shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datacatalog&page=editor&open_in_editor=samples/README.md
[product-docs]: https://cloud.google.com/data-catalog/
6 changes: 4 additions & 2 deletions packages/google-cloud-datacatalog/samples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"license": "Apache-2.0",
"author": "Google LLC",
"engines": {
"node": ">=8"
"node": ">=10"
},
"repository": "googleapis/nodejs-datacatalog",
"private": true,
Expand All @@ -15,7 +15,9 @@
"test": "mocha --timeout 600000"
},
"dependencies": {
"@google-cloud/datacatalog": "^2.1.3"
"@google-cloud/bigquery": "^5.5.0",
"@google-cloud/datacatalog": "^2.1.3",
"uuid": "^8.3.1"
},
"devDependencies": {
"chai": "^4.2.0",
Expand Down
170 changes: 170 additions & 0 deletions packages/google-cloud-datacatalog/samples/quickstart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

async function main(projectId, datasetId, tableId) {
// [START data_catalog_quickstart]
// Import the Google Cloud client library and create a client.
const {DataCatalogClient} = require('@google-cloud/datacatalog').v1;
const datacatalog = new DataCatalogClient();

async function quickstart() {
// Common fields.
let request;
let responses;

/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my_project'; // Google Cloud Platform project
// const datasetId = 'demo_dataset';
// const tableId = 'trips';

// Currently, Data Catalog stores metadata in the
// us-central1 region.
const location = 'us-central1';

// Create Fields.
const fieldSource = {
displayName: 'Source of data asset',
type: {
primitiveType: 'STRING',
},
};

const fieldNumRows = {
displayName: 'Number of rows in data asset',
type: {
primitiveType: 'DOUBLE',
},
};

const fieldHasPII = {
displayName: 'Has PII',
type: {
primitiveType: 'BOOL',
},
};

const fieldPIIType = {
displayName: 'PII type',
type: {
enumType: {
allowedValues: [
{
displayName: 'EMAIL',
},
{
displayName: 'SOCIAL SECURITY NUMBER',
},
{
displayName: 'NONE',
},
],
},
},
};

// Create Tag Template.
const tagTemplateId = 'demo_tag_template';

const tagTemplate = {
displayName: 'Demo Tag Template',
fields: {
source: fieldSource,
num_rows: fieldNumRows,
has_pii: fieldHasPII,
pii_type: fieldPIIType,
},
};

const tagTemplatePath = datacatalog.tagTemplatePath(
projectId,
location,
tagTemplateId
);

// Delete any pre-existing Template with the same name.
try {
request = {
name: tagTemplatePath,
force: true,
};
await datacatalog.deleteTagTemplate(request);
console.log(`Deleted template: ${tagTemplatePath}`);
} catch (error) {
console.log(`Cannot delete template: ${tagTemplatePath}`);
}

// Create the Tag Template request.
const locationPath = datacatalog.locationPath(projectId, location);

request = {
parent: locationPath,
tagTemplateId: tagTemplateId,
tagTemplate: tagTemplate,
};

// Execute the request.
responses = await datacatalog.createTagTemplate(request);
const createdTagTemplate = responses[0];
console.log(`Created template: ${createdTagTemplate.name}`);

// Lookup Data Catalog's Entry referring to the table.
responses = await datacatalog.lookupEntry({
linkedResource:
'//bigquery.googleapis.com/projects/' +
`${projectId}/datasets/${datasetId}/tables/${tableId}`,
});
const entry = responses[0];
console.log(`Entry name: ${entry.name}`);
console.log(`Entry type: ${entry.type}`);
console.log(`Linked resource: ${entry.linkedResource}`);

// Attach a Tag to the table.
const tag = {
name: entry.name,
template: createdTagTemplate.name,
fields: {
source: {
stringValue: 'copied from tlc_yellow_trips_2017',
},
num_rows: {
doubleValue: 113496874,
},
has_pii: {
boolValue: false,
},
pii_type: {
enumValue: {
displayName: 'NONE',
},
},
},
};

request = {
parent: entry.name,
tag: tag,
};

// Create the Tag.
await datacatalog.createTag(request);
console.log(`Tag created for entry: ${entry.name}`);
}
quickstart();
// [END data_catalog_quickstart]
}
main(...process.argv.slice(2));
Loading

0 comments on commit 3c290b1

Please sign in to comment.