Skip to content

Operation

Operation<TResult> = object

Defined in: packages/db/src/types.ts:27

A lazy, permission-aware database operation.

Every method on Db returns an Operation instead of a promise. The operation exposes its permission requirements via .permissions for inspection and executes with full permission checking via .run(). This two-phase design enables UI adaptation, upfront composition via compose, and introspection before any SQL is executed.

const op = db.query(posts).findMany();
// Inspect permissions without executing
console.log(op.permissions);
// => [{ action: "read", table: "posts" }]
// Execute with permission checks
const rows = await op.run({});

TResult

The type of the result returned by .run().

permissions: PermissionDescriptor[]

Defined in: packages/db/src/types.ts:29

Structural permission requirements. Available immediately without execution.


run: (params?) => Promise<TResult>

Defined in: packages/db/src/types.ts:36

Checks permissions, applies permission WHERE clauses, executes the query via Drizzle, and returns the result. Throws ForbiddenError if the user’s role lacks a required grant.

Record<string, unknown>

Placeholder values for sql.placeholder() calls. Pass {} when no placeholders are used.

Promise<TResult>