@nestjs/mongoose
Version:
Nest - modern, fast, powerful node.js web framework (@mongoose)
43 lines • 1.96 kB
JavaScript
import { getConnectionToken, getModelToken } from './common/mongoose.utils.js';
export function createMongooseProviders(connectionName, options = []) {
return options.reduce((providers, option) => [
...providers,
...(option.discriminators || []).map((d) => ({
provide: getModelToken(d.name, connectionName),
useFactory: (model) => model.discriminator(d.name, d.schema, d.value),
inject: [getModelToken(option.name, connectionName)],
})),
{
provide: getModelToken(option.name, connectionName),
useFactory: (connection) => {
const model = connection.models[option.name]
? connection.models[option.name]
: connection.model(option.name, option.schema, option.collection);
return model;
},
inject: [getConnectionToken(connectionName)],
},
], []);
}
export function createMongooseAsyncProviders(connectionName, modelFactories = []) {
return modelFactories.reduce((providers, option) => {
return [
...providers,
{
provide: getModelToken(option.name, connectionName),
useFactory: async (connection, ...args) => {
const schema = await option.useFactory(...args);
const model = connection.model(option.name, schema, option.collection);
return model;
},
inject: [getConnectionToken(connectionName), ...(option.inject || [])],
},
...(option.discriminators || []).map((d) => ({
provide: getModelToken(d.name, connectionName),
useFactory: (model) => model.discriminator(d.name, d.schema, d.value),
inject: [getModelToken(option.name, connectionName)],
})),
];
}, []);
}
//# sourceMappingURL=mongoose.providers.js.map