import { getCalendar } from "@calcom/app-store/_utils/getCalendar"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; import prisma from "@calcom/prisma"; import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential"; import type { Calendar } from "@calcom/types/Calendar"; import { CalendarCacheRepository } from "./calendar-cache.repository"; import type { ICalendarCacheRepository } from "./calendar-cache.repository.interface"; import { CalendarCacheRepositoryMock } from "./calendar-cache.repository.mock"; export class CalendarCache { static async initFromCredentialId(credentialId: number): Promise { const credential = await prisma.credential.findUnique({ where: { id: credentialId }, select: credentialForCalendarServiceSelect, }); const calendar = await getCalendar(credential); return await CalendarCache.init(calendar); } static async init(calendar: Calendar | null): Promise { const featureRepo = new FeaturesRepository(); const isCalendarCacheEnabledGlobally = await featureRepo.checkIfFeatureIsEnabledGlobally( "calendar-cache" ); if (isCalendarCacheEnabledGlobally) return new CalendarCacheRepository(calendar); return new CalendarCacheRepositoryMock(); } }