UNPKG

fewer

Version:

A minimal ORM for Node.js.

36 lines (35 loc) 1.51 kB
import { WithUndefinedPropertiesAsOptionals } from './typeHelpers'; import { INTERNAL_TYPES } from '../types'; import { Database } from '../Database'; import { Adapter } from '../Adapter'; import ColumnType from '../ColumnType'; interface TableProperties { [key: string]: ColumnType; } declare type BuiltTable<T extends TableProperties> = { [P in keyof T]: T[P][INTERNAL_TYPES.INTERNAL_TYPE]; }; export declare class SchemaTable<DBAdapter extends Adapter = any, T = any> { readonly [INTERNAL_TYPES.INTERNAL_TYPE]: T; database: Database<DBAdapter>; name: string; config: DBAdapter['TableTypes']; primaryKey: keyof T; constructor(database: Database<DBAdapter>, name: string, config: DBAdapter['TableTypes'], builder: (t: DBAdapter['ColumnTypes']) => TableProperties); } export declare class Schema<RegisteredTables = {}> { version: number | undefined; tables: RegisteredTables; constructor(version?: number, tables?: RegisteredTables); /** * TODO: Documentation. */ table<DBAdapter extends Adapter, TableName extends string, Built extends TableProperties>(database: Database<DBAdapter>, name: TableName, config: DBAdapter['TableTypes'], builder: (t: DBAdapter['ColumnTypes']) => Built): Schema<RegisteredTables & { [P in TableName]: SchemaTable<DBAdapter, WithUndefinedPropertiesAsOptionals<BuiltTable<Built>>>; }>; } export { ColumnType }; /** * TODO: Documentation. */ export declare function createSchema(version?: number): Schema<{}>;