diff --git a/src/services/BaseEntityService.ts b/src/services/BaseEntityService.ts index 235f249..ede6d18 100644 --- a/src/services/BaseEntityService.ts +++ b/src/services/BaseEntityService.ts @@ -223,10 +223,35 @@ export interface IPagedListParams extends IListParams { count?: boolean; } +export interface IColumn { + name?: string; + type?: string; + generated?: string; + default?: any; +} + +export interface IRelation { + name?: string; + fkName?: string; + relatedName?: string; + isCollection?: boolean; + isInverse?: boolean; + + relatedModel?: IModel; +} + +export interface IModelSchema { + name: string; + keys: IColumn[]; + properties: IColumn[]; + relations: IRelation[]; +} + export interface IModel { name: string; create?(properties?: IClrEntityLike): T; patch?(original: IClrEntityLike, updates: IClrEntityLike): T; + schema: IModelSchema; } export class DefaultFactory { @@ -238,7 +263,8 @@ export class Model implements IModel { constructor( public name: string, public readonly keys: string[] = [], - defaults: any = null + defaults: any = null, + public schema = null as IModelSchema ) { if (defaults) { this.defaults = [];