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

67 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-05-02 21:43:51 +00:00
import { UniqueID } from "@/core/common/domain";
2025-05-04 20:06:57 +00:00
import {
type ISequelizeMapper,
type MapperParamsType,
SequelizeMapper,
} from "@/core/common/infrastructure";
2025-05-09 10:45:32 +00:00
import { Result } from "@repo/rdx-utils";
2025-05-02 21:43:51 +00:00
import { TabContext } from "../../domain";
2025-02-21 10:06:27 +00:00
import { TabContextCreationAttributes, TabContextModel } from "../sequelize";
2025-02-04 14:58:33 +00:00
2025-02-21 10:06:27 +00:00
export interface ITabContextMapper
extends ISequelizeMapper<TabContextModel, TabContextCreationAttributes, TabContext> {}
2025-02-04 14:58:33 +00:00
2025-02-21 10:06:27 +00:00
export class TabContextMapper
extends SequelizeMapper<TabContextModel, TabContextCreationAttributes, TabContext>
implements ITabContextMapper
{
public mapToDomain(
source: TabContextModel,
params?: MapperParamsType
): Result<TabContext, Error> {
2025-02-04 14:58:33 +00:00
// Crear Value Objects asegurando que sean válidos
2025-02-21 10:06:27 +00:00
const uniqueIdResult = UniqueID.create(source.id);
const tabIdResult = UniqueID.create(source.tab_id);
const userIdResult = UniqueID.create(source.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-21 10:06:27 +00:00
public mapToPersistence(
source: TabContext,
params?: MapperParamsType
2025-05-04 20:06:57 +00:00
): TabContextCreationAttributes {
return {
2025-02-21 10:06:27 +00:00
id: source.id.toString(),
tab_id: source.tabId.toString(),
user_id: source.userId.toString(),
2025-05-04 20:06:57 +00:00
};
2025-02-04 14:58:33 +00:00
}
}
2025-02-15 21:30:12 +00:00
const tabContextMapper: ITabContextMapper = new TabContextMapper();
export { tabContextMapper };