class
Supabase::Client
- Supabase::Client
- Supabase::ClientBuilder
- Reference
- Object
Defined in:
crystal-supabase/client.crConstructors
-
.new(url : String, api_key : String)
Creates a new Supabase client
Instance Method Summary
- #api_key : String
- #api_key=(api_key : String)
-
#delete(query : Query) : String
Executes a DELETE query
-
#from(table : String) : Query
Initializes a query for the given table
- #headers : HTTP::Headers
-
#insert(query : Query, payload : String) : String
Executes an INSERT query with the given JSON payload
-
#rpc(rpc : String) : String
Execute a RPC request Argument rpc - name of supabase function
-
#select(query : Query) : String
Executes a SELECT query
-
#update(query : Query, payload : String) : String
Executes an UPDATE query with the given JSON payload
-
#upsert(query : Query, payload : String, on_conflict : Array(String)) : String
Executes an UPSERT query with conflict resolution on specified columns
- #url : String
- #url=(url : String)
Constructor Detail
Instance Method Detail
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
Initializes a query for the given table
Raises ArgumentError
if table name is empty
query = client.from("users")
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
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
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
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
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