fewer
Version:
A minimal ORM for Node.js.
36 lines (35 loc) • 1.51 kB
TypeScript
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<{}>;