chore: disconnect prisma on module destroy apiv2 (#16018)

This commit is contained in:
Morgan authored and GitHub committed 2024-08-01 09:41:50 +00:00
1 parent f4f09eaf9e
commit 76377d2d2c
13 files changed
+56 -36

No files matched your search

@@ -1,10 +1,12 @@
import type { OnModuleInit } from "@nestjs/common";
import { Injectable } from "@nestjs/common";
import type { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
import { Injectable, Logger } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { PrismaClient } from "@prisma/client";
@Injectable()
export class PrismaReadService implements OnModuleInit {
export class PrismaReadService implements OnModuleInit, OnModuleDestroy {
private logger = new Logger("PrismaReadService");
public prisma: PrismaClient;
constructor(readonly configService: ConfigService) {
@@ -22,4 +24,12 @@ export class PrismaReadService implements OnModuleInit {
async onModuleInit() {
this.prisma.$connect();
}
async onModuleDestroy() {
try {
await this.prisma.$disconnect();
} catch (error) {
this.logger.error(error);
}
}
}
@@ -1,10 +1,12 @@
import { OnModuleInit } from "@nestjs/common";
import { Injectable } from "@nestjs/common";
import { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
import { Injectable, Logger } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { PrismaClient } from "@prisma/client";
@Injectable()
export class PrismaWriteService implements OnModuleInit {
export class PrismaWriteService implements OnModuleInit, OnModuleDestroy {
private logger = new Logger("PrismaWriteService");
public prisma: PrismaClient;
constructor(readonly configService: ConfigService) {
@@ -22,4 +24,12 @@ export class PrismaWriteService implements OnModuleInit {
async onModuleInit() {
this.prisma.$connect();
}
async onModuleDestroy() {
try {
await this.prisma.$disconnect();
} catch (error) {
this.logger.error(error);
}
}
}
@@ -4,11 +4,11 @@ import { TestingModule } from "@nestjs/testing";
import { randomBytes, createHash } from "crypto";
export class ApiKeysRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -3,11 +3,11 @@ import { PrismaWriteService } from "@/modules/prisma/prisma-write.service";
import { TestingModule } from "@nestjs/testing";
export class PlatformBillingRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -4,16 +4,16 @@ import { TestingModule } from "@nestjs/testing";
import { Booking, User } from "@prisma/client";
export class BookingsRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
async getById(bookingId: Booking["id"]) {
return this.primaReadClient.booking.findFirst({ where: { id: bookingId } });
return this.prismaReadClient.booking.findFirst({ where: { id: bookingId } });
}
async deleteById(bookingId: Booking["id"]) {
@@ -4,11 +4,11 @@ import { TestingModule } from "@nestjs/testing";
import { Prisma } from "@prisma/client";
export class CredentialsRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -7,11 +7,11 @@ import { EventType } from "@prisma/client";
import { Prisma } from "@calcom/prisma/client";
export class EventTypesRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -4,11 +4,11 @@ import { TestingModule } from "@nestjs/testing";
import { Membership, MembershipRole, Prisma, Team, User } from "@prisma/client";
export class MembershipRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -21,11 +21,11 @@ export class MembershipRepositoryFixture {
}
async get(membershipId: Membership["id"]) {
return this.primaReadClient.membership.findFirst({ where: { id: membershipId } });
return this.prismaReadClient.membership.findFirst({ where: { id: membershipId } });
}
async getUserMembershipByTeamId(userId: User["id"], teamId: Team["id"]) {
return this.primaReadClient.membership.findFirst({ where: { teamId, userId } });
return this.prismaReadClient.membership.findFirst({ where: { teamId, userId } });
}
async addUserToOrg(user: User, org: Team, role: MembershipRole, accepted: boolean) {
@@ -4,16 +4,16 @@ import { TestingModule } from "@nestjs/testing";
import { Prisma } from "@prisma/client";
export class ProfileRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
async get(profileId: number) {
return this.primaReadClient.profile.findFirst({ where: { id: profileId } });
return this.prismaReadClient.profile.findFirst({ where: { id: profileId } });
}
async create(data: Prisma.ProfileCreateInput) {
@@ -6,11 +6,11 @@ import { Schedule } from "@prisma/client";
import { Prisma } from "@calcom/prisma/client";
export class SchedulesRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -19,7 +19,7 @@ export class SchedulesRepositoryFixture {
}
async getById(scheduleId: Schedule["id"]) {
return this.primaReadClient.schedule.findFirst({ where: { id: scheduleId } });
return this.prismaReadClient.schedule.findFirst({ where: { id: scheduleId } });
}
async deleteById(scheduleId: Schedule["id"]) {
@@ -4,16 +4,16 @@ import { TestingModule } from "@nestjs/testing";
import { Prisma, Team } from "@prisma/client";
export class TeamRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
async get(teamId: Team["id"]) {
return this.primaReadClient.team.findFirst({ where: { id: teamId } });
return this.prismaReadClient.team.findFirst({ where: { id: teamId } });
}
async create(data: Prisma.TeamCreateInput) {
@@ -25,7 +25,7 @@ export class TeamRepositoryFixture {
}
async getPlatformOrgTeams(organizationId: number, oAuthClientId: string) {
return this.primaReadClient.team.findMany({
return this.prismaReadClient.team.findMany({
where: {
parentId: organizationId,
createdByOAuthClientId: oAuthClientId,
@@ -5,11 +5,11 @@ import * as crypto from "crypto";
import { DateTime } from "luxon";
export class TokensRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
@@ -4,16 +4,16 @@ import { TestingModule } from "@nestjs/testing";
import { Prisma, User } from "@prisma/client";
export class UserRepositoryFixture {
private primaReadClient: PrismaReadService["prisma"];
private prismaReadClient: PrismaReadService["prisma"];
private prismaWriteClient: PrismaWriteService["prisma"];
constructor(private readonly module: TestingModule) {
this.primaReadClient = module.get(PrismaReadService).prisma;
this.prismaReadClient = module.get(PrismaReadService).prisma;
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
}
async get(userId: User["id"]) {
return this.primaReadClient.user.findFirst({ where: { id: userId } });
return this.prismaReadClient.user.findFirst({ where: { id: userId } });
}
async create(data: Prisma.UserCreateInput) {