class Supabase::Client

Defined in:

crystal-supabase/client.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(url : String, api_key : String) #

Creates a new Supabase client

Raises ArgumentError if #url or #api_key is empty.


[View source]

Instance Method Detail

def api_key : String #

[View source]
def api_key=(api_key : String) #

[View source]
def 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

[View source]
def from(table : String) : Query #

Initializes a query for the given table

Raises ArgumentError if table name is empty

query = client.from("users")

[View source]
def headers : HTTP::Headers #

[View source]
def 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

[View source]
def 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


[View source]
def 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

[View source]
def 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

[View source]
def 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

[View source]
def url : String #

[View source]
def url=(url : String) #

[View source]