import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common';
import { AuthModule } from './common/auth/auth.module';
import { CorrelationIdMiddleware } from './common/http/correlation-id.middleware';
import { DatabaseModule } from './infrastructure/database/database.module';
import { OutboxModule } from './infrastructure/outbox/outbox.module';
import { IdempotencyModule } from './common/idempotency/idempotency.module';
import { RealtimeModule as InfrastructureRealtimeModule } from './infrastructure/realtime/realtime.module';
import { AuditModule } from './modules/audit/audit.module';
import { HealthModule } from './modules/health/health.module';
import { IdentityModule } from './modules/identity/identity.module';
import { OrganizationsModule } from './modules/organizations/organizations.module';
import { PlacesModule } from './modules/organizations/places.module';
import { EmployeesModule } from './modules/employees/employees.module';
import { MembershipsModule } from './modules/memberships/memberships.module';
import { RolesModule } from './modules/roles/roles.module';
import { MenuModule } from './modules/menu/menu.module';
import { RecipesModule } from './modules/recipes/recipes.module';
import { KnowledgeModule } from './modules/knowledge/knowledge.module';
import { TrainingModule } from './modules/training/training.module';
import { BriefingsModule } from './modules/briefings/briefings.module';
import { TodayModule } from './modules/today/today.module';
import { GuestsModule } from './modules/guests/guests.module';
import { FloorModule } from './modules/floor/floor.module';
import { ReservationsModule } from './modules/reservations/reservations.module';
import { ServiceModule } from './modules/service/service.module';
import { OrdersModule } from './modules/orders/orders.module';
import { KitchenModule } from './modules/kitchen/kitchen.module';
import { BillingModule } from './modules/billing/billing.module';
import { PaymentsModule } from './modules/payments/payments.module';
import { CashModule } from './modules/cash/cash.module';
import { FiscalModule } from './modules/fiscal/fiscal.module';
import { InventoryModule } from './modules/inventory/inventory.module';
import { PurchasingModule } from './modules/purchasing/purchasing.module';
import { CostingModule } from './modules/costing/costing.module';
import { OperationsModule } from './modules/operations/operations.module';
import { IncidentsModule } from './modules/incidents/incidents.module';
import { EquipmentModule } from './modules/equipment/equipment.module';
import { SafetyModule } from './modules/safety/safety.module';
import { ReportingModule } from './modules/reporting/reporting.module';
import { SyncModule } from './modules/sync/sync.module';
import { RealtimeModule } from './modules/realtime/realtime.module';
import { FilesModule } from './modules/files/files.module';
import { ImportsModule } from './modules/imports/imports.module';
import { ExportsModule } from './modules/exports/exports.module';
import { NotificationsModule } from './modules/notifications/notifications.module';
import { PublicBookingModule } from './modules/public-booking/public-booking.module';
import { WordPressModule } from './modules/wordpress/wordpress.module';
import { ReservationIntegrationsModule } from './modules/reservation-integrations/reservation-integrations.module';
import { AccountingModule } from './modules/accounting/accounting.module';
import { ExternalIntegrationsModule } from './modules/external-integrations/external-integrations.module';
import { CommercialModule } from './modules/commercial/commercial.module';
import { ProductionConfigModule } from './common/config/production-config.module';
import { SecurityModule } from './common/security/security.module';
import { RequestSecurityMiddleware } from './common/security/request-security.middleware';
import { ObservabilityModule } from './common/observability/observability.module';
import { ObservabilityMiddleware } from './common/observability/observability.middleware';
import { SecurityAdminModule } from './modules/security-admin/security-admin.module';
import { ProductionReadinessModule } from './modules/production-readiness/production-readiness.module';
import { BusinessTimeModule } from './common/time/business-time.module';
import { AiModule } from './modules/ai/ai.module';
import { ObservabilityAdminModule } from './modules/observability/observability.module';
import { IntelligenceModule } from './common/intelligence/intelligence.module';
import { SyntheticOperationsModule } from './common/synthetic-operations/synthetic-operations.module';
import { SyntheticOperationsAdminModule } from './modules/synthetic-operations/synthetic-operations.module';
import { IntelligenceAdminModule } from './modules/intelligence/intelligence.module';
@Module({
imports: [
BusinessTimeModule,
AiModule,
ObservabilityAdminModule,
IntelligenceModule,
SyntheticOperationsModule,
SyntheticOperationsAdminModule,
IntelligenceAdminModule,
ProductionConfigModule,
SecurityModule,
ObservabilityModule,
SecurityAdminModule,
ProductionReadinessModule,
CommercialModule,
DatabaseModule,
OutboxModule,
IdempotencyModule,
InfrastructureRealtimeModule,
AuditModule,
AuthModule,
HealthModule,
IdentityModule,
OrganizationsModule,
PlacesModule,
EmployeesModule,
MembershipsModule,
RolesModule,
MenuModule,
RecipesModule,
KnowledgeModule,
TrainingModule,
BriefingsModule,
TodayModule,
GuestsModule,
FloorModule,
ReservationsModule,
ServiceModule,
OrdersModule,
KitchenModule,
BillingModule,
PaymentsModule,
CashModule,
FiscalModule,
InventoryModule,
PurchasingModule,
CostingModule,
OperationsModule,
IncidentsModule,
EquipmentModule,
SafetyModule,
ReportingModule,
SyncModule,
RealtimeModule,
FilesModule,
ImportsModule,
ExportsModule,
NotificationsModule,
PublicBookingModule,
WordPressModule,
ReservationIntegrationsModule,
AccountingModule,
ExternalIntegrationsModule,
],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer): void {
consumer.apply(CorrelationIdMiddleware,RequestSecurityMiddleware,ObservabilityMiddleware).forRoutes({ path: '{*path}', method: RequestMethod.ALL });
}
}
