UNPKG

hydrate-mongodb

Version:
132 lines (131 loc) 3.96 kB
import { Index } from "./index"; import { CollectionOptions } from "./collectionOptions"; import { IdentityGenerator } from "../config/configuration"; export declare namespace MappingModel { interface Mapping { flags: MappingFlags; hasFlags(flags: MappingFlags): boolean; } interface EnumMembers { [name: string]: number; } interface Property { name: string; flags: PropertyFlags; nullable?: boolean; field: string; inverseOf: string; mapping: Mapping; setFlags(flags: PropertyFlags): void; } const enum MappingFlags { Array = 1, Boolean = 2, Class = 4, Date = 8, Enum = 16, Number = 32, Object = 64, RegExp = 128, String = 256, Tuple = 512, Entity = 1024, Embeddable = 2048, InheritanceRoot = 4096, Converter = 8192, Buffer = 16384, Iterable = 32768, Virtual = 65536, Immutable = 131072, ImmutableEmbeddable = 133120, } const enum PropertyFlags { None = 0, Ignored = 1, CascadeSave = 2, CascadeRemove = 4, CascadeDetach = 8, CascadeRefresh = 16, CascadeMerge = 32, CascadeAll = 62, InverseSide = 64, OrphanRemoval = 256, WriteOnly = 512, FetchEager = 1024, FetchLazy = 2048, Parent = 4096, All = 8063, WalkEntities = 8192, Dereference = 16384, } interface ObjectMapping extends Mapping { addProperty(property: Property): void; getProperty(name: string): Property; validateProperty(property: Property): string; } interface ClassMapping extends ObjectMapping { name: string; discriminatorField: string; discriminatorValue: string; classConstructor: Function; hasSubClasses: boolean; hasBaseClass: boolean; setDiscriminatorValue(value: string): void; } interface EntityMapping extends ClassMapping { collectionName: string; databaseName: string; flushPriority: FlushPriority; indexes: Index[]; collectionOptions: CollectionOptions; identity: IdentityGenerator; changeTracking: ChangeTrackingType; versioned: boolean; versionField: string; addIndex(index: Index): void; } function createProperty(name: string, mapping: Mapping): Property; function createArrayMapping(elementMapping: Mapping): Mapping; function createBooleanMapping(): Mapping; function createClassMapping(baseClass?: ClassMapping): ClassMapping; function createDateMapping(): Mapping; function createEntityMapping(baseClass?: EntityMapping): EntityMapping; function createEnumMapping(members: EnumMembers, ignoreCase?: boolean): Mapping; function createNumberMapping(): Mapping; function createObjectMapping(): ObjectMapping; function createRegExpMapping(): Mapping; function createStringMapping(): Mapping; function createConverterMapping(converter: PropertyConverter): Mapping; function createBufferMapping(): Mapping; function createTupleMapping(elementMappings: Mapping[]): Mapping; } export interface PropertyConverter { convertToDocumentField(property: any): any; convertToObjectProperty(field: any): any; areEqual(field1: any, field2: any): boolean; } export declare const enum ChangeTrackingType { None = 0, DeferredImplicit = 1, DeferredExplicit = 2, } export declare const enum FlushPriority { High = 100, MediumHigh = 75, Medium = 50, MediumLow = 25, Low = 0, } export declare const enum CascadeFlags { None = 0, Save = 2, Remove = 4, Detach = 8, Refresh = 16, Merge = 32, All = 62, } export declare const enum FetchType { Eager = 1024, Lazy = 2048, }