import { Logger, Module, OnModuleInit } from '@nestjs/common'; import { ModuleRegistryModule } from '../module-registry/module-registry.module'; import { ModuleRegistryService } from '../module-registry/module-registry.service'; import { DomaincheckController } from './domaincheck.controller'; import { seedDomaincheckModule } from './domaincheck.seed'; import { DomaincheckService } from './domaincheck.service'; /** * NestJS module for the Domaincheck feature. * * Provides DNS-based domain availability checking across TLD variants. * Seeds itself into the module registry on application startup via * OnModuleInit lifecycle hook. * * Imports ModuleRegistryModule for guard access (UseModule decorator) * and seed function. PrismaModule is global, no explicit import needed. */ @Module({ imports: [ModuleRegistryModule], controllers: [DomaincheckController], providers: [DomaincheckService], }) export class DomaincheckModule implements OnModuleInit { private readonly logger = new Logger(DomaincheckModule.name); constructor( private readonly moduleRegistryService: ModuleRegistryService, ) {} async onModuleInit(): Promise { try { await seedDomaincheckModule(this.moduleRegistryService); this.logger.log('Domaincheck module seeded in registry'); } catch (error) { this.logger.error('Failed to seed domaincheck module', error); } } }