Supabase Crystal Client
Crystal client for Supabase REST API supporting basic CRUD operations with query building.
🔨 Installation
-
Add the dependency to your
shard.yml
:dependencies: crystal-supabase: github: Skrebnevf/crystal-supabase
-
Run
shards install
🖥️ Usage
require "crystal-supabase"
Select
response = client
.from("users")
.select("*")
.eq("active", "true")
.execute()
puts response
Insert
payload = %({"name": "Alice", "age": 30})
response = client
.from("users")
.insert(payload)
.execute()
puts response
Update
payload = %({"name": "Charlie"})
response = client
.from("users")
.eq("id", "1")
.update(payload)
.execute()
puts response
Upsert
payload = %({"id": 1, "name": "Bob"})
response = client
.from("users")
.upsert(payload, ["id"])
.execute()
puts response
Delete
response = client
.from("users")
.eq("id", "1")
.delete()
.execute()
puts response
Query Filters Examples
response = client
.from("products")
.select("id,name,price")
.gt("price", "100")
.lt("price", "500")
.like("name", "%book%")
.order_desc("price")
.limit(10)
.execute()
puts response
RPC
response = client.rpc("hello_world")
puts response
✔️ TODO
- [x] Add basic CRUD
- [x] Add filters
- [x] Implement bulk for multiple rows
- [x] Add call of Postgres functions
- [ ] Add modifiers
🤝 Contributing
- Fork it (https://github.com/Skrebnevf/crystal-supabase/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
🏠 Contributors
- f.skrebnev - creator and maintainer
- @hope_you_die - TG