29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
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<ICalendarCacheRepository> {
|
|
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<ICalendarCacheRepository> {
|
|
const featureRepo = new FeaturesRepository();
|
|
const isCalendarCacheEnabledGlobally = await featureRepo.checkIfFeatureIsEnabledGlobally(
|
|
"calendar-cache"
|
|
);
|
|
if (isCalendarCacheEnabledGlobally) return new CalendarCacheRepository(calendar);
|
|
return new CalendarCacheRepositoryMock();
|
|
}
|
|
}
|