All files / src/platform/calendar calendar.module.ts

0% Statements 0/17
100% Branches 0/0
100% Functions 0/0
0% Lines 0/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114                                                                                                                                                                                                                                   
import { Module, Global } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { BullModule } from '@nestjs/bullmq';
import { CalendarController } from './calendar.controller';
import { MobileCalendarController } from './mobile-calendar.controller';
import { PublicBookingController } from './public-booking.controller';
import { CalendarService } from './calendar.service';
import { AvailabilityEngine } from './availability.engine';
import { RecurrenceEngine } from './recurrence.engine';
import { BookingEngine } from './booking-engine.service';
import { ConflictDetectionService } from './conflict-detection.service';
import { WorkingCalendarService } from './working-calendar.service';
import { EventBusModule } from '../events/event-bus.module';
import {
  CalendarPlatformConfiguration, CalendarPlatformConfigurationSchema,
  CalendarPlatformConfigurationVersion, CalendarPlatformConfigurationVersionSchema,
  CalendarTenantPreference, CalendarTenantPreferenceSchema,
  CalendarUserPreference, CalendarUserPreferenceSchema,
  SharedCalendarDefinition, SharedCalendarDefinitionSchema,
  SharedCalendarDefinitionVersion, SharedCalendarDefinitionVersionSchema,
  CalendarMembership, CalendarMembershipSchema,
  CalendarShare, CalendarShareSchema,
  CalendarSubscription, CalendarSubscriptionSchema,
  SharedBusinessHoursDefinition, SharedBusinessHoursDefinitionSchema,
  WorkingCalendar, WorkingCalendarSchema,
  WorkingCalendarVersion, WorkingCalendarVersionSchema,
  SharedHolidayCalendar, SharedHolidayCalendarSchema,
  SharedHoliday, SharedHolidaySchema,
  HolidayAssignment, HolidayAssignmentSchema,
  CalendarEvent, CalendarEventSchema,
  CalendarEventParticipant, CalendarEventParticipantSchema,
  CalendarEventResource, CalendarEventResourceSchema,
  CalendarEventVersion, CalendarEventVersionSchema,
  RecurrenceRule, RecurrenceRuleSchema,
  RecurrenceException, RecurrenceExceptionSchema,
  BookingRequest, BookingRequestSchema,
  BookingRule, BookingRuleSchema,
  BookingHold, BookingHoldSchema,
  MeetingDefinition, MeetingDefinitionSchema,
  MeetingAvailabilityPoll, MeetingAvailabilityPollSchema,
  ReminderDefinition, ReminderDefinitionSchema,
  ExternalCalendarConnection, ExternalCalendarConnectionSchema,
  CalendarSyncCursor, CalendarSyncCursorSchema,
  CalendarWebhookSubscription, CalendarWebhookSubscriptionSchema
} from './schemas';
 
@Global()
@Module({
  imports: [
    EventBusModule,
    MongooseModule.forFeature([
      { name: CalendarPlatformConfiguration.name, schema: CalendarPlatformConfigurationSchema },
      { name: CalendarPlatformConfigurationVersion.name, schema: CalendarPlatformConfigurationVersionSchema },
      { name: CalendarTenantPreference.name, schema: CalendarTenantPreferenceSchema },
      { name: CalendarUserPreference.name, schema: CalendarUserPreferenceSchema },
      { name: SharedCalendarDefinition.name, schema: SharedCalendarDefinitionSchema },
      { name: SharedCalendarDefinitionVersion.name, schema: SharedCalendarDefinitionVersionSchema },
      { name: CalendarMembership.name, schema: CalendarMembershipSchema },
      { name: CalendarShare.name, schema: CalendarShareSchema },
      { name: CalendarSubscription.name, schema: CalendarSubscriptionSchema },
      { name: SharedBusinessHoursDefinition.name, schema: SharedBusinessHoursDefinitionSchema },
      { name: WorkingCalendar.name, schema: WorkingCalendarSchema },
      { name: WorkingCalendarVersion.name, schema: WorkingCalendarVersionSchema },
      { name: SharedHolidayCalendar.name, schema: SharedHolidayCalendarSchema },
      { name: SharedHoliday.name, schema: SharedHolidaySchema },
      { name: HolidayAssignment.name, schema: HolidayAssignmentSchema },
      { name: CalendarEvent.name, schema: CalendarEventSchema },
      { name: CalendarEventParticipant.name, schema: CalendarEventParticipantSchema },
      { name: CalendarEventResource.name, schema: CalendarEventResourceSchema },
      { name: CalendarEventVersion.name, schema: CalendarEventVersionSchema },
      { name: RecurrenceRule.name, schema: RecurrenceRuleSchema },
      { name: RecurrenceException.name, schema: RecurrenceExceptionSchema },
      { name: BookingRequest.name, schema: BookingRequestSchema },
      { name: BookingRule.name, schema: BookingRuleSchema },
      { name: BookingHold.name, schema: BookingHoldSchema },
      { name: MeetingDefinition.name, schema: MeetingDefinitionSchema },
      { name: MeetingAvailabilityPoll.name, schema: MeetingAvailabilityPollSchema },
      { name: ReminderDefinition.name, schema: ReminderDefinitionSchema },
      { name: ExternalCalendarConnection.name, schema: ExternalCalendarConnectionSchema },
      { name: CalendarSyncCursor.name, schema: CalendarSyncCursorSchema },
      { name: CalendarWebhookSubscription.name, schema: CalendarWebhookSubscriptionSchema }
    ]),
    BullModule.registerQueue(
      { name: 'calendar.recurrence-generate' },
      { name: 'calendar.reminder-dispatch' },
      { name: 'calendar.booking-hold-expire' },
      { name: 'calendar.sync-pull' },
      { name: 'calendar.ics-import' }
    )
  ],
  controllers: [
    CalendarController,
    MobileCalendarController,
    PublicBookingController
  ],
  providers: [
    CalendarService,
    AvailabilityEngine,
    RecurrenceEngine,
    BookingEngine,
    ConflictDetectionService,
    WorkingCalendarService
  ],
  exports: [
    CalendarService,
    AvailabilityEngine,
    RecurrenceEngine,
    BookingEngine,
    ConflictDetectionService,
    WorkingCalendarService
  ]
})
export class CalendarPlatformModule {}