Class: Cloudflare::D1::Client

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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 = 
  @api_token = api_token
end

Instance Attribute Details

#account_idObject (readonly)

Returns the value of attribute account_id.



14
15
16
# File 'lib/cloudflare/d1/client.rb', line 14

def 
  @account_id
end

#api_tokenObject (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

Parameters:

  • name (String)

    Name for the new database

Returns:

  • (Hash)

    Created database object



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/#{}/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

Parameters:

  • database_id (String)

    The UUID of the D1 database

Returns:

  • (Boolean)

    Success status



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/#{}/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

Parameters:

  • database_id (String)

    The UUID of the D1 database

Returns:

  • (Hash)

    Database object



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/#{}/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_databasesArray<Hash>

List all databases in the account

Returns:

  • (Array<Hash>)

    Array of database objects



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/#{}/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

Parameters:

  • database_id (String)

    The UUID of the D1 database

  • sql (String)

    SQL query to execute

  • params (Array) (defaults to: [])

    Optional parameters for parameterized queries

Returns:

  • (Hash)

    Response with results, meta, and success fields



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/#{}/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)

Parameters:

  • database_id (String)

    The UUID of the D1 database

  • sql (String)

    SQL query to execute

  • params (Array) (defaults to: [])

    Optional parameters for parameterized queries

Returns:

  • (Hash)

    Response with results as arrays



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/#{}/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