import { forwardRef, HttpModule, Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { UsersService } from './services/users.service';
import { UsersController } from './controllers/users.controller';
import { User, UserSchema } from './schemas/user.schema';
import { MailerModule } from '../mailer/mailer.module';
import { StructuresModule } from '../structures/structures.module';
import { TempUserModule } from '../temp-user/temp-user.module';
import { JobsController } from './controllers/jobs.controller';
import { EmployerController } from './controllers/employer.controller';
import { EmployerService } from './services/employer.service';
import { JobsService } from './services/jobs.service';
import { Job, JobSchema } from './schemas/job.schema';
import { Employer, EmployerSchema } from './schemas/employer.schema';
import { EmployerSearchService } from './services/employer-search.service';
import { SearchModule } from '../search/search.module';

@Module({
  imports: [
    MongooseModule.forFeature([
      { name: User.name, schema: UserSchema },
      { name: Job.name, schema: JobSchema },
      { name: Employer.name, schema: EmployerSchema },
    ]),
    MailerModule,
    forwardRef(() => StructuresModule),
    HttpModule,
    TempUserModule,
    SearchModule,
  ],
  providers: [UsersService, JobsService, EmployerSearchService, EmployerService],
  exports: [UsersService, JobsService, EmployerService],
  controllers: [UsersController, JobsController, EmployerController],
})
export class UsersModule {}