85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
import { type ModuleParams, buildCatalogs, buildTransactionManager } from "@erp/core/api";
|
|
|
|
import {
|
|
type GetCustomerByIdUseCase,
|
|
type ListCustomersUseCase,
|
|
buildCustomerFinder,
|
|
buildCustomerSnapshotBuilders,
|
|
buildGetCustomerByIdUseCase,
|
|
buildListCustomersUseCase,
|
|
} from "../../application";
|
|
|
|
import { buildCustomerPersistenceMappers } from "./customer-persistence-mappers.di";
|
|
import { buildCustomerRepository } from "./customer-repositories.di";
|
|
|
|
export type CustomersInternalDeps = {
|
|
useCases: {
|
|
listCustomers: () => ListCustomersUseCase;
|
|
getCustomerById: () => GetCustomerByIdUseCase;
|
|
//reportCustomer: () => ReportCustomerUseCase;
|
|
//createCustomer: () => CreateCustomerUseCase;
|
|
|
|
/*
|
|
updateCustomer: () => UpdateCustomerUseCase;
|
|
deleteCustomer: () => DeleteCustomerUseCase;
|
|
issueCustomer: () => IssueCustomerUseCase;
|
|
changeStatusCustomer: () => ChangeStatusCustomerUseCase;*/
|
|
};
|
|
};
|
|
|
|
export function buildCustomersDependencies(params: ModuleParams): CustomersInternalDeps {
|
|
const { database } = params;
|
|
|
|
// Infrastructure
|
|
const transactionManager = buildTransactionManager(database);
|
|
const catalogs = buildCatalogs();
|
|
const persistenceMappers = buildCustomerPersistenceMappers();
|
|
|
|
const repository = buildCustomerRepository({ database, mappers: persistenceMappers });
|
|
//const numberService = buildCustomerNumberGenerator();
|
|
|
|
// Application helpers
|
|
//const inputMappers = buildCustomerInputMappers(catalogs);
|
|
const finder = buildCustomerFinder(repository);
|
|
//const creator = buildCustomerCreator({ numberService, repository });
|
|
|
|
const snapshotBuilders = buildCustomerSnapshotBuilders();
|
|
//const documentGeneratorPipeline = buildCustomerDocumentService(params);
|
|
|
|
// Internal use cases (factories)
|
|
return {
|
|
useCases: {
|
|
listCustomers: () =>
|
|
buildListCustomersUseCase({
|
|
finder,
|
|
summarySnapshotBuilder: snapshotBuilders.summary,
|
|
transactionManager,
|
|
}),
|
|
|
|
getCustomerById: () =>
|
|
buildGetCustomerByIdUseCase({
|
|
finder,
|
|
fullSnapshotBuilder: snapshotBuilders.full,
|
|
transactionManager,
|
|
}),
|
|
|
|
/*reportCustomer: () =>
|
|
buildReportCustomerUseCase({
|
|
finder,
|
|
fullSnapshotBuilder: snapshotBuilders.full,
|
|
reportSnapshotBuilder: snapshotBuilders.report,
|
|
documentService: documentGeneratorPipeline,
|
|
transactionManager,
|
|
}),
|
|
|
|
createCustomer: () =>
|
|
buildCreateCustomerUseCase({
|
|
creator,
|
|
dtoMapper: inputMappers.createInputMapper,
|
|
fullSnapshotBuilder: snapshotBuilders.full,
|
|
transactionManager,
|
|
}),*/
|
|
},
|
|
};
|
|
}
|