import { DCSerializableClassGetter } from "./DCSerializable"; export interface IDCSchema { [table: string]: IDCTableDef; } export interface IDCTableDef { name: string; label1: string; labelMany: string; columns: IDCColDefs; foreignColumns: IDCFcDefs; referenceColumns: IDCRefDefs; btmColumns: IDCBtmDefs; } export declare enum ColumnTypes { string = "string", text = "text", int = "int", number = "number", boolean = "boolean", foreignColumn = "foreignColumn", date = "date" } export declare type ColumnTypeExtended = ColumnTypes | string; export interface IDCColumnDef { property: string; type: ColumnTypeExtended; optional: boolean; label: string; defaultValue?: any; [extendedOption: string]: any; } export interface IDCColDefs { [prop: string]: IDCColumnDef; } export interface IDCReferenceColumnDef { property: string; label: string; referencedTable: string; referencedProperty: string; } export interface IDCUnresolvedReferenceColumnDef { property: string; label: string; referencedTable: string | DCSerializableClassGetter; referencedProperty: string; } export interface IDCRefDefs { [prop: string]: IDCReferenceColumnDef; } export interface IDCUnresolvedRefDefs { [prop: string]: IDCUnresolvedReferenceColumnDef; } export interface IDCForeignColumnDef { property: string; idProperty: string; label: string; foreignTable: string; optional: boolean; referencing: IDCReferenceColumnDef[]; btmThisReferencing: IDCBelongsToManyDef[]; btmTargetReferencing: IDCBelongsToManyDef[]; } export interface IDCUnresolvedForeignColumnDef { property: string; label: string; idProperty: string; foreignTable: string | DCSerializableClassGetter; optional: boolean; } export interface IDCFcDefs { [prop: string]: IDCForeignColumnDef; } export interface IDCUnresolvedFcDefs { [prop: string]: IDCUnresolvedForeignColumnDef; } export interface IDCBelongsToManyDef { property: string; label: string; targetTable: string; throughTable: string; thisProperty: string; targetProperty: string; } export interface IDCUnresolvedBelongsToManyDef { property: string; label: string; targetTable: string | DCSerializableClassGetter; throughTable: string | DCSerializableClassGetter; thisProperty: string; targetProperty: string; } export interface IDCBtmDefs { [prop: string]: IDCBelongsToManyDef; } export interface IDCUnresolvedBtmDefs { [prop: string]: IDCUnresolvedBelongsToManyDef; }