UNPKG

2.31 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createMongooseAsyncProviders = exports.createMongooseProviders = void 0;
4const mongoose_utils_1 = require("./common/mongoose.utils");
5function createMongooseProviders(connectionName, options = []) {
6 return options.reduce((providers, option) => [
7 ...providers,
8 ...(option.discriminators || []).map((d) => ({
9 provide: (0, mongoose_utils_1.getModelToken)(d.name, connectionName),
10 useFactory: (model) => model.discriminator(d.name, d.schema, d.value),
11 inject: [(0, mongoose_utils_1.getModelToken)(option.name, connectionName)],
12 })),
13 {
14 provide: (0, mongoose_utils_1.getModelToken)(option.name, connectionName),
15 useFactory: (connection) => {
16 const model = connection.models[option.name] ? connection.models[option.name] : connection.model(option.name, option.schema, option.collection);
17 return model;
18 },
19 inject: [(0, mongoose_utils_1.getConnectionToken)(connectionName)],
20 },
21 ], []);
22}
23exports.createMongooseProviders = createMongooseProviders;
24function createMongooseAsyncProviders(connectionName, modelFactories = []) {
25 return modelFactories.reduce((providers, option) => {
26 return [
27 ...providers,
28 {
29 provide: (0, mongoose_utils_1.getModelToken)(option.name, connectionName),
30 useFactory: async (connection, ...args) => {
31 const schema = await option.useFactory(...args);
32 const model = connection.model(option.name, schema, option.collection);
33 return model;
34 },
35 inject: [(0, mongoose_utils_1.getConnectionToken)(connectionName), ...(option.inject || [])],
36 },
37 ...(option.discriminators || []).map((d) => ({
38 provide: (0, mongoose_utils_1.getModelToken)(d.name, connectionName),
39 useFactory: (model) => model.discriminator(d.name, d.schema, d.value),
40 inject: [(0, mongoose_utils_1.getModelToken)(option.name, connectionName)],
41 })),
42 ];
43 }, []);
44}
45exports.createMongooseAsyncProviders = createMongooseAsyncProviders;