FactuGES_ERP/apps/server/src/contexts/invoices/intrastructure/InvoicingContext.ts
2025-04-01 16:26:15 +02:00

44 lines
1.1 KiB
TypeScript

import {
IRepositoryManager,
RepositoryManager,
} from "@/contexts/common/domain";
import {
ISequelizeAdapter,
createSequelizeAdapter,
} from "@/contexts/common/infrastructure/sequelize";
import { InvoicingServices, TInvoicingServices } from "../application";
export interface IInvoicingContext {
adapter: ISequelizeAdapter;
repositoryManager: IRepositoryManager;
services: TInvoicingServices;
}
class InvoicingContext {
private static instance: InvoicingContext | null = null;
public static getInstance(): InvoicingContext {
if (!InvoicingContext.instance) {
InvoicingContext.instance = new InvoicingContext();
}
return InvoicingContext.instance;
}
private context: IInvoicingContext;
private constructor() {
this.context = {
adapter: createSequelizeAdapter(),
repositoryManager: RepositoryManager.getInstance(),
services: InvoicingServices,
};
}
public getContext(): IInvoicingContext {
return this.context;
}
}
const sharedInvoicingContext = InvoicingContext.getInstance().getContext();
export { sharedInvoicingContext };