@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
TypeScript
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;
}