Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
.replace(/[@\.]/g, '_')
.split('_')
.reverse()
.join('_');
// END TODO
// TODO: Create record object to be inserted into Spanner
// USe Spanner.float() to convert the score property
const record = {
feedbackId: `${rev_email}_${quiz}_${timestamp}`,
email,
quiz,
timestamp,
rating,
score: Spanner.float(score),
feedback,
};
// END TODO
// TODO: Insert the record into the table using await
// use try {} catch {} and check for err.code==6 to trap
// insert errors caused by duplicated PubSub messages
try {
console.log('Saving feedback');
await feedbackTable.insert(record);
} catch (err) {
if (err.code === 6 ) {
console.log("Duplicate message - feedback already saved");
} else {
console.error('ERROR processing feedback:', err);
}
// 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';
const config = require('../config');
const {Spanner} = require('@google-cloud/spanner');
const GCLOUD_PROJECT = config.get('GCLOUD_PROJECT');
const spanner = new Spanner({GCLOUD_PROJECT});
const instance = spanner.instance('quiz-instance');
const database = instance.database('quiz-database');
const table = database.table('feedback');
function saveFeedback(
{ email, quiz, timestamp, rating, feedback, score }) {
const rev_email = email
.replace(/[@\.]/g, '_')
.split('_')
.reverse()
.join('_');
const record = {
feedbackId: `${rev_email}_${quiz}_${timestamp}`,
email,
quiz,
// This speeds up queries, but takes more space compared to normal indexes
// See the link below for more information:
// https://cloud.google.com/spanner/docs/secondary-indexes#storing_clause
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const request = [
'CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) STORING (MarketingBudget)',
];
// Creates a new index in the database
try {
const [operation] = await database.updateSchema(request);
console.log('Waiting for operation to complete...');
function writeUsingDml(instanceId, databaseId, projectId) {
// [START spanner_dml_getting_started_insert]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
database.runTransaction(async (err, transaction) => {
if (err) {
console.error(err);
return;
}
try {
const [rowCount] = await transaction.runUpdate({
sql: `INSERT Singers (SingerId, FirstName, LastName) VALUES
(12, 'Melissa', 'Garcia'),
function readOnlyTransaction(instanceId, databaseId, projectId) {
// [START spanner_read_only_transaction]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
// Gets a transaction object that captures the database state
// at a specific point in time
database.getSnapshot(async (err, transaction) => {
if (err) {
console.error(err);
return;
}
const queryOne = 'SELECT SingerId, AlbumId, AlbumTitle FROM Albums';
// ALTER TABLE Albums ADD COLUMN
// LastUpdateTime TIMESTAMP OPTIONS (allow_commit_timestamp=true)
// [END_EXCLUDE]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
// Update a row in the Albums table
// Note: Cloud Spanner interprets Node.js numbers as FLOAT64s, so they
// must be converted to strings before being inserted as INT64s
const albumsTable = database.table('Albums');
const data = [
{
SingerId: '1',
AlbumId: '1',
) {
// [START spanner_query_data_with_index]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// const startTitle = 'Ardvark';
// const endTitle = 'Goo';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const query = {
sql: `SELECT AlbumId, AlbumTitle, MarketingBudget
FROM Albums@{FORCE_INDEX=AlbumsByAlbumTitle}
WHERE AlbumTitle >= @startTitle AND AlbumTitle <= @endTitle`,
params: {
startTitle: startTitle,
endTitle: endTitle,
},
};
// by running the `add_column` sample or by running this DDL statement against
// your database:
// ALTER TABLE Albums ADD COLUMN MarketingBudget INT64
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const query = {
sql: `SELECT SingerId, AlbumId, MarketingBudget FROM Albums`,
};
// Queries rows from the Albums table
try {
const [rows] = await database.run(query);
rows.forEach(async row => {
async function insertData(instanceId, databaseId, projectId) {
// [START spanner_insert_data]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
// Instantiate Spanner table objects
const singersTable = database.table('Singers');
const albumsTable = database.table('Albums');
// Inserts rows into the Singers table
// Note: Cloud Spanner interprets Node.js numbers as FLOAT64s, so
// they must be converted to strings before being inserted as INT64s
try {
await singersTable.insert([
async function createVenuesTable(instanceId, databaseId, projectId) {
// [START spanner_create_table_with_datatypes]
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance.
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const request = [
`CREATE TABLE Venues (
VenueId INT64 NOT NULL,
VenueName STRING(100),
VenueInfo BYTES(MAX),
Capacity INT64,
AvailableDates ARRAY,
LastContactDate Date,
OutdoorVenue BOOL,