Sample code for 30+ languages & platforms
Lua

Google Cloud SQL - Stop Database Instance

See more Google Cloud SQL Examples

Demonstrates how to stop a Google Cloud SQL database instance.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

-- In this example, Get Google Cloud SQL OAuth2 Access Token,
-- the service account access token was saved to a text file.  This example fetches the access token from the file..
local sbToken = chilkat.StringBuilder.new()
sbToken:load_file("qa_data/tokens/google_cloud_sql_access_token.txt", "utf-8")

local http = chilkat.Http.new()

-- Implements the following CURL command:

-- curl -X PATCH \
-- -H "Authorization: Bearer "$(gcloud auth print-access-token) \
-- -H "Content-Type: application/json; charset=utf-8" \
-- -d '{
--   "settings": {
--     "activationPolicy": "NEVER"
--   }
-- }' \
-- https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

-- Use this online tool to generate code from sample JSON:
-- Generate Code to Create JSON

-- The following JSON is sent in the request body.

-- {
--   "settings": {
--     "activationPolicy": "NEVER"
--   }
-- }

local json = chilkat.JsonObject.new()
json:update_string("settings.activationPolicy", "NEVER")

-- Causes the "Authorization: Bearer "$(gcloud auth print-access-token)" header to be added.
http.auth_token = sbToken:get_as_string()

http:set_request_header("Content-Type", "application/json; charset=utf-8")

local sbRequestBody = chilkat.StringBuilder.new()
json:emit_sb(sbRequestBody)

-- Replace "project-id" with your actual Google project ID.
-- Replace "instance-id" with your database instance ID, which is the name of your database.  (For example, when I created my test database I named it "chilkat", and therefore my instance-id is "chilkat".)
local resp = chilkat.HttpResponse.new()
local success = http:http_sb("PATCH", "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", sbRequestBody, "utf-8", "application/json", resp)
if not success then
    print(http.last_error_text)
    return
end

local sbResponseBody = chilkat.StringBuilder.new()
resp:get_body_sb(sbResponseBody)
local jResp = chilkat.JsonObject.new()
jResp:load_sb(sbResponseBody)
jResp.emit_compact = false

print("Response Body:")
print(jResp:emit())

local respStatusCode = resp.status_code
print("Response Status Code = " .. respStatusCode)
if respStatusCode == 401 then
    print("It may be that your access token expired.")
    print("Try refreshing the access token by re-fetching it.")
end

if respStatusCode >= 400 then
    print("Response Header:")
    print(resp.header)
    print("Failed.")
    return
end

-- Sample JSON response:
-- (Sample code for parsing the JSON response is shown below)

-- {
--   "kind": "sql#operation",
--   "targetLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
--   "status": "PENDING",
--   "user": "user@example.com",
--   "insertTime": "2020-01-20T21:30:35.667Z",
--   "operationType": "UPDATE",
--   "name": "operation-id",
--   "targetId": "instance-id",
--   "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
--   "targetProject": "project-id"
-- }

-- Sample code for parsing the JSON response...
-- Use the following online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON

local kind = jResp:string_of("kind")
local targetLink = jResp:string_of("targetLink")
local status = jResp:string_of("status")
local user = jResp:string_of("user")
local insertTime = jResp:string_of("insertTime")
local operationType = jResp:string_of("operationType")
local name = jResp:string_of("name")
local targetId = jResp:string_of("targetId")
local selfLink = jResp:string_of("selfLink")
local targetProject = jResp:string_of("targetProject")