class
Supabase::Query
- Supabase::Query
- Reference
- Object
Defined in:
crystal-supabase/query.crConstructors
Instance Method Summary
- #conditions : Array(String)
-
#delete
Executes a DELETE query
-
#eq(column : String, value : String)
Adds equality filter: column = value
-
#execute : String
Executes the current query on Supabase based on the operation type: SELECT, INSERT, UPDATE, UPSERT, or DELETE.
-
#gt(column : String, value : String)
Adds greater than filter: column > value
-
#gte(column : String, value : String)
Adds greater than or equal filter: column >= value
-
#ilike(column : String, pattern : String)
Adds ILIKE filter (case-insensitive LIKE)
-
#in_(column : String, values : Array(String | Int))
Adds
IN
filter: column IN (values) -
#insert(payload : String)
Executes an INSERT query with the given JSON payload
-
#is_null(column : String, is_null : Bool = true)
Adds IS NULL or IS NOT NULL filter
-
#like(column : String, pattern : String)
response = client .from("products") .select("*") .lte("price", "500") .execute puts response
-
#limit(count : Int32)
Limits number of returned rows
-
#lt(column : String, value : String)
Adds less than filter: column < value
-
#lte(column : String, value : String)
Adds less than or equal filter: column <= value
-
#neq(column : String, value : String)
Adds inequality filter: column != value
-
#not(column : String, operator : String, value : String)
Adds NOT operator for custom filters
-
#offset(count : Int32)
Skips number of rows (offset)
-
#order_asc(column : String)
Sorts by column ascending
-
#order_desc(column : String)
Sorts by column descending
-
#select(fields : String)
Executes a SELECT query
- #select_fields : String
- #table : String
-
#update(payload : String)
Executes an UPDATE query with the given JSON payload
-
#upsert(payload : String, on_conflict : Array(String))
Executes an UPSERT query with conflict resolution on specified columns
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
Adds equality filter: column = value
response = client
.from("users")
.select("*")
.eq("role", "admin")
.execute
puts response
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.
Adds greater than filter: column > value
response = client
.from("users")
.select("*")
.gt("age", "18")
.execute
puts response
Adds greater than or equal filter: column >= value
response = client
.from("users")
.select("*")
.gte("score", "70")
.execute
puts response
Adds ILIKE filter (case-insensitive LIKE)
response = client
.from("articles")
.select("*")
.ilike("title", "%crystal%")
.execute
puts response
Adds IN
filter: column IN (values)
response = client
.from("orders")
.select("*")
.in_("status", ["pending", "shipped"])
.execute
puts response
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
Adds IS NULL or IS NOT NULL filter
response = client
.from("profiles")
.select("*")
.is_null("bio", true)
.execute()
puts response
response = client
.from("products")
.select("*")
.lte("price", "500")
.execute
puts response
Limits number of returned rows
response = client
.from("logs")
.select("*")
.limit(10)
.execute
puts response
Adds less than filter: column < value
response = client
.from("products")
.select("*")
.lt("price", "100")
.execute
puts response
Adds less than or equal filter: column <= value
response = client
.from("products")
.select("*")
.lte("price", "500")
.execute
puts response
Adds inequality filter: column != value
response = client
.from("users")
.select("*")
.neq("status", "inactive")
.execute
puts response
Adds NOT operator for custom filters
response = client
.from("users")
.select("*")
.not("email", "like", "%@test.com")
.execute
puts response
Skips number of rows (offset)
response = client
.from("logs")
.select("*")
.offset(20)
.limit(10)
.execute
puts response
Sorts by column ascending
response = client
.from("tasks")
.select("*")
.order_asc("created_at")
.execute
puts response
Sorts by column descending
response = client
.from("tasks")
.select("*")
.order_desc("created_at")
.execute
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.
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.
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