This commit is contained in:
David Arranz 2024-09-24 18:35:39 +02:00
parent cb1e076a7b
commit d66a175f32
4 changed files with 16 additions and 30 deletions

View File

@ -1,9 +1,11 @@
import { config } from "../../../config";
import { IRepositoryManager, RepositoryManager } from "../domain"; import { IRepositoryManager, RepositoryManager } from "../domain";
import { ISequelizeAdapter, createSequelizeAdapter } from "./sequelize"; import { ISequelizeAdapter, createSequelizeAdapter } from "./sequelize";
export interface IContext { export interface IContext {
adapter: ISequelizeAdapter; adapter: ISequelizeAdapter;
repositoryManager: IRepositoryManager; repositoryManager: IRepositoryManager;
defaults: Record<string, any>;
} }
export class ContextFactory { export class ContextFactory {
@ -12,6 +14,7 @@ export class ContextFactory {
public static getInstance(): IContext { public static getInstance(): IContext {
if (!ContextFactory.instance) { if (!ContextFactory.instance) {
ContextFactory.instance = new ContextFactory({ ContextFactory.instance = new ContextFactory({
defaults: config.defaults, // Agregamos los valores específicos de ProfileContext
adapter: createSequelizeAdapter(), adapter: createSequelizeAdapter(),
repositoryManager: RepositoryManager.getInstance(), repositoryManager: RepositoryManager.getInstance(),
}); });

View File

@ -1,9 +1,6 @@
import { ContextFactory, IContext } from "@/contexts/common/infrastructure"; import { ContextFactory, IContext } from "@/contexts/common/infrastructure";
import { config } from "../../../config";
export interface IProfileContext extends IContext { export interface IProfileContext extends IContext {}
defaults: Record<string, any>;
}
export class ProfileContext extends ContextFactory { export class ProfileContext extends ContextFactory {
protected static instance: ProfileContext | null = null; protected static instance: ProfileContext | null = null;
@ -13,7 +10,6 @@ export class ProfileContext extends ContextFactory {
try { try {
ProfileContext.instance = new ProfileContext({ ProfileContext.instance = new ProfileContext({
...ContextFactory.getInstance(), // Reutilizamos el contexto de la clase base ...ContextFactory.getInstance(), // Reutilizamos el contexto de la clase base
defaults: config.defaults, // Agregamos los valores específicos de ProfileContext
}); });
} catch (error: unknown) { } catch (error: unknown) {
throw new Error(`Error initializing ProfileContext: ${(error as Error).message}`); throw new Error(`Error initializing ProfileContext: ${(error as Error).message}`);

View File

@ -1,6 +1,4 @@
import { RepositoryManager } from "@/contexts/common/domain"; import { ContextFactory, IContext } from "@/contexts/common/infrastructure";
import { IContext } from "@/contexts/common/infrastructure";
import { createSequelizeAdapter } from "@/contexts/common/infrastructure/sequelize";
import { Dealer, IQuoteReferenceGeneratorService } from "../domain"; import { Dealer, IQuoteReferenceGeneratorService } from "../domain";
export interface ISalesContext extends IContext { export interface ISalesContext extends IContext {
@ -10,23 +8,24 @@ export interface ISalesContext extends IContext {
dealer?: Dealer; dealer?: Dealer;
} }
export class SalesContext { export class SalesContext extends ContextFactory {
private static instance: SalesContext | null = null; protected static instance: SalesContext | null = null;
public static getInstance(): ISalesContext { public static getInstance(): ISalesContext {
if (!SalesContext.instance) { if (!SalesContext.instance) {
SalesContext.instance = new SalesContext({ try {
adapter: createSequelizeAdapter(), SalesContext.instance = new SalesContext({
repositoryManager: RepositoryManager.getInstance(), ...ContextFactory.getInstance(), // Reutilizamos el contexto de la clase base
}); });
} catch (error: unknown) {
throw new Error(`Error initializing SalesContext: ${(error as Error).message}`);
}
} }
return SalesContext.instance.context; return SalesContext.instance.context;
} }
private context: ISalesContext;
private constructor(context: ISalesContext) { private constructor(context: ISalesContext) {
this.context = context; super(context); // Llamamos al constructor de la clase base
} }
} }

View File

@ -8,7 +8,6 @@ import {
import { createGetProfileLogoController } from "@/contexts/profile/infrastructure/express/controllers/getProfileLogo"; import { createGetProfileLogoController } from "@/contexts/profile/infrastructure/express/controllers/getProfileLogo";
import { createUploadProfileLogoController } from "@/contexts/profile/infrastructure/express/controllers/uploadProfileLogo"; import { createUploadProfileLogoController } from "@/contexts/profile/infrastructure/express/controllers/uploadProfileLogo";
import { NextFunction, Request, Response, Router } from "express"; import { NextFunction, Request, Response, Router } from "express";
import multer from "multer";
import { createMulterMiddleware } from "../upload.middleware"; import { createMulterMiddleware } from "../upload.middleware";
const uploadProfileLogo = createMulterMiddleware({ const uploadProfileLogo = createMulterMiddleware({
@ -34,18 +33,7 @@ export const profileRouter = (appRouter: Router) => {
profileRoutes.post( profileRoutes.post(
"/logo", "/logo",
checkUser, checkUser,
(req, res, next) => { uploadProfileLogo.single("logo"),
uploadProfileLogo.single("logo")(req, res, (err) => {
if (err instanceof multer.MulterError) {
// Error relacionado con Multer (e.g. tamaño del archivo excedido)
return res.status(400).json({ error: err.message });
} else if (err) {
// Otro tipo de error
return res.status(500).json({ error: "Error uploading the file" });
}
next();
});
},
handleRequest(createUploadProfileLogoController) handleRequest(createUploadProfileLogoController)
); );