import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ApiKeysController } from './api-keys.controller'; import { ApiKeysService } from './api-keys.service'; // ORM Entities import { ApiKeyOrmEntity } from '@infrastructure/persistence/typeorm/entities/api-key.orm-entity'; import { UserOrmEntity } from '@infrastructure/persistence/typeorm/entities/user.orm-entity'; // Repositories import { TypeOrmApiKeyRepository } from '@infrastructure/persistence/typeorm/repositories/typeorm-api-key.repository'; import { TypeOrmUserRepository } from '@infrastructure/persistence/typeorm/repositories/typeorm-user.repository'; // Repository tokens import { API_KEY_REPOSITORY } from '@domain/ports/out/api-key.repository'; import { USER_REPOSITORY } from '@domain/ports/out/user.repository'; // Subscriptions (provides SUBSCRIPTION_REPOSITORY) import { SubscriptionsModule } from '../subscriptions/subscriptions.module'; // Feature flag guard needs SubscriptionRepository (injected via SubscriptionsModule) import { FeatureFlagGuard } from '../guards/feature-flag.guard'; @Module({ imports: [TypeOrmModule.forFeature([ApiKeyOrmEntity, UserOrmEntity]), SubscriptionsModule], controllers: [ApiKeysController], providers: [ ApiKeysService, FeatureFlagGuard, { provide: API_KEY_REPOSITORY, useClass: TypeOrmApiKeyRepository, }, { provide: USER_REPOSITORY, useClass: TypeOrmUserRepository, }, ], exports: [ApiKeysService], }) export class ApiKeysModule {}