UNPKG

@dossierhq/database-adapter

Version:

A library for adapting Dossier to a database, such as SQLite or PostgreSQL.

38 lines (37 loc) 1.69 kB
export declare const DEFAULT: unique symbol; declare const ValueReferenceSymbol: unique symbol; declare const RawSqlSymbol: unique symbol; interface ValueReference { marker: typeof ValueReferenceSymbol; index: number; } interface RawSql { marker: typeof RawSqlSymbol; sql: string; } type InputValue<TValue> = TValue | typeof DEFAULT | ValueReference | RawSql; type SqlTemplateTag<TValue> = (strings: TemplateStringsArray, ...args: InputValue<TValue>[]) => void; interface Query<TValue> { text: string; values: TValue[]; } interface SqlQueryBuilder<TValue> { sql: SqlTemplateTag<TValue>; query: Query<TValue>; addValue: (value: TValue) => ValueReference; removeTrailingWhere: () => void; } type SqlQueryBuilderCallback<TValue> = (builder: Omit<SqlQueryBuilder<TValue>, 'query'>) => void; export type PostgresQueryBuilder = SqlQueryBuilder<unknown>; export type PostgresSqlTemplateTag = SqlTemplateTag<unknown>; export declare function createPostgresSqlQuery(): PostgresQueryBuilder; export declare function buildPostgresSqlQuery(callback: SqlQueryBuilderCallback<unknown>): Query<unknown>; type SqliteColumnValue = number | string | Uint8Array | null; export type SqliteSqlTemplateTag = SqlTemplateTag<SqliteColumnValue>; export interface SqliteQueryBuilder extends SqlQueryBuilder<SqliteColumnValue> { addValueList: (values: readonly SqliteColumnValue[]) => RawSql; } type SqliteQueryBuilderCallback = (builder: Omit<SqliteQueryBuilder, 'query'>) => void; export declare function createSqliteSqlQuery(): SqliteQueryBuilder; export declare function buildSqliteSqlQuery(callback: SqliteQueryBuilderCallback): Query<SqliteColumnValue>; export {};