import { forwardRef, Global, Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { Role } from '../roles/role.entity';
import { AuthModule } from '../auth/auth.module';

/**
 * Global because PermissionsGuard - which every admin controller applies -
 * resolves the caller's permissions through UsersService.
 *
 * AuthModule needs UsersService and UsersController needs AuthService
 * (password hashing + session revocation), hence the forward reference.
 */
@Global()
@Module({
  imports: [TypeOrmModule.forFeature([User, Role]), forwardRef(() => AuthModule)],
  providers: [UsersService],
  controllers: [UsersController],
  exports: [UsersService],
})
export class UsersModule {}
