import { Result, UniqueID } from "@common/domain"; import { TabContext } from "@contexts/auth/domain"; import { TabContextModel } from "../sequelize"; import { ITabContextMapper } from "./tab-context-mapper.interface"; export class TabContextMapper implements ITabContextMapper { toDomain(entity: TabContextModel): Result { if (!entity) { return Result.fail(new Error("Entity not found")); } // Crear Value Objects asegurando que sean válidos const uniqueIdResult = UniqueID.create(entity.id); const tabIdResult = UniqueID.create(entity.tab_id); const userIdResult = UniqueID.create(entity.user_id); const companyIdResult = UniqueID.create(entity.company_id, false); const brachIdResult = UniqueID.create(entity.branch_id, false); // Validar que no haya errores en la creación de los Value Objects const okOrError = Result.combine([ uniqueIdResult, tabIdResult, userIdResult, companyIdResult, brachIdResult, ]); if (okOrError.isFailure) { return Result.fail(okOrError.error.message); } // Crear el agregado de dominio return TabContext.create( { tabId: tabIdResult.data!, userId: userIdResult.data!, companyId: companyIdResult.data, branchId: brachIdResult.data, }, uniqueIdResult.data! ); } toPersistence(tabContext: TabContext): TabContextModel { return tabContext.toPersistenceData(); } } export const createTabContextMapper = (): ITabContextMapper => new TabContextMapper();