44 lines
1.1 KiB
TypeScript
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 };
|