* refactor: decouple @calcom/prisma from @calcom/features, @calcom/ee, and @calcom/lib - Inline helper functions in zod-utils.ts (emailSchema, slugify, getValidRhfFieldName, isPasswordValid, intervalLimitsType, zodAttributesQueryValue) - Update schema.prisma @zod.import comments to reference zod-utils instead of @calcom/lib - Inline idempotency key generation in booking-idempotency-key extension using uuid v5 - Move usage-tracking extension to @calcom/ee/prisma-extensions/ - Remove usage-tracking extension from packages/prisma/index.ts - Move Prisma DI module from @calcom/prisma to @calcom/features/di/modules/Prisma.ts - Update 20 import paths in @calcom/features to use new Prisma DI module - Remove @calcom/lib dependency from @calcom/prisma package.json - Add uuid dependency to @calcom/prisma package.json This reduces the dependency footprint of @calcom/prisma and breaks circular dependencies between packages. Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com> * feat: add EE-specific Prisma DI module with usage tracking Create packages/ee/di/modules/PrismaEE.ts to apply the usage-tracking extension in EE contexts. This module: - Imports the base prisma client from @calcom/prisma - Applies the usageTrackingExtention from @calcom/ee/prisma-extensions/usage-tracking - Exports the same DI tokens as the base Prisma module for override in EE containers This ensures usage tracking functionality is preserved in EE builds while keeping the base @calcom/prisma package free of EE dependencies. Note: EE containers should load this module after the base Prisma module to override the bindings. Co-Authored-By: Volnei Munhoz <volnei.munhoz@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
25 lines
965 B
TypeScript
25 lines
965 B
TypeScript
import { InstantBookingCreateService } from "@calcom/features/bookings/lib/service/InstantBookingCreateService";
|
|
import { createModule, bindModuleToClassOnToken } from "@calcom/features/di/di";
|
|
import { DI_TOKENS } from "@calcom/features/di/tokens";
|
|
import { moduleLoader as prismaModuleLoader } from "@calcom/features/di/modules/Prisma";
|
|
|
|
export const instantBookingCreateServiceModule = createModule();
|
|
const token = DI_TOKENS.INSTANT_BOOKING_CREATE_SERVICE;
|
|
const moduleToken = DI_TOKENS.INSTANT_BOOKING_CREATE_SERVICE_MODULE;
|
|
const loadModule = bindModuleToClassOnToken({
|
|
module: instantBookingCreateServiceModule,
|
|
moduleToken,
|
|
token,
|
|
classs: InstantBookingCreateService,
|
|
depsMap: {
|
|
// TODO: In a followup PR, we aim to remove prisma dependency and instead inject the repositories as dependencies.
|
|
prismaClient: prismaModuleLoader,
|
|
},
|
|
});
|
|
|
|
export type { InstantBookingCreateService };
|
|
export const moduleLoader = {
|
|
token,
|
|
loadModule,
|
|
};
|