import { EntityType, IEntity } from "./entity.type"; import { PropertyBase } from "./property-base"; import { Local, Primitive, DateTime, Complex, Instance } from "./locals"; import { Navigation, Children, Collection, Reference } from "./navigations"; export declare type AnyEntityMetadata = EntityMetadata; export declare type EntitySorter = (a: IEntity, b: IEntity) => number; /** * Contains information about properties and other metadata of an entity type. */ export declare class EntityMetadata { readonly entityType: EntityType; readonly name: string; readonly primaryKey: Primitive; readonly sorter: EntitySorter; private _properties; readonly properties: ReadonlyArray; private _locals; private _primitives; private _dates; private _complexes; private _instances; readonly locals: ReadonlyArray; readonly primitives: ReadonlyArray; readonly dates: ReadonlyArray; readonly complexes: ReadonlyArray; readonly instances: ReadonlyArray; private _navigations; private _references; private _children; private _collections; readonly navigations: ReadonlyArray; readonly references: ReadonlyArray; readonly children: ReadonlyArray; readonly collections: ReadonlyArray; constructor(entityType: EntityType, args: EntityMetadata.CtorArgs); /** * Returns a property identified by its name or dtoName or null if not found. */ getProperty(name: string): PropertyBase; /** * Returns a primitive identified by its name or dtoName or null if not found. */ getLocal(name: string): Local; /** * Returns a primitive identified by its name or dtoName or null if not found. */ getPrimitive(name: string): Primitive; /** * Returns a primitive identified by its name or dtoName or null if not found. */ getDate(name: string): DateTime; /** * Returns a primitive identified by its name or dtoName or null if not found. */ getComplex(name: string): Complex; /** * Returns a primitive identified by its name or dtoName or null if not found. */ getInstance(name: string): Instance; /** * Returns a navigation identified by its name or dtoName or null if not found. */ getNavigation(name: string): Navigation; /** * Returns a reference identified by its name or dtoName or null if not found. */ getReference(name: string): Reference; /** * Returns a child collection identified by its name or dtoName or null if not found. */ getChildren(name: string): Children; getBackReference(children: Children): Reference; /** * Returns a reference collection identified by its name or dtoName or null if not found. */ getCollection(name: string): Collection; } export declare module EntityMetadata { interface CtorArgs { name: string; primaryKey: { name: string; args?: Primitive.CtorArgs; }; primitives?: { [name: string]: Primitive.CtorArgs; }; dates?: { [name: string]: DateTime.CtorArgs; }; complexes?: { [name: string]: Complex.CtorArgs; }; instances?: { [name: string]: Instance.CtorArgs; }; references?: { [name: string]: Reference.CtorArgs; }; children?: { [name: string]: Children.CtorArgs; }; collections?: { [name: string]: Collection.CtorArgs; }; sorter?: (a: IEntity, b: IEntity) => number; } }