spanner/tagging_samples.rb (51 lines of code) (raw):

# Copyright 2021 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. require_relative "./utils" def request_tagging project_id:, instance_id:, database_id: # [START spanner_set_request_tag] # project_id = "Your Google Cloud project ID" # instance_id = "Your Spanner instance ID" # database_id = "Your Spanner database ID" require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new project: project_id client = spanner.client instance_id, database_id client.execute( "SELECT SingerId, AlbumId, MarketingBudget FROM Albums", request_options: { tag: "app=concert,env=dev,action=select" } ).rows.each do |row| puts "#{row[:SingerId]} #{row[:AlbumId]} #{row[:MarketingBudget]}" end # [END spanner_set_request_tag] end def transaction_tagging project_id:, instance_id:, database_id: # [START spanner_set_transaction_tag] # project_id = "Your Google Cloud project ID" # instance_id = "Your Spanner instance ID" # database_id = "Your Spanner database ID" require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new project: project_id client = spanner.client instance_id, database_id client.transaction request_options: { tag: "app=cart,env=dev" } do |tx| tx.execute_update \ "UPDATE Venues SET Capacity = CAST(Capacity/4 AS INT64) WHERE OutdoorVenue = false", request_options: { tag: "app=concert,env=dev,action=update" } puts "Venue capacities updated." tx.execute_update \ "INSERT INTO Venues (VenueId, VenueName, Capacity, OutdoorVenue) " \ "VALUES (@venue_id, @venue_name, @capacity, @outdoor_venue)", params: { venue_id: 81, venue_name: "Venue 81", capacity: 1440, outdoor_venue: true }, request_options: { tag: "app=concert,env=dev,action=insert" } puts "New venue inserted." end # [END spanner_set_transaction_tag] end def usage puts <<~USAGE Usage: bundle exec ruby tagging_samples.rb [command] [arguments] Commands: request_tagging <instance_id> <database_id> Request tagging. transaction_tagging <instance_id> <database_id> Transaction tagging. Environment variables: GOOGLE_CLOUD_PROJECT must be set to your Google Cloud project ID USAGE end def run_sample arguments commands = ["request_tagging", "transaction_tagging"] command = arguments.shift return usage unless commands.include? command run_command command, arguments, ENV["GOOGLE_CLOUD_PROJECT"] end run_sample ARGV if $PROGRAM_NAME == __FILE__