Skip to content

Commit b480ca6

Browse files
Updated database servce to extend prisma & added super init.
1 parent 89d7966 commit b480ca6

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

src/common/database/database.service.ts

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
22
import { MeterProvider } from '@opentelemetry/sdk-metrics';
33
import { Counter } from '@opentelemetry/api-metrics';
4-
import { PrismaClient, Prisma, PrismaPromise } from '@prisma/client';
4+
import { Prisma, PrismaClient, PrismaPromise } from '@prisma/client';
55
import { ConfigService } from '../configs/config.service';
66
import { LogService } from '../log/log.service';
77
import { TraceService } from '../trace/trace.service';
@@ -14,7 +14,6 @@ export { default as DatabaseModel } from '@prisma/client';
1414

1515
@Injectable()
1616
export class DatabaseService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
17-
private prisma: PrismaClient;
1817
//private readonly queriesCounter: Counter;
1918
//private readonly pendingQueriesCounter: UpDownCounter;
2019

@@ -23,10 +22,7 @@ export class DatabaseService extends PrismaClient implements OnModuleInit, OnMod
2322
private readonly configService: ConfigService,
2423
private readonly traceService: TraceService //private readonly meter,
2524
) {
26-
super();
27-
logger.info(`Using Prisma v${Prisma.prismaVersion.client} ${configService.get('DATABASE_URL')}`);
28-
29-
this.prisma = new PrismaClient({
25+
super({
3026
datasources: {
3127
db: {
3228
url: configService.get('DATABASE_URL'),
@@ -39,6 +35,7 @@ export class DatabaseService extends PrismaClient implements OnModuleInit, OnMod
3935
// },
4036
// ]
4137
});
38+
logger.info(`Using Prisma v${Prisma.prismaVersion.client} ${configService.get('DATABASE_URL')}`);
4239

4340
/* this.meter = meterProvider.getMeter('example-exporter-collector');
4441
@@ -55,6 +52,18 @@ export class DatabaseService extends PrismaClient implements OnModuleInit, OnMod
5552
}
5653

5754
async onModuleInit(): Promise<void> {
55+
this.$use(async (params: any, next) => {
56+
const span = this.traceService.startSpan(`prisma: ${params.model}.${params.action}`);
57+
//this.queriesCounter.add(1);
58+
// this.pendingQueriesCounter.add(1);
59+
const result = await next(params);
60+
span.end();
61+
62+
// this.pendingQueriesCounter.add(-1);
63+
64+
return result;
65+
});
66+
5867
const prismaEngine = (this as any)._engineConfig;
5968

6069
await (this as any).$connect();
@@ -68,19 +77,8 @@ export class DatabaseService extends PrismaClient implements OnModuleInit, OnMod
6877
// console.log(e)
6978
// })
7079

71-
this.prisma.$use(async (params: any, next) => {
72-
//this.queriesCounter.add(1);
73-
// this.pendingQueriesCounter.add(1);
74-
75-
const span = this.traceService.startSpan('$query');
76-
span.setAttributes({ model: params.model, action: params.action });
77-
const result = await next(params);
78-
span.end();
79-
80-
// this.pendingQueriesCounter.add(-1);
81-
82-
return result;
83-
});
80+
// console.log(e)
81+
// })
8482
}
8583

8684
async transaction<P extends PrismaPromise<any>[]>(arg: [...P]) {
@@ -92,7 +90,7 @@ export class DatabaseService extends PrismaClient implements OnModuleInit, OnMod
9290
}
9391

9492
async onModuleDestroy(): Promise<void> {
95-
await this.$disconnect();
93+
await super.$disconnect();
9694

9795
this.logService.debug('Disconnected from Postgres instance');
9896
}

0 commit comments

Comments
 (0)