import { Module } from "@nestjs/common";
import { ControlPlaneModule } from "../control-plane/control-plane.module";
import { TallerParametrosModule } from "../taller-parametros/taller-parametros.module";
import { TenancyModule } from "../tenancy/tenancy.module";
import { TenantReconciliationService } from "./tenant-reconciliation.service";
import { TenantSchemaCheckService } from "./tenant-schema-check.service";
import { TenantsAdminController } from "./tenants-admin.controller";
import { TenantsAdminService } from "./tenants-admin.service";

// Modulo NUEVO, separado de auth/ (decision explicita): auth ya tiene su
// alcance bien definido (login/refresh/gestion de usuarios LOCALES de UN
// tenant). Administrar tenants (alta, verificacion de esquema, activacion)
// es una superficie de PLATAFORMA distinta — mezclarla en auth lo
// sobrecargaria. Reusa las mismas piezas de infraestructura
// (ControlPlaneModule, TenancyModule) que auth ya usa, en vez de duplicar
// nada.
//
// Nunca registra su propio TypeOrmModule.forFeature para Tenant/
// SchemaDeviation: esos repositorios viven DENTRO de
// control-plane/tenant-records.service.ts (ya en la lista blanca del
// escaner de ofensas) — este modulo los consume via ese servicio, nunca
// los inyecta directo. Mismo principio que ya rige auth/ con
// IdentityService.
@Module({
  imports: [ControlPlaneModule, TenancyModule, TallerParametrosModule],
  controllers: [TenantsAdminController],
  providers: [TenantsAdminService, TenantSchemaCheckService, TenantReconciliationService],
})
export class ControlPlaneAdminModule {}
