UNPKG

spreadsheet-orm

Version:

ORM for Google Spreadsheet - Query Builder and Schema Management for spreadsheet database

23 lines 1.51 kB
import { DataTypes, FieldType, NotColumnedFieldType } from "./abstracts/BaseFieldBuilder"; import { BoooleanFieldBuilder, DateFieldBuilder, NumberFieldBuilder, ReferenceFieldBuilder, StringFieldBuilder } from "./implements/fieldBuilders"; import Schema from "./implements/Schema"; export default function defineTable<Name extends string, T extends NotColumnedFieldsType>(sheetName: Name, builder: ((field: FieldBuilder) => T) | T, columnOrder?: (keyof T)[]): Schema<Name, FieldsType>; export interface FieldBuilder { boolean(): BoooleanFieldBuilder; date(): DateFieldBuilder; number(): NumberFieldBuilder; string(): StringFieldBuilder; reference<T extends FieldsType, Key extends keyof T>(schema: Schema<string, T>, field: Key): ReferenceFieldBuilder<T, Key, T[Key]['dataType']>; } export declare const fieldBuilder: FieldBuilder; export type NotColumnedFieldsType = Record<string, NotColumnedFieldType<DataTypes>>; export type FieldsType = Record<string, FieldType<DataTypes>>; export type ColumnizeFields<T extends NotColumnedFieldsType> = { [K in keyof T]: FieldType<T[K]['dataType']>; }; type InferFieldType<T> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'date' ? Date : never; export type InferTableType<T extends FieldsType> = { [K in keyof T]: T[K]['optional'] extends true ? InferFieldType<T[K]['dataType']> | undefined : InferFieldType<T[K]['dataType']>; }; export {}; //# sourceMappingURL=defineTable.d.ts.map