Files
bigcapital/packages/server/src/modules/System/SystemDB/SystemDB.module.ts
2026-02-01 16:53:21 +02:00

49 lines
1.3 KiB
TypeScript

import Knex from 'knex';
import { Global, Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import {
SystemKnexConnection,
SystemKnexConnectionConfigure,
} from './SystemDB.constants';
import { knexSnakeCaseMappers } from 'objection';
const providers = [
{
provide: SystemKnexConnectionConfigure,
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
client: configService.get('systemDatabase.client'),
connection: {
host: configService.get('systemDatabase.host'),
user: configService.get('systemDatabase.user'),
password: configService.get('systemDatabase.password'),
database: configService.get('systemDatabase.databaseName'),
charset: 'utf8',
},
migrations: {
directory: configService.get('systemDatabase.migrationDir'),
loadExtensions: ['.js'],
},
seeds: {
directory: configService.get('systemDatabase.seedsDir'),
},
pool: { min: 0, max: 7 },
...knexSnakeCaseMappers({ upperCase: true }),
}),
},
{
provide: SystemKnexConnection,
inject: [SystemKnexConnectionConfigure],
useFactory: (knexConfig) => {
return Knex(knexConfig);
},
},
];
@Global()
@Module({
providers: [...providers],
exports: [...providers],
})
export class SystemDatabaseModule {}