31 lines
1.4 KiB
TypeScript

import getCustomerInvoiceDi from "@/feature/core/customer-invoice/data/module/customer-invoice.di";
import { customerInvoiceModuleKey } from "@/feature/core/customer-invoice/invoice.module-key";
import { customerKey } from "@/feature/core/customer/customer-key";
import getCustomerDi from "@/feature/core/customer/data/module/customer-di";
import getInvoiceDi from "@/feature/core/invoice/data/module/invoice.di";
import { invoiceModuleKey } from "@/feature/core/invoice/invoice.module-key";
import { DependencyContainer } from "tsyringe";
import { summaryInfoModuleKey } from "@/feature/core/summary-info/domain/summary-info.module-key";
import getSummaryInfoDi from "@/feature/core/summary-info/data/module/summary-info.di";
import { revenueModuleKey } from "@/feature/core/revenue/domain/revenue.module-key";
import getRevenueDi from "@/feature/core/revenue/data/module/revenue.di";
const memoizedDis: Record<string, DependencyContainer> = {};
export default function serverDi(module: string): DependencyContainer {
if (memoizedDis[module]) return memoizedDis[module];
const getDi = {
[customerKey]: getCustomerDi,
[customerInvoiceModuleKey]: getCustomerInvoiceDi,
[invoiceModuleKey]: getInvoiceDi,
[summaryInfoModuleKey]: getSummaryInfoDi,
[revenueModuleKey]: getRevenueDi,
}[module];
if (!getDi) throw new Error(`Server Di didn't found for module: ${module}`);
const di = getDi();
memoizedDis[module] = di;
return di;
}