import type { RequestHandler } from "express"; import type { Sequelize } from "sequelize"; import { CompanyUseCases } from "./application/company.use-cases"; import { CompanyInputMapper } from "./application/company-input.mapper"; import { registerCompanyRoutes } from "./infrastructure/http/company.routes"; import { initializeCompanyModels } from "./infrastructure/persistence/company.model"; import { CompanyPersistenceMapper } from "./infrastructure/persistence/company-persistence.mapper"; import { migrateCompanies } from "./infrastructure/persistence/migrate-companies"; import { SequelizeCompanyRepository } from "./infrastructure/persistence/sequelize-company.repository"; export async function createCompanyModule(database: Sequelize, authenticate: RequestHandler) { await migrateCompanies(database); initializeCompanyModels(database); const useCases = new CompanyUseCases( new SequelizeCompanyRepository(database, new CompanyPersistenceMapper()), new CompanyInputMapper() ); return { register: (app: Parameters[0]) => registerCompanyRoutes(app, useCases, authenticate), }; }