spreadsheet-orm
Version:
ORM for Google Spreadsheet - Query Builder and Schema Management for spreadsheet database
23 lines • 1.51 kB
TypeScript
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