返回 AiToEarn
mongodb.module.ts
根目录 / project / aitoearn-backend / libs / channel-db / src / mongodb.module.ts
1 import type { MongodbConfig } from './mongodb.config'
2 import { Global } from '@nestjs/common'
3 import { MongooseModule } from '@nestjs/mongoose'
4 import mongoose from 'mongoose'
5 import mongooseLeanVirtuals from 'mongoose-lean-virtuals'
6 import { DB_CONNECTION_NAME } from './common'
7 import { repositories } from './repositories'
8 import { schemas } from './schemas'
9 import { TransactionalInjector } from './transactional.injector'
10
11 mongoose.plugin(mongooseLeanVirtuals)
12 mongoose.set('transactionAsyncLocalStorage', true)
13
14 @Global()
15 export class ChannelDbModule {
16 static forRoot(config: MongodbConfig) {
17 const forFeature = MongooseModule.forFeature([...schemas], DB_CONNECTION_NAME)
18 const { uri, ...options } = config
19
20 return {
21 imports: [
22 MongooseModule.forRoot(uri, { ...options, connectionName: DB_CONNECTION_NAME }),
23 forFeature,
24 ],
25 providers: [
26 ...repositories,
27 TransactionalInjector,
28 ],
29 exports: [
30 forFeature,
31 ...repositories,
32 ],
33 module: ChannelDbModule,
34 global: true,
35 }
36 }
37 }
38
38 lines TYPESCRIPT