* refactor: convert handleNotificationWhenNoSlots to service class with DI - Convert standalone handleNotificationWhenNoSlots function to NoSlotsNotificationService class - Add INoSlotsNotificationService interface following existing patterns - Create NoSlotsNotification DI module and add to container - Add NO_SLOTS_NOTIFICATION_SERVICE tokens to DI_TOKENS - Inject service into AvailableSlotsService dependencies - Update AvailableSlotsService to use injected service instead of direct function call - Update all test cases to use service class pattern - Follows existing DI patterns used by other services like BusyTimesService and CheckBookingLimitsService Co-Authored-By: morgan@cal.com <morgan@cal.com> * refactor: move Prisma calls to repositories and create dedicated DI container - Add findOrganizationSettingsBySlug and findTeamSlugById methods to TeamRepository - Add findTeamAdminsByTeamId method to MembershipRepository - Create MembershipRepository DI module and tokens - Update NoSlotsNotificationService to inject TeamRepository, MembershipRepository, and Redis client - Create dedicated DI container for NoSlotsNotificationService - Update AvailableSlots DI container to include MembershipRepository - Replace direct Prisma and Redis calls with repository methods and injected client - Update tests to use DI container instead of direct service instantiation - Fix Redis interface import path Co-Authored-By: morgan@cal.com <morgan@cal.com> * chore: DI noSlotsNotification service * chore: bump library --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: morgan@cal.com <morgan@cal.com> Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
49 lines
2.3 KiB
TypeScript
49 lines
2.3 KiB
TypeScript
import { PrismaBookingRepository } from "@/lib/repositories/prisma-booking.repository";
|
|
import { PrismaEventTypeRepository } from "@/lib/repositories/prisma-event-type.repository";
|
|
import { PrismaFeaturesRepository } from "@/lib/repositories/prisma-features.repository";
|
|
import { PrismaMembershipRepository } from "@/lib/repositories/prisma-membership.repository";
|
|
import { PrismaOOORepository } from "@/lib/repositories/prisma-ooo.repository";
|
|
import { PrismaRoutingFormResponseRepository } from "@/lib/repositories/prisma-routing-form-response.repository";
|
|
import { PrismaScheduleRepository } from "@/lib/repositories/prisma-schedule.repository";
|
|
import { PrismaSelectedSlotRepository } from "@/lib/repositories/prisma-selected-slot.repository";
|
|
import { PrismaTeamRepository } from "@/lib/repositories/prisma-team.repository";
|
|
import { PrismaUserRepository } from "@/lib/repositories/prisma-user.repository";
|
|
import { AvailableSlotsService } from "@/lib/services/available-slots.service";
|
|
import { BusyTimesService } from "@/lib/services/busy-times.service";
|
|
import { CacheService } from "@/lib/services/cache.service";
|
|
import { CheckBookingLimitsService } from "@/lib/services/check-booking-limits.service";
|
|
import { FilterHostsService } from "@/lib/services/filter-hosts.service";
|
|
import { NoSlotsNotificationService } from "@/lib/services/no-slots-notification.service";
|
|
import { QualifiedHostsService } from "@/lib/services/qualified-hosts.service";
|
|
import { UserAvailabilityService } from "@/lib/services/user-availability.service";
|
|
import { PrismaModule } from "@/modules/prisma/prisma.module";
|
|
import { RedisService } from "@/modules/redis/redis.service";
|
|
import { Module } from "@nestjs/common";
|
|
|
|
@Module({
|
|
imports: [PrismaModule],
|
|
providers: [
|
|
PrismaOOORepository,
|
|
PrismaScheduleRepository,
|
|
PrismaBookingRepository,
|
|
PrismaSelectedSlotRepository,
|
|
PrismaUserRepository,
|
|
PrismaEventTypeRepository,
|
|
PrismaRoutingFormResponseRepository,
|
|
PrismaTeamRepository,
|
|
RedisService,
|
|
PrismaFeaturesRepository,
|
|
PrismaMembershipRepository,
|
|
CheckBookingLimitsService,
|
|
CacheService,
|
|
AvailableSlotsService,
|
|
UserAvailabilityService,
|
|
BusyTimesService,
|
|
FilterHostsService,
|
|
QualifiedHostsService,
|
|
NoSlotsNotificationService,
|
|
],
|
|
exports: [AvailableSlotsService],
|
|
})
|
|
export class AvailableSlotsModule {}
|