UNPKG

sqljs-documentstore

Version:

Minimal, encrypted, sql friendly typed document store, with support for indexed columns. Protects against transactional conflicts

24 lines (23 loc) 1.52 kB
import { ILockedDatabase } from "./LockedDatabase"; export declare abstract class Db { private database; constructor(database: () => ILockedDatabase); txn(description: string, actions: (txnId: string) => void): void; txnAsync(description: string, actions: (txnId: string) => Promise<void>): Promise<void>; initted: boolean; init(): void; /** * Used to query from console, or for advanced querying scenarios in code * @example //from console * console.table(await window.db.query('select * from FieldDefinitionData f join CalculatedFieldDefinitionData c on f.id = c.fieldId;')); * @example //from code - advanced query - join tables and union the data types: * await doc.query<FieldDefinitionData & CalculatedFieldDefinitionData, {fJson: string, cJson: string}>( * 'select f.json fJson, c.json cJson from FieldDefinitionData f join CalculatedFieldDefinitionData c on f.id = c.fieldId', * undefined, row => _.merge(<FieldDefinitionData>JSON.parse(row.fJson), <CalculatedFieldDefinitionData>JSON.parse(row.cJson))); * @example //from code - less type checking: * <(FieldDefinitionData & CalculatedFieldDefinitionData)[]> await doc.query( * 'select f.json fJson, c.json cJson from FieldDefinitionData f join CalculatedFieldDefinitionData c on f.id = c.fieldId', * undefined, row => _.merge(JSON.parse(row.fJson), JSON.parse(row.cJson))); */ query<T = unknown, TRow = T>(sql: string, params?: unknown[], projection?: (row: TRow) => T): T[]; }