UNPKG

mongo-seeding

Version:

The ultimate Node.js library for populating your MongoDB database.

124 lines (123 loc) 4.06 kB
import { SeederCollection, DeepPartial } from './common'; import { BulkWriteOptions, MongoClientOptions } from 'mongodb'; import { EJSONOptions } from 'bson'; import { ConnectionString } from 'connection-string'; /** * Defines configuration for database seeding. */ export interface SeederConfig { /** * Database connection URI or configuration object. */ database?: SeederDatabaseConfig; /** * Maximum time of waiting for successful MongoDB connection in milliseconds. Ignored when `mongoClientOptions` are passed. */ databaseReconnectTimeout: number; /** * Drops entire database before import. */ dropDatabase: boolean; /** * Drops collection before importing it. */ dropCollections: boolean; /** * Deletes all documents from every collection that is being imported. */ removeAllDocuments: boolean; /** * Optional MongoDB client options. */ mongoClientOptions?: MongoClientOptions; /** * Optional MongoDB collection write options. */ bulkWriteOptions?: BulkWriteOptions; } export type SeederConfigWithoutDatabase = Omit<SeederConfig, 'database'>; /** * Stores default configuration for database seeding. */ export declare const defaultSeederConfig: SeederConfigWithoutDatabase; /** * Represents database connection configuration. It can be a URI string or object. */ export type SeederDatabaseConfig = string | SeederDatabaseConfigObject; /** * Defines configuration for Database connection in a form of an object. */ export interface SeederDatabaseConfigObject { /** * Database connection protocol */ protocol: string; /** * Database connection host */ host: string; /** * Database connection port */ port: number; /** * Database name. */ name: string; /** * Database Username. */ username?: string; /** * Database password. */ password?: string; /** * Options for MongoDB Database Connection URI. * Read more on: https://docs.mongodb.com/manual/reference/connection-string. */ options?: SeederDatabaseConfigObjectOptions; } /** * Defines options for MongoDB Database Connection URI. * Read more on: https://docs.mongodb.com/manual/reference/connection-string. */ export interface SeederDatabaseConfigObjectOptions { [key: string]: unknown; } /** * Merges configuration for seeding and deletes database property. * * @param partial Partial config object. If not specified, returns a default config object. * @param previous Previous config object. If not specified, uses a default config object as a base. */ export declare const mergeSeederConfigAndDeleteDb: (partial?: DeepPartial<SeederConfig>, previous?: SeederConfig) => SeederConfigWithoutDatabase; export declare const mergeConnection: (partial?: DeepPartial<SeederDatabaseConfig>, previous?: ConnectionString) => ConnectionString; /** * Defines collection reading configuration. */ export interface SeederCollectionReadingOptions { /** * Files extensions that should be imported */ extensions: string[]; /** * Options for parsing EJSON files with `.json` extension */ ejsonParseOptions?: EJSONOptions; /** * Optional transformer functions that can be used to modify collection data before import. */ transformers: ((collection: SeederCollection) => SeederCollection)[]; } /** * Stores default collection reading configuration values. */ export declare const defaultCollectionReadingOptions: SeederCollectionReadingOptions; /** * Merges configuration for collection reading. * * @param partial Partial config object. If not specified, returns a default config object. * @param previous Previous config object. If not specified, uses a default config object as a base. */ export declare const mergeCollectionReadingOptions: (partial?: DeepPartial<SeederCollectionReadingOptions>, previous?: SeederCollectionReadingOptions) => SeederCollectionReadingOptions;