UNPKG

hydrate-mongodb

Version:
189 lines (188 loc) 9.16 kB
import { PropertyConverter, FlushPriority, FetchType } from "../mappingModel"; import { CollectionOptions } from "../collectionOptions"; import { IndexOptions } from "../indexOptions"; import { ChangeTrackingType } from "../mappingModel"; import { CascadeFlags } from "../mappingModel"; import { Constructor, ParameterlessConstructor } from "../../index"; import { MappingModel } from "../mappingModel"; import { MappingBuilderContext } from "./mappingBuilderContext"; import { MappingBuilder } from "./mappingBuilder"; import { Type, Property, Method } from "reflect-helper"; import { IdentityGenerator } from "../../config/configuration"; export declare enum AnnotationPriority { High = 100, Medium = 50, Low = 0, } export declare class Annotation { } export interface ClassAnnotation { inherited?: boolean; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, annotation: Annotation): void; } export interface PropertyAnnotation { processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: Annotation): void; } export interface MethodAnnotation { processMethodAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, method: Method, annotation: Annotation): void; } export interface MappingBuilderAnnotation { createBuilder(context: MappingBuilderContext, type: Type): MappingBuilder; } export interface TargetClassAnnotation { target: Constructor<any> | string; } export declare class EntityAnnotation extends Annotation implements MappingBuilderAnnotation { createBuilder(context: MappingBuilderContext, type: Type): MappingBuilder; toString(): string; } export declare class EmbeddableAnnotation extends Annotation implements MappingBuilderAnnotation { createBuilder(context: MappingBuilderContext, type: Type): MappingBuilder; toString(): string; } export declare class ConverterAnnotation extends Annotation implements MappingBuilderAnnotation { converter: PropertyConverter; converterCtr: ParameterlessConstructor<PropertyConverter>; converterName: string; constructor(converter: string | PropertyConverter | ParameterlessConstructor<PropertyConverter>); toString(): string; createBuilder(context: MappingBuilderContext, type: Type): MappingBuilder; createMapping(context: MappingBuilderContext): MappingModel.Mapping; } export declare class CollectionAnnotation extends Annotation implements ClassAnnotation { name: string; flushPriority: FlushPriority; db: string; options: CollectionOptions; constructor(name: string); constructor(description?: CollectionDescription); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: CollectionAnnotation): void; } export interface CollectionDescription { flushPriority?: FlushPriority; name?: string; db?: string; options?: CollectionOptions; } export declare class IndexAnnotation extends Annotation implements ClassAnnotation, PropertyAnnotation { keys: [string, number | string][]; order: number; options: IndexOptions; inherited: boolean; constructor(args: ClassIndexDescription); constructor(args?: PropertyIndexDescription); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: IndexAnnotation): void; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, property: MappingModel.Property, symbol: Property, annotation: IndexAnnotation): void; private _addIndex(context, mapping, value); } export interface ClassIndexDescription { keys: [string, number | string][]; options?: IndexOptions; } export interface PropertyIndexDescription { order?: number | string; options?: IndexOptions; } export declare class VersionFieldAnnotation extends Annotation implements ClassAnnotation { name: string; constructor(name: string); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: VersionFieldAnnotation): void; } export declare class VersionedAnnotation extends Annotation implements ClassAnnotation { enabled: boolean; constructor(enabled?: boolean); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: VersionedAnnotation): void; } export declare class ChangeTrackingAnnotation extends Annotation implements ClassAnnotation { type: ChangeTrackingType; constructor(type: ChangeTrackingType); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: ChangeTrackingAnnotation): void; } export declare class IdentityAnnotation extends Annotation implements ClassAnnotation { identity: IdentityGenerator; identityCtr: ParameterlessConstructor<IdentityGenerator>; constructor(identity: IdentityGenerator | ParameterlessConstructor<IdentityGenerator>); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.EntityMapping, annotation: ChangeTrackingAnnotation): void; } export declare class DiscriminatorFieldAnnotation extends Annotation implements ClassAnnotation { name: string; constructor(name: string); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.ClassMapping, annotation: DiscriminatorFieldAnnotation): void; } export declare class ImmutableAnnotation extends Annotation implements ClassAnnotation { toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.ClassMapping, annotation: ImmutableAnnotation): void; } export declare class DiscriminatorValueAnnotation extends Annotation implements ClassAnnotation { value: string; constructor(value: string); toString(): string; processClassAnnotation(context: MappingBuilderContext, mapping: MappingModel.ClassMapping, annotation: DiscriminatorValueAnnotation): void; } export declare class InverseOfAnnotation extends Annotation implements PropertyAnnotation { propertyName: string; constructor(propertyName: string); toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: InverseOfAnnotation): void; } export declare class CascadeAnnotation extends Annotation implements PropertyAnnotation { flags: CascadeFlags; constructor(flags: CascadeFlags); toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: CascadeAnnotation): void; } export declare class FetchAnnotation extends Annotation implements PropertyAnnotation { type: FetchType; constructor(type: FetchType); toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: FetchAnnotation): void; } export declare class TypeAnnotation extends Annotation implements TargetClassAnnotation { target: Constructor<any> | string; constructor(target: Constructor<any> | string); toString(): string; } export declare class ElementTypeAnnotation extends Annotation implements TargetClassAnnotation { target: Constructor<any> | string; constructor(target: Constructor<any> | string); toString(): string; } export declare class MapKeyAnnotation extends Annotation { propertyName: string; constructor(propertyName: string); toString(): string; } export declare class FieldAnnotation extends Annotation implements PropertyAnnotation { name: string; nullable: boolean; readable: boolean; constructor(name?: string); constructor(args: FieldDescription); toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: FieldAnnotation): void; } export declare class ParentAnnotation extends Annotation implements PropertyAnnotation { toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: FieldAnnotation): void; } export interface FieldDescription { name?: string; nullable?: boolean; readable?: boolean; } export declare class EnumeratedAnnotation { members: Object; constructor(members: Object); toString(): string; } export declare class TransientAnnotation implements PropertyAnnotation { toString(): string; processPropertyAnnotation(context: MappingBuilderContext, mapping: MappingModel.ObjectMapping, property: MappingModel.Property, symbol: Property, annotation: Annotation): void; }