@azmr/db-supabase
v0.2.0
Published
Async DbAdapter implementation backed by Supabase's PostgREST query builder
Maintainers
Readme
@azmr/db-supabase
Async DbAdapter implementation backed by Supabase's PostgREST query builder — a drop-in cloud counterpart to @azmr/db's SQLiteAdapter, implementing the same DbAdapter interface.
Install
pnpm add @azmr/db-supabase @supabase/supabase-js
# or
npm install @azmr/db-supabase @supabase/supabase-js@supabase/supabase-js is a peer dependency — bring your own client so you keep full control over auth, session, and cookie wiring (e.g. @supabase/ssr's browser vs. server client constructors).
Usage
import { createClient } from "@supabase/supabase-js";
import { SupabaseAdapter } from "@azmr/db-supabase";
const client = createClient(process.env.SUPABASE_URL!, process.env.SUPABASE_KEY!);
const db = new SupabaseAdapter(client);
await db.insert("products", { name: "Widget A", price: 9.99 });
const inStock = await db.findWhere("products", [
{ column: "inStock", operator: "is", value: true },
]);RLS is enforced automatically, based on whatever JWT the SupabaseClient you pass in carries — this package never constructs its own client or bypasses that.
What's different from SQLiteAdapter
- Async throughout. Every method returns a
Promise(PostgREST is a network call; SQLite is not). - No
rawSelect. PostgREST doesn't accept arbitrary SQL — usefindWherewith a structuredFilterinstead. createTablealways throws. PostgREST can't run DDL. Manage your Supabase schema via the SQL editor, CLI migrations, or dashboard — this package is intentionally bring-your-own-schema.- Errors are never swallowed. Every
{data, error}tuple fromsupabase-jsis checked; on failure this throws aDbAdapterErrorcarrying the original Postgres error'scode/details/hint(plus the raw error as.cause) — never a generic stringified message.
Filter shape
type Filter = Array<{
column: string;
operator: "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "like" | "ilike" | "is" | "in";
value: unknown;
}>;Conditions are implicitly AND-combined. No OR support yet.
Requirements
- Node.js ≥ 18
@supabase/supabase-js^2.103.0
Documentation
Full docs at docs.azmara.io
License
MIT © Azmara Labs
