UNPKG

flint-orm

Version:

Type-safe SQLite ORM for JavaScript

51 lines (50 loc) 3.11 kB
import type { Database, DatabaseOpts } from '@tursodatabase/sync'; import type { Executor } from '../executor'; /** Async executor backed by @tursodatabase/sync. */ export declare class TursoSyncExecutor implements Executor { #private; constructor(db: Database); all(sql: string, params: unknown[]): Promise<unknown[]>; get(sql: string, params: unknown[]): Promise<unknown>; run(sql: string, params: unknown[]): Promise<{ rowsAffected: number; }>; transaction(fn: () => void | Promise<void>): Promise<void>; close(): void; } export interface TursoSyncOptions extends Omit<DatabaseOpts, 'path' | 'url' | 'authToken'> { /** Local path for the synced database files (maps to `path` in `@tursodatabase/sync`). */ url: string; /** Remote Turso database URL (maps to `url` in `@tursodatabase/sync`). */ syncUrl?: string; /** Auth token for the remote database. */ authToken?: DatabaseOpts['authToken']; } /** * Create a flint database client using @tursodatabase/sync. * * Connection is established lazily on first query. * * @example * import { flint } from 'flint-orm/turso-sync' * const db = flint({ url: './local.db', syncUrl: 'libsql://db.turso.io', authToken: '...' }) */ export declare function flint(options: TursoSyncOptions): { selectFrom: <T extends import("..").AnyTable>(table: T) => import("..").SelectBuilder<T>; insert: <T extends import("..").AnyTable>(table: T) => import("..").InsertStage1<T>; update: <T extends import("..").AnyTable>(table: T) => import("..").UpdateStage1<T>; delete: <T extends import("..").AnyTable>(table: T) => import("../query/builder").DeleteBuilder<T, false, keyof import("..").InferRow<T>>; leftJoin: <Parent extends import("..").AnyTable>(parent: Parent) => import("../flint").JoinSelectStage1<Parent>; innerJoin: <Parent extends import("..").AnyTable>(parent: Parent) => import("../flint").JoinSelectStage1<Parent>; batch: (queries: import("..").Executable[]) => Promise<void>; count: <T extends import("..").AnyTable>(table: T, condition?: import("..").Condition) => Promise<number>; countColumn: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number>; sum: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>; avg: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>; min: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>; max: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>; $run(query: string, ...params: unknown[]): Promise<{ rowsAffected: number; }>; $executor: Executor; };