Uecko_ERP/apps/server/src/contexts/auth/infraestructure/mappers/tab-context.mapper.ts

54 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-02-04 14:58:33 +00:00
import { Result, UniqueID } from "@common/domain";
2025-02-04 18:25:10 +00:00
import { TabContext } from "@contexts/auth/domain";
2025-02-05 20:40:59 +00:00
import { TabContextModel } from "../sequelize";
2025-02-04 14:58:33 +00:00
2025-02-15 21:30:12 +00:00
export interface ITabContextMapper {
toDomain(entity: TabContextModel): Result<TabContext, Error>;
toPersistence(aggregate: TabContext): TabContextModel;
}
class TabContextMapper implements ITabContextMapper {
2025-02-05 20:40:59 +00:00
toDomain(entity: TabContextModel): Result<TabContext, Error> {
2025-02-04 14:58:33 +00:00
if (!entity) {
return Result.fail(new Error("Entity not found"));
}
// Crear Value Objects asegurando que sean válidos
const uniqueIdResult = UniqueID.create(entity.id);
2025-02-04 18:25:10 +00:00
const tabIdResult = UniqueID.create(entity.tab_id);
const userIdResult = UniqueID.create(entity.user_id);
2025-02-15 21:30:12 +00:00
//const companyIdResult = UniqueID.create(entity.company_id, false);
//const brachIdResult = UniqueID.create(entity.branch_id, false);
2025-02-04 14:58:33 +00:00
// Validar que no haya errores en la creación de los Value Objects
const okOrError = Result.combine([
uniqueIdResult,
2025-02-04 18:25:10 +00:00
tabIdResult,
userIdResult,
2025-02-15 21:30:12 +00:00
//companyIdResult,
//brachIdResult,
2025-02-04 14:58:33 +00:00
]);
if (okOrError.isFailure) {
return Result.fail(okOrError.error.message);
}
// Crear el agregado de dominio
return TabContext.create(
{
2025-02-04 18:25:10 +00:00
tabId: tabIdResult.data!,
userId: userIdResult.data!,
2025-02-15 21:30:12 +00:00
//companyId: companyIdResult.data,
//branchId: brachIdResult.data,
2025-02-04 14:58:33 +00:00
},
uniqueIdResult.data!
);
}
2025-02-05 20:40:59 +00:00
toPersistence(tabContext: TabContext): TabContextModel {
2025-02-04 14:58:33 +00:00
return tabContext.toPersistenceData();
}
}
2025-02-15 21:30:12 +00:00
const tabContextMapper: ITabContextMapper = new TabContextMapper();
export { tabContextMapper };