24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
|
|
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<typeof registerCompanyRoutes>[0]) =>
|
||
|
|
registerCompanyRoutes(app, useCases, authenticate),
|
||
|
|
};
|
||
|
|
}
|