Class: Cloudflare::D1::Client
- Inherits:
-
Object
- Object
- Cloudflare::D1::Client
- Defined in:
- lib/cloudflare/d1/client.rb
Defined Under Namespace
Classes: APIError
Constant Summary collapse
- BASE_URL =
"https://api.cloudflare.com/client/v4"
Instance Attribute Summary collapse
-
#account_id ⇒ Object
readonly
Returns the value of attribute account_id.
-
#api_token ⇒ Object
readonly
Returns the value of attribute api_token.
Instance Method Summary collapse
-
#create_database(name:) ⇒ Hash
Create a new database.
-
#delete_database(database_id:) ⇒ Boolean
Delete a database.
-
#get_database(database_id:) ⇒ Hash
Get database details.
-
#initialize(account_id:, api_token:) ⇒ Client
constructor
A new instance of Client.
-
#list_databases ⇒ Array<Hash>
List all databases in the account.
-
#query(database_id:, sql:, params: []) ⇒ Hash
Execute a query against a D1 database.
-
#raw_query(database_id:, sql:, params: []) ⇒ Hash
Execute a raw query (returns results as arrays instead of objects).
Constructor Details
#initialize(account_id:, api_token:) ⇒ Client
Returns a new instance of Client.
16 17 18 19 |
# File 'lib/cloudflare/d1/client.rb', line 16 def initialize(account_id:, api_token:) @account_id = account_id @api_token = api_token end |
Instance Attribute Details
#account_id ⇒ Object (readonly)
Returns the value of attribute account_id.
14 15 16 |
# File 'lib/cloudflare/d1/client.rb', line 14 def account_id @account_id end |
#api_token ⇒ Object (readonly)
Returns the value of attribute api_token.
14 15 16 |
# File 'lib/cloudflare/d1/client.rb', line 14 def api_token @api_token end |
Instance Method Details
#create_database(name:) ⇒ Hash
Create a new database
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/cloudflare/d1/client.rb', line 97 def create_database(name:) uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database") request = Net::HTTP::Post.new(uri) request["Authorization"] = "Bearer #{api_token}" request["Content-Type"] = "application/json" request.body = JSON.generate({ name: name }) response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end data = parse_response(response) data["result"] end |
#delete_database(database_id:) ⇒ Boolean
Delete a database
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/cloudflare/d1/client.rb', line 116 def delete_database(database_id:) uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database/#{database_id}") request = Net::HTTP::Delete.new(uri) request["Authorization"] = "Bearer #{api_token}" response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end data = parse_response(response) data["success"] end |
#get_database(database_id:) ⇒ Hash
Get database details
80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/cloudflare/d1/client.rb', line 80 def get_database(database_id:) uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database/#{database_id}") request = Net::HTTP::Get.new(uri) request["Authorization"] = "Bearer #{api_token}" response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end data = parse_response(response) data["result"] end |
#list_databases ⇒ Array<Hash>
List all databases in the account
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/cloudflare/d1/client.rb', line 63 def list_databases uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database") request = Net::HTTP::Get.new(uri) request["Authorization"] = "Bearer #{api_token}" response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end data = parse_response(response) data["result"] || [] end |
#query(database_id:, sql:, params: []) ⇒ Hash
Execute a query against a D1 database
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/cloudflare/d1/client.rb', line 26 def query(database_id:, sql:, params: []) uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database/#{database_id}/query") request = Net::HTTP::Post.new(uri) request["Authorization"] = "Bearer #{api_token}" request["Content-Type"] = "application/json" request.body = JSON.generate({ sql: sql, params: params }) response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end parse_response(response) end |
#raw_query(database_id:, sql:, params: []) ⇒ Hash
Execute a raw query (returns results as arrays instead of objects)
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cloudflare/d1/client.rb', line 46 def raw_query(database_id:, sql:, params: []) uri = URI("#{BASE_URL}/accounts/#{account_id}/d1/database/#{database_id}/raw") request = Net::HTTP::Post.new(uri) request["Authorization"] = "Bearer #{api_token}" request["Content-Type"] = "application/json" request.body = JSON.generate({ sql: sql, params: params }) response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end parse_response(response) end |