refactor: create PrismaOOORepository in /features/ooo (#25850)

* move to features

* update imports
This commit is contained in:
Benny Joo
2025-12-14 08:39:58 -03:00
committed by GitHub
parent 68a8fade89
commit 972f983824
6 changed files with 8 additions and 12 deletions
@@ -11,6 +11,7 @@ import {
} from "@calcom/features/busyTimes/lib/getBusyTimesFromLimits";
import { getBusyTimesService } from "@calcom/features/di/containers/BusyTimes";
import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository";
import type { PrismaOOORepository } from "@calcom/features/ooo/repositories/PrismaOOORepository";
import type { IRedisService } from "@calcom/features/redis/IRedisService";
import type { DateOverride, WorkingHours } from "@calcom/features/schedules/lib/date-ranges";
import { buildDateRanges, subtract } from "@calcom/features/schedules/lib/date-ranges";
@@ -24,7 +25,6 @@ import { getPeriodStartDatesBetween as getPeriodStartDatesBetweenUtil } from "@c
import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { withReporting } from "@calcom/lib/sentryWrapper";
import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo";
import type {
Booking,
Prisma,
@@ -5,13 +5,13 @@ import dayjs from "@calcom/dayjs";
import type { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository";
import { getBusyCalendarTimes } from "@calcom/features/calendars/lib/CalendarManager";
import type { HostRepository } from "@calcom/features/host/repositories/HostRepository";
import type { PrismaOOORepository } from "@calcom/features/ooo/repositories/PrismaOOORepository";
import { mergeOverlappingRanges } from "@calcom/features/schedules/lib/date-ranges";
import type { UserRepository } from "@calcom/features/users/repositories/UserRepository";
import logger from "@calcom/lib/logger";
import { raqbQueryValueSchema } from "@calcom/lib/raqb/zod";
import { safeStringify } from "@calcom/lib/safeStringify";
import type { PrismaAttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository";
import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo";
import type { Prisma } from "@calcom/prisma/client";
import type { User, Booking, SelectedCalendar } from "@calcom/prisma/client";
import type { AttributeType } from "@calcom/prisma/enums";
+2 -2
View File
@@ -1,6 +1,6 @@
import { DI_TOKENS } from "@calcom/features/di/tokens";
import { PrismaOOORepository } from "@calcom/lib/server/repository/ooo";
import { moduleLoader as prismaModuleLoader } from "@calcom/features/di/modules/Prisma";
import { DI_TOKENS } from "@calcom/features/di/tokens";
import { PrismaOOORepository } from "@calcom/features/ooo/repositories/PrismaOOORepository";
import { createModule, bindModuleToClassOnToken, type ModuleLoader } from "../di";
+1 -1
View File
@@ -1,5 +1,5 @@
export { PrismaAttributeRepository } from "@calcom/lib/server/repository/PrismaAttributeRepository";
export { PrismaOOORepository } from "@calcom/lib/server/repository/ooo";
export { PrismaOOORepository } from "@calcom/features/ooo/repositories/PrismaOOORepository";
export { ScheduleRepository as PrismaScheduleRepository } from "@calcom/features/schedules/repositories/ScheduleRepository";
export { BookingRepository as PrismaBookingRepository } from "@calcom/features/bookings/repositories/BookingRepository";
export { EventTypeRepository as PrismaEventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository";
@@ -24,6 +24,7 @@ import type { TeamRepository } from "@calcom/features/ee/teams/repositories/Team
import { getDefaultEvent } from "@calcom/features/eventtypes/lib/defaultEvents";
import type { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository";
import type { FeaturesRepository } from "@calcom/features/flags/features.repository";
import type { PrismaOOORepository } from "@calcom/features/ooo/repositories/PrismaOOORepository";
import type { IRedisService } from "@calcom/features/redis/IRedisService";
import { buildDateRanges } from "@calcom/features/schedules/lib/date-ranges";
import getSlots from "@calcom/features/schedules/lib/slots";
@@ -51,7 +52,6 @@ import { safeStringify } from "@calcom/lib/safeStringify";
import { withReporting } from "@calcom/lib/sentryWrapper";
import type { ISelectedSlotRepository } from "@calcom/lib/server/repository/ISelectedSlotRepository";
import type { RoutingFormResponseRepository } from "@calcom/lib/server/repository/formResponse";
import type { PrismaOOORepository } from "@calcom/lib/server/repository/ooo";
import { SchedulingType, PeriodType } from "@calcom/prisma/enums";
import type { EventBusyDate, EventBusyDetails } from "@calcom/types/Calendar";
import type { CredentialForCalendarService } from "@calcom/types/Credential";
@@ -279,7 +279,7 @@ export class AvailableSlotsService {
* cause slots from adjacent days to leak into the response.
*/
private _filterSlotsByRequestedDateRange<
T extends Record<string, { time: string; attendees?: number; bookingUid?: string }[]>,
T extends Record<string, { time: string; attendees?: number; bookingUid?: string }[]>
>({
slotsMappedToDate,
startTime,
@@ -306,11 +306,7 @@ export class AvailableSlotsService {
});
const allowedDates = new Set<string>();
for (
let d = inputStartTime.startOf("day");
!d.isAfter(inputEndTime, "day");
d = d.add(1, "day")
) {
for (let d = inputStartTime.startOf("day"); !d.isAfter(inputEndTime, "day"); d = d.add(1, "day")) {
allowedDates.add(formatter.format(d.toDate()));
}