UNPKG

fewer

Version:

A minimal ORM for Node.js.

91 lines (90 loc) 3.85 kB
import { Select, Insert, Update } from '@fewer/sq'; import { Migration } from '../Migration'; import ColumnType from '../ColumnType'; interface BaseColumnTypes { [columnName: string]: (...args: any[]) => ColumnType | { [key: string]: ColumnType; }; } interface BaseTableTypes { primaryKey: string; } export interface AdapterConfiguration<ColumnTypes extends BaseColumnTypes = any, Configuration = any, DBInstance = any> { columnTypes: ColumnTypes; connect(config: Configuration): Promise<DBInstance>; disconnect(db: DBInstance): Promise<void>; select(db: DBInstance, selectContext: Select['context']): Promise<any[]>; insert(db: DBInstance, selectContext: Insert['context']): Promise<any>; update(db: DBInstance, selectContext: Update['context']): Promise<any>; migrate(db: DBInstance, direction: 'up' | 'down', migration: Migration): Promise<any>; migrateAddVersion(db: DBInstance, version: string): Promise<void>; migrateRemoveVersion(db: DBInstance, version: string): Promise<void>; migrateGetVersions(db: DBInstance): Promise<string[]>; migrateHasVersion(db: DBInstance, version: string): Promise<boolean>; getInfos?(db: DBInstance): Promise<{ [key: string]: { columns: { [key: string]: { method: string; arguments: any[]; }; }; }; }>; } export declare class Adapter<TableTypes = any, ColumnTypes = any, DBConfiguration = any, DBInstance = any> { TableTypes: TableTypes; ColumnTypes: ColumnTypes; connected: boolean; connection: Promise<DBInstance> | null; client: DBInstance | null; config: DBConfiguration; impl: AdapterConfiguration; constructor(config: DBConfiguration, impl: AdapterConfiguration); connect(): Promise<void>; disconnect(): Promise<void>; select(query: Select): Promise<any[]>; /** * Inserts a new record into the database. Returns the id of the newly-inserted item. */ insert(query: Insert): Promise<any>; /** * Updates a record in the database. Returns the id of the updated item. */ update(query: Update): Promise<any>; migrate(direction: 'up' | 'down', migration: Migration): Promise<any>; migrateAddVersion(version: string): Promise<void>; migrateRemoveVersion(version: string): Promise<void>; migrateGetVersions(): Promise<string[]>; migrateHasVersion(version: string): Promise<boolean>; getInfos(): Promise<any>; } export declare function createAdapter<TableTypes extends BaseTableTypes, ColumnTypes extends BaseColumnTypes, DBConfiguration, DBInstance>(impl: AdapterConfiguration<ColumnTypes, DBConfiguration, DBInstance>): { new (config: DBConfiguration): { TableTypes: TableTypes; ColumnTypes: ColumnTypes; connected: boolean; connection: Promise<DBInstance> | null; client: DBInstance | null; config: DBConfiguration; impl: AdapterConfiguration<any, any, any>; connect(): Promise<void>; disconnect(): Promise<void>; select(query: Select): Promise<any[]>; /** * Inserts a new record into the database. Returns the id of the newly-inserted item. */ insert(query: Insert): Promise<any>; /** * Updates a record in the database. Returns the id of the updated item. */ update(query: Update): Promise<any>; migrate(direction: "up" | "down", migration: Migration<any>): Promise<any>; migrateAddVersion(version: string): Promise<void>; migrateRemoveVersion(version: string): Promise<void>; migrateGetVersions(): Promise<string[]>; migrateHasVersion(version: string): Promise<boolean>; getInfos(): Promise<any>; }; }; export {};