Files
calendar/packages/prisma/extensions/usage-tracking.ts
T
Alex van AndelandGitHub aa51218428 perf: move to disable prisma client extension inference (#23692)
* perf: move to disable prisma client extension inference

* Prisma doesn't like it when you pass Record<string, unknown>

* API v1 type fixes

* Missed one

* Fix unit test fail due to faulty expect

* Assigning to prisma InputJsonValue/Array must be done as object, not interface

* Fix @calcom/web ts error, teams not defined

* Run eslint formatter

* fixed the routingFormHelpers file causing a failing app store e2e test
2025-09-09 10:56:58 +00:00

36 lines
1.1 KiB
TypeScript

import { Prisma } from "@prisma/client";
import type { PrismaClient } from "@prisma/client";
import { waitUntil } from "@vercel/functions";
import { UsageEvent, LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService";
import { DeploymentRepository } from "@calcom/lib/server/repository/deployment";
async function incrementUsage(prismaClient: PrismaClient, event?: UsageEvent) {
const deploymentRepo = new DeploymentRepository(prismaClient);
try {
const licenseKeyService = await LicenseKeySingleton.getInstance(deploymentRepo);
await licenseKeyService.incrementUsage(event);
} catch (e) {
console.log(e);
}
}
export function usageTrackingExtention(prismaClient: PrismaClient) {
return Prisma.defineExtension({
query: {
booking: {
async create({ args, query }) {
waitUntil(incrementUsage(prismaClient, UsageEvent.BOOKING));
return query(args);
},
},
user: {
async create({ args, query }) {
waitUntil(incrementUsage(prismaClient, UsageEvent.USER));
return query(args);
},
},
},
});
}