class

Supabase::Query

Inherits Reference < Object

Constructors

new(client : Client, table : String)
Source

Instance methods

conditions
Source
delete

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
eq(column : String, value : String)

Adds equality filter: column = value

response = client
  .from("users")
  .select("*")
  .eq("role", "admin")
  .execute
puts response
Source
execute

Executes the current query on Supabase based on the operation type: SELECT, INSERT, UPDATE, UPSERT, or DELETE.

Returns the response body as a String. Raises an error if the request fails.

Source
gt(column : String, value : String)

Adds greater than filter: column > value

response = client
  .from("users")
  .select("*")
  .gt("age", "18")
  .execute
puts response
Source
gte(column : String, value : String)

Adds greater than or equal filter: column >= value

response = client
  .from("users")
  .select("*")
  .gte("score", "70")
  .execute
puts response
Source
ilike(column : String, pattern : String)

Adds ILIKE filter (case-insensitive LIKE)

response = client
  .from("articles")
  .select("*")
  .ilike("title", "%crystal%")
  .execute
puts response
Source
in_(column : String, values : Array(String | Int))

Adds IN filter: column IN (values)

response = client
  .from("orders")
  .select("*")
  .in_("status", ["pending", "shipped"])
  .execute
puts response
Source
insert(payload : String)

Executes an INSERT query with the given JSON payload

Returns response body as String Raises error if request fails.

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
is_null(column : String, is_null : Bool = true)

Adds IS NULL or IS NOT NULL filter

response = client
  .from("profiles")
  .select("*")
  .is_null("bio", true)
  .execute()
puts response
Source
like(column : String, pattern : String)
response = client
  .from("products")
  .select("*")
  .lte("price", "500")
  .execute
puts response
Source
limit(count : Int32)

Limits number of returned rows

response = client
  .from("logs")
  .select("*")
  .limit(10)
  .execute
puts response
Source
lt(column : String, value : String)

Adds less than filter: column < value

response = client
  .from("products")
  .select("*")
  .lt("price", "100")
  .execute
puts response
Source
lte(column : String, value : String)

Adds less than or equal filter: column <= value

response = client
  .from("products")
  .select("*")
  .lte("price", "500")
  .execute
puts response
Source
neq(column : String, value : String)

Adds inequality filter: column != value

response = client
  .from("users")
  .select("*")
  .neq("status", "inactive")
  .execute
puts response
Source
not(column : String, operator : String, value : String)

Adds NOT operator for custom filters

response = client
  .from("users")
  .select("*")
  .not("email", "like", "%@test.com")
  .execute
puts response
Source
offset(count : Int32)

Skips number of rows (offset)

response = client
  .from("logs")
  .select("*")
  .offset(20)
  .limit(10)
  .execute
puts response
Source
order_asc(column : String)

Sorts by column ascending

response = client
  .from("tasks")
  .select("*")
  .order_asc("created_at")
  .execute
puts response
Source
order_desc(column : String)

Sorts by column descending

response = client
  .from("tasks")
  .select("*")
  .order_desc("created_at")
  .execute
puts response
Source
select(fields : 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
select_fields
Source
table
Source
update(payload : String)

Executes an UPDATE query with the given JSON payload

Returns response body as String Raises error if request fails.

Example:

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

Executes an UPSERT query with conflict resolution on specified columns

Returns response body as String Raises error if request fails.

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

Nested types