class

Supabase::Client

Inherits Supabase::ClientBuilder < Reference < Object

Constructors

new(url : String, api_key : String)

Creates a new Supabase client

Raises ArgumentError if url or api_key is empty.

Source

Instance methods

api_key
Source
api_key=(api_key : String)
Source
delete(query : Query) : String

Executes a DELETE query

Returns response body as String Raises error if request fails.

Example:

response = client
  .from("users")
  .eq("id", "1")
  .delete

Bulk delete
response = client
  .from("users")
  .in_("id", [1, 2])
  .delete()
  .execute
puts response
Source
from(table : String) : Query

Initializes a query for the given table

Raises ArgumentError if table name is empty

query = client.from("users")
Source
headers
Source
insert(query : Query, payload : String) : String

Executes an INSERT query with the given JSON payload

Returns response body as String Raises error if request fails Raises error if payload is empty

Example:

payload = %({"name": "Alice", "age": 30})
response = client
  .from("users")
  .insert(payload)
  .execute
puts response

Bulk insert
payload = %([
  {"id": 1, "name": "Bob"},
  {"id": 2, "name": "Charlie"}
])
response = client
  .from("users")
  .insert(payload)
  .execute
puts response
Source
rpc(rpc : String) : String

Execute a RPC request Argument rpc - name of supabase function

Returns response body as String Raises error if request fails Raises error if argument is empty

response = client.rpc("hello_world") puts response

Source
select(query : Query) : String

Executes a SELECT query

Returns response body as String Raises error if request fails

Example:

response = client
  .from("users")
  .select("*")
  .eq("active", "true")
  .execute
puts response
Source
update(query : Query, payload : String) : String

Executes an UPDATE query with the given JSON payload

Returns response body as String Raises error if request fails Raises error if payload argument is empty

Example:

payload = %({"name": "Charlie"})
response = client
  .from("users")
  .eq("id", "1")
  .update(payload)
  .execute
puts response
Source
upsert(query : Query, payload : String, on_conflict : Array(String)) : String

Executes an UPSERT query with conflict resolution on specified columns

Returns response body as String Raises error if request fails Raises error if arguments is empty Raises error if on_conflict has dupblicetes

Example:

payload = %({"id": 1, "name": "Bob"})
response = client
  .from("users")
  .upsert(payload, ["id"])
  .execute
puts response

Bulk upsert
payload = %([
  {"id": 1, "name": "Bob"},
  {"id": 2, "name": "Charlie"}
])
response = client
  .from("users")
  .upsert(payload, ["id"])
  .execute
puts response
Source
url=(url : String)
Source