From c282ff7ec60a91aef47f4b642524a60926a3a57b Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 11 Jun 2019 10:22:28 -0700 Subject: [PATCH] fix: added legacy samples back, until we can update external references (#428) --- README.md | 1 + samples/README.md | 18 +++++ samples/tasks.js | 163 +++++++++++++++++++++++++++++++++++++++++++++ synth.metadata | 2 +- test/.eslintrc.yml | 1 + 5 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 samples/tasks.js diff --git a/README.md b/README.md index bb4518774..3a5867565 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,7 @@ has instructions for running the samples. | Quickstart | [source code](https://github.com/googleapis/nodejs-datastore/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-datastore&page=editor&open_in_editor=samples/quickstart.js,samples/README.md) | | Add Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.add.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.add.js,samples/README.md) | | Delete Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.delete.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.delete.js,samples/README.md) | +| Legacy Samples | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) | | List Tasks | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.list.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.list.js,samples/README.md) | | Update Task | [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.markdone.js) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.markdone.js,samples/README.md) | diff --git a/samples/README.md b/samples/README.md index 2e6ce3739..26cc9a0a4 100644 --- a/samples/README.md +++ b/samples/README.md @@ -16,6 +16,7 @@ * [Quickstart](#quickstart) * [Add Task](#add-task) * [Delete Task](#delete-task) + * [Legacy Samples](#legacy-samples) * [List Tasks](#list-tasks) * [Update Task](#update-task) @@ -100,6 +101,23 @@ __Usage:__ +### Legacy Samples + +View the [source code](https://github.com/googleapis/nodejs-datastore/blob/master/samples/tasks.js). + +[![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/nodejs-datastore&page=editor&open_in_editor=samples/tasks.js,samples/README.md) + +__Usage:__ + + +`node tasks.js` + + +----- + + + + ### List Tasks Lists all tasks ordered by creation time. diff --git a/samples/tasks.js b/samples/tasks.js new file mode 100644 index 000000000..53907b60b --- /dev/null +++ b/samples/tasks.js @@ -0,0 +1,163 @@ +/** + * Copyright 2018, Google, Inc. + * 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'; + +// sample-metadata: +// title: Legacy Samples + +// [START datastore_build_service] +// By default, the client will authenticate using the service account file +// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use +// the project specified by the GCLOUD_PROJECT environment variable. See +// https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication +const {Datastore} = require('@google-cloud/datastore'); + +// Creates a client +const datastore = new Datastore(); +// [END datastore_build_service] + +/* +Installation and setup instructions. +1. Download the TaskList sample application from [here] +(https://github.com/GoogleCloudPlatform/nodejs-docs-samples/archive/master.zip). + +2. Unzip the download: +```sh +unzip nodejs-docs-samples-master.zip +``` + +3. Change directories to the TaskList application: +```sh +cd nodejs-docs-samples-master/datastore +``` + +4. Install the dependencies and link the application: +```sh +npm install +``` + +5. With the gcloud SDK, be sure you are authenticated: +```sh +gcloud beta auth application-default login +``` + +6. At a command prompt, run the following, where `` is the ID of +your Google Cloud Platform project. +```sh +export GCLOUD_PROJECT= +``` + +7. Run the application! +```sh +node tasks +``` +*/ + +// [START datastore_add_entity] +async function addTask(description) { + const taskKey = datastore.key('Task'); + const entity = { + key: taskKey, + data: [ + { + name: 'created', + value: new Date().toJSON(), + }, + { + name: 'description', + value: description, + excludeFromIndexes: true, + }, + { + name: 'done', + value: false, + }, + ], + }; + + try { + await datastore.save(entity); + console.log(`Task ${taskKey.id} created successfully.`); + } catch (err) { + console.error('ERROR:', err); + } +} +// [END datastore_add_entity] + +// [START datastore_update_entity] +async function markDone(taskId) { + const transaction = datastore.transaction(); + const taskKey = datastore.key(['Task', taskId]); + + try { + await transaction.run(); + const [task] = await transaction.get(taskKey); + task.done = true; + transaction.save({ + key: taskKey, + data: task, + }); + await transaction.commit(); + console.log(`Task ${taskId} updated successfully.`); + } catch (err) { + transaction.rollback(); + } +} +// [END datastore_update_entity] + +// [START datastore_retrieve_entities] +async function listTasks() { + const query = datastore.createQuery('Task').order('created'); + + const [tasks] = await datastore.runQuery(query); + console.log('Tasks:'); + tasks.forEach(task => { + const taskKey = task[datastore.KEY]; + console.log(taskKey.id, task); + }); +} +// [END datastore_retrieve_entities] + +// [START datastore_delete_entity] +async function deleteTask(taskId) { + const taskKey = datastore.key(['Task', taskId]); + + await datastore.delete(taskKey); + console.log(`Task ${taskId} deleted successfully.`); +} +// [END datastore_delete_entity] + +require(`yargs`) // eslint-disable-line + .command( + `new `, + `Adds a task with a description .`, + {}, + opts => addTask(opts.description) + ) + .command(`done `, `Marks the specified task as done.`, {}, opts => + markDone(opts.taskId) + ) + .command(`list`, `Lists all tasks ordered by creation time.`, {}, listTasks) + .command(`delete `, `Deletes a task.`, {}, opts => + deleteTask(opts.taskId) + ) + .example(`node $0 new "Buy milk"`, `Adds a task with description "Buy milk".`) + .example(`node $0 done 12345`, `Marks task 12345 as Done.`) + .example(`node $0 list`, `Lists all tasks ordered by creation time`) + .example(`node $0 delete 12345`, `Deletes task 12345.`) + .wrap(120) + .epilogue(`For more information, see https://cloud.google.com/datastore/docs`) + .help().argv; diff --git a/synth.metadata b/synth.metadata index 0b5d9a526..d1b038668 100644 --- a/synth.metadata +++ b/synth.metadata @@ -1,5 +1,5 @@ { - "updateTime": "2019-06-11T16:06:41.204768Z", + "updateTime": "2019-06-11T17:04:02.783050Z", "sources": [ { "generator": { diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml index 2eb32898b..40babe321 100644 --- a/test/.eslintrc.yml +++ b/test/.eslintrc.yml @@ -4,3 +4,4 @@ env: rules: node/no-unpublished-require: off node/no-missing-require: off + no-warning-comments: off