UNPKG

@jadejr/kysely-pglite

Version:

Kysely dialect for @electric-sql/pglite (temporary fork https://github.com/dnlsandiego/kysely-pglite)

41 lines (40 loc) 1.5 kB
import type { PGliteWithLive } from '@electric-sql/pglite/live'; import { Repeater } from '@repeaterjs/repeater'; import type { ReferenceExpression } from 'kysely'; import { type SelectQueryBuilder } from 'kysely'; import type { Change } from './types.js'; /** * Wrapper for PGlite's Live Queries extension * @example * const pglive = new KyselyLive(pglite) * const query = db * .selectFrom('sales') * .select(['id', 'price']) * .orderBy((eb) => eb.fn('rand')) * const liveQuery = pglive.query(query) * * for await (const data of liveQuery.subscribe) { * const [sale] = data * console.log(sale.id, sale.price) } */ export declare class KyselyLive { private live; constructor(pglite: PGliteWithLive); query<DB, TB extends keyof DB, O>(builder: SelectQueryBuilder<DB, TB, O>): { subscribe: Repeater<O[], any, unknown>; refresh: () => Promise<void>; unsubscribe: () => Promise<void>; }; changes<DB, TB extends keyof DB, O>(builder: SelectQueryBuilder<DB, TB, O>, ref: ReferenceExpression<DB, TB>): { subscribe: Repeater<Change<O>[], any, unknown>; refresh: () => Promise<void>; unsubscribe: () => Promise<void>; }; incrementalQuery<DB, TB extends keyof DB, O>(builder: SelectQueryBuilder<DB, TB, O>, ref: ReferenceExpression<DB, TB>): { subscribe: Repeater<O[], any, unknown>; refresh: () => Promise<void>; unsubscribe: () => Promise<void>; }; private createLiveRepeater; }