hydrate-mongodb
Version:
An Object Document Mapper (ODM) for MongoDB.
189 lines (188 loc) • 9.16 kB
TypeScript
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;
}