import { forwardRef, Global, Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { RoleEntity } from './entities/role.entity';
import { RoleService } from './role.service';
import { UsersModule } from 'modules/user/users.module';
import { RoleController } from './role.controller';
import { ClientModule } from 'modules/client/client.module';
import { PermissionModule } from '../permissions/permission.module';
import { UserPermissionOverrideEntity } from './entities/user-permission-override.entity';
import { RolePermissionStateEntity } from './entities/role-permission-state.entity';

@Global()
@Module({
  imports: [
    TypeOrmModule.forFeature([RoleEntity, UserPermissionOverrideEntity, RolePermissionStateEntity]),
    forwardRef(() => ClientModule),
    forwardRef(() => UsersModule),
    forwardRef(() => PermissionModule),
  ],
  controllers: [RoleController],
  providers: [RoleService],
  exports: [RoleService],
})
export class RoleModule {}
