import { Module } from "@nestjs/common"
import { ConfigModule } from "@nestjs/config"
import { TypeOrmConfigService } from "../type-orm-config.service"
import { TypeOrmModule } from "@nestjs/typeorm"
import { DataSource, DataSourceOptions } from "typeorm"
import typeorm from "../../config/typeorm"
import appConfig from "../../config/app.config"
import { AdminSeedModule } from "./admin/admin-seed.module"
import { RoleSeedModule } from "./role/role-seed.module"
import { CategorySeedModule } from "./category/category-seed.module"
import { CompanyModule } from "../../modules/company/company.module"
import { CompanySeedModule } from "./company/company-seed.module"
import { PermissionsSeedModule } from "./permissions/permissions-seed.module"
import { FlagSeedModule } from "./flag/flag-seed.module"

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [typeorm, appConfig],
      envFilePath: [".env"],
    }),
    TypeOrmModule.forRootAsync({
      useClass: TypeOrmConfigService,
      dataSourceFactory: async (options: DataSourceOptions) => {
        return new DataSource(options).initialize()
      },
    }),
    FlagSeedModule,
    CompanyModule,
    RoleSeedModule,
    CategorySeedModule,
    CompanySeedModule,
    PermissionsSeedModule,
    AdminSeedModule,
  ],
})
export class SeedModule {}
