// import { FieldTypeToParamEnumFunc } from "le-querybuilder-aurora-mysql-data-api"; import { EntityFieldType, EntitySchema } from "./entity-schema"; export interface EntityColumn { name: string; type: EntityFieldType; } export function newColDefinition(schema: T): { readonly[P in keyof T["column"]]: EntityColumn; } { const entity: any = { }; for (const [key, value] of Object.entries(schema.column)) { entity[key] = { name: value.columnName ? value.columnName : key, type: value.type, }; } return entity; } type Mutable = { -readonly [P in keyof T ]: T[P] }; export type DynamicType = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : never; export function newEntity(schema: T): Mutable<{ [P in keyof T["column"]]: DynamicType; }> { const entity: any = { }; for (const [key] of Object.entries(schema.column)) { if (schema.column.hasOwnProperty(key)) { entity[key] = undefined; } } return entity; } export function newOverloadEntity; }>(schema: T): K { return newEntity(schema) as K; }