import { forwardRef, HttpModule, Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { TempUserModule } from '../temp-user/temp-user.module';
import { MailerModule } from '../mailer/mailer.module';
import { UsersModule } from '../users/users.module';
import { Structure, StructureSchema } from './schemas/structure.schema';
import { StructuresController } from './structures.controller';
import { StructuresService } from './services/structures.service';
import { ApticStructuresService } from './services/aptic-structures.service';
import { StructureTypeController } from './structure-type/structure-type.controller';
import { StructureTypeService } from './structure-type/structure-type.service';
import { StructureType, StructureTypeSchema } from './structure-type/structure-type.schema';
import { CategoriesModule } from '../categories/categories.module';
import { StructuresSearchService } from './services/structures-search.service';
import { SearchModule } from '../search/search.module';

@Module({
  imports: [
    MongooseModule.forFeature([
      { name: Structure.name, schema: StructureSchema },
      { name: StructureType.name, schema: StructureTypeSchema },
    ]),
    HttpModule,
    MailerModule,
    forwardRef(() => UsersModule),
    CategoriesModule,
    TempUserModule,
    SearchModule,
  ],
  controllers: [StructuresController, StructureTypeController],
  exports: [StructuresService, StructureTypeService],
  providers: [StructuresSearchService, StructuresService, StructureTypeService, ApticStructuresService],
})
export class StructuresModule {}