mongo-seeding
Version:
The ultimate Node.js library for populating your MongoDB database.
124 lines (123 loc) • 4.06 kB
TypeScript
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;