UNPKG

@codemask-labs/nestjs-mongodb

Version:
80 lines (79 loc) 2.38 kB
import { InjectionToken } from '@nestjs/common'; import { CreateIndexesOptions } from 'mongodb'; import { MongoClientOptions, MongoDatabaseOptions } from './mongo'; import { BSONType } from './enums'; export type Class<T = any> = new (...args: Array<any>) => T; export type MixedList<T> = Array<T> | { [key: string]: T; }; export type MongoHost = { host: string; port: string; }; export type DataSourceOptions = { database?: string; host?: string; port?: number; hosts?: Array<MongoHost>; replicaSet?: string; username?: string; password?: string; synchronize?: boolean; entities?: MixedList<Class>; migrations?: MixedList<Class>; clientOptions?: MongoClientOptions; dbOptions?: MongoDatabaseOptions; }; export type ForRootOptions = { global?: boolean; connectionName?: string; options?: DataSourceOptions; }; export type ForRootAsyncOptions = { global?: boolean; connectionName?: string; inject?: Array<InjectionToken>; useFactory: (...args: Array<any>) => Promise<DataSourceOptions> | DataSourceOptions; }; export type EntityColumnTypes = StringConstructor | NumberConstructor | BooleanConstructor | ObjectConstructor | Class | Record<string, any>; export type EntityColumn = { type: EntityColumnTypes; parent: Class; propertyKey: string; options: EntityColumnOptions; }; export type EntityColumnOptions = { type?: EntityColumnTypes; array?: boolean; enum?: object; required?: boolean; index?: string | Array<string> | CreateIndexesOptions; }; export type EntityOptions = { index?: Record<string, CreateIndexesOptions>; validationLevel?: 'off' | 'strict' | 'moderate'; validationAction?: 'error' | 'warn'; }; export type EntityMetadata = { collectionName: string | null; entityOptions: EntityOptions; entityColumns: Array<EntityColumn>; }; export type EntityIndex = { keys: Array<string>; options: CreateIndexesOptions; }; export type EntityColumnValidator = { bsonType?: BSONType; description?: string; minItems?: number; maxItems?: number; required?: Array<string>; enum?: Array<string>; additionalProperties?: boolean; items?: EntityColumnValidator; properties?: Record<string, EntityColumnValidator>; }; export type MongoJsonSchema = { $jsonSchema?: EntityColumnValidator; };