import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

import { ChecklistTemplate } from './entities/checklist-template.entity';
import { ChecklistTemplateItem } from './entities/checklist-template-item.entity';
import { AuditChecklist } from './entities/audit-checklist.entity';
import { AuditChecklistItem } from './entities/audit-checklist-item.entity';
import { ChecklistItemHistory } from './entities/checklist-item-history.entity';

// External entities referenced via relations + service queries - same
// approach as audit-schedules.module.ts's own external-entity imports.
import { AuditScheduleRow } from '../audit-schedules/entities/audit-schedule-row.entity';
import { Company } from '../companies/entities/company.entity';
import { Standard } from '../standards/entities/standard.entity';
import { User } from '../user/entities/user.entity';

import { ChecklistsService } from './services/checklists.service';
import { ChecklistStorageService } from './services/checklist-storage.service';
import { ChecklistPdfService } from './services/checklist-pdf.service';
import { ChecklistsController } from './checklists.controller';
import { ClientChecklistsController } from './client-checklists.controller';

import { NotificationsModule } from '../notifications/notifications.module';
import { MailsModule } from '../mails/mails.module';

@Module({
  imports: [
    TypeOrmModule.forFeature(
      [
        ChecklistTemplate,
        ChecklistTemplateItem,
        AuditChecklist,
        AuditChecklistItem,
        ChecklistItemHistory,
        AuditScheduleRow,
        Company,
        Standard,
        User,
      ],
      'scheme_dbs',
    ),
    NotificationsModule,
    MailsModule,
  ],
  controllers: [ChecklistsController, ClientChecklistsController],
  providers: [ChecklistsService, ChecklistStorageService, ChecklistPdfService],
  exports: [ChecklistsService],
})
export class ChecklistsModule {}
