Files
docmost_custom/apps/server/src/kysely/kysely-db.module.ts
T

72 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-03-29 01:46:11 +00:00
import { Global, Module } from '@nestjs/common';
import { KyselyModule } from 'nestjs-kysely';
import { EnvironmentService } from '../integrations/environment/environment.service';
2024-03-29 16:25:42 +00:00
import { CamelCasePlugin, LogEvent, PostgresDialect } from 'kysely';
2024-04-01 01:23:52 +01:00
import { Pool, types } from 'pg';
2024-03-29 01:46:11 +00:00
import { GroupRepo } from '@docmost/db/repos/group/group.repo';
import { WorkspaceRepo } from '@docmost/db/repos/workspace/workspace.repo';
import { UserRepo } from '@docmost/db/repos/user/user.repo';
import { GroupUserRepo } from '@docmost/db/repos/group/group-user.repo';
import { SpaceRepo } from '@docmost/db/repos/space/space.repo';
import { SpaceMemberRepo } from '@docmost/db/repos/space/space-member.repo';
import { PageRepo } from './repos/page/page.repo';
import { CommentRepo } from './repos/comment/comment.repo';
import { PageHistoryRepo } from './repos/page/page-history.repo';
import { AttachmentRepo } from './repos/attachment/attachment.repo';
2024-04-01 01:23:52 +01:00
// https://github.com/brianc/node-postgres/issues/811
types.setTypeParser(types.builtins.INT8, (val) => Number(val));
2024-03-29 01:46:11 +00:00
@Global()
@Module({
imports: [
KyselyModule.forRootAsync({
imports: [],
inject: [EnvironmentService],
useFactory: (environmentService: EnvironmentService) => ({
dialect: new PostgresDialect({
pool: new Pool({
connectionString: environmentService.getDatabaseURL(),
2024-03-29 16:25:42 +00:00
}),
2024-03-29 01:46:11 +00:00
}),
2024-03-29 16:25:42 +00:00
plugins: [new CamelCasePlugin()],
2024-03-29 01:46:11 +00:00
log: (event: LogEvent) => {
if (environmentService.getEnv() !== 'development') return;
if (event.level === 'query') {
console.log(event.query.sql);
2024-04-16 21:55:24 +01:00
//if (event.query.parameters.length > 0) {
//console.log('parameters: ' + event.query.parameters);
//}
2024-03-29 01:46:11 +00:00
console.log('time: ' + event.queryDurationMillis);
}
},
}),
}),
],
providers: [
WorkspaceRepo,
UserRepo,
GroupRepo,
GroupUserRepo,
SpaceRepo,
SpaceMemberRepo,
PageRepo,
PageHistoryRepo,
CommentRepo,
AttachmentRepo,
],
exports: [
WorkspaceRepo,
UserRepo,
GroupRepo,
GroupUserRepo,
SpaceRepo,
SpaceMemberRepo,
PageRepo,
PageHistoryRepo,
CommentRepo,
AttachmentRepo,
],
})
export class KyselyDbModule {}