import { ColName, TableName } from "./Types"; export class Table { public readonly tableName: TableName; public readonly tableCols: ColInfo[]; protected dummy: [Table, Req, Def]; } export interface ColInfo { name: ColName; propName: string; parser: (val: string) => any; } export declare type TableDeclareCols = { [P in keyof T]: [string, (val: string) => T[P]]; }; export function declareTable(tableName: string, columns: TableDeclareCols): Table { const keys = Object.keys(columns); keys.sort(); const tableCols: ColInfo[] = []; for (const key of keys) { tableCols.push({ propName: key, name: ColName.wrap((columns)[key][0]), parser: (columns)[key][1] }); } return { tableName: TableName.wrap(tableName), tableCols: tableCols }; }