From e31093141791ffd1d7ce73339e97421331501582 Mon Sep 17 00:00:00 2001 From: Volnei Munhoz Date: Tue, 21 Oct 2025 10:14:15 -0300 Subject: [PATCH] fix: remove circular dependency in packages/prisma (#24596) - Replaced DeploymentRepository import with inline implementation - Created InlineDeploymentRepository class implementing IDeploymentRepository - Breaks circular dependency: deployment.ts -> prisma/index.ts -> usage-tracking.ts -> deployment.ts - Verified with madge: no circular dependencies found Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- packages/prisma/extensions/usage-tracking.ts | 24 ++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/prisma/extensions/usage-tracking.ts b/packages/prisma/extensions/usage-tracking.ts index 08e5186f40..dad16cb1a2 100644 --- a/packages/prisma/extensions/usage-tracking.ts +++ b/packages/prisma/extensions/usage-tracking.ts @@ -1,12 +1,32 @@ import { waitUntil } from "@vercel/functions"; import { UsageEvent, LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; +import type { IDeploymentRepository } from "@calcom/lib/server/repository/deployment.interface"; import { Prisma } from "@calcom/prisma/client"; import type { PrismaClient } from "@calcom/prisma/client"; +class InlineDeploymentRepository implements IDeploymentRepository { + constructor(private prisma: PrismaClient) {} + + async getLicenseKeyWithId(id: number): Promise { + const deployment = await this.prisma.deployment.findUnique({ + where: { id }, + select: { licenseKey: true }, + }); + return deployment?.licenseKey || null; + } + + async getSignatureToken(id: number): Promise { + const deployment = await this.prisma.deployment.findUnique({ + where: { id }, + select: { signatureTokenEncrypted: true }, + }); + return deployment?.signatureTokenEncrypted || null; + } +} + async function incrementUsage(prismaClient: PrismaClient, event?: UsageEvent) { - const deploymentRepo = new DeploymentRepository(prismaClient); + const deploymentRepo = new InlineDeploymentRepository(prismaClient); try { const licenseKeyService = await LicenseKeySingleton.getInstance(deploymentRepo); await licenseKeyService.incrementUsage(event);