"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrismaUserMapper = void 0; const user_entity_1 = require("../../domain/entities/user.entity"); const role_entity_1 = require("../../domain/entities/role.entity"); const permission_entity_1 = require("../../domain/entities/permission.entity"); class PrismaUserMapper { static toDomain(model) { const roles = (model.userRoles || model.roles || []).map((ur) => { const r = ur.role || ur.role; const permissions = (r?.permissions || []).map((rp) => permission_entity_1.PermissionData.restore({ id: rp.permission.id, name: rp.permission.name, description: rp.permission.description, createdAt: rp.permission.createdAt, updatedAt: rp.permission.updatedAt, })); return role_entity_1.RoleData.restore({ id: r.id, code: r.code, name: r.name, description: r.description, permissions, createdAt: r.createdAt, updatedAt: r.updatedAt, }); }); const permissions = (model.userPermissions || model.permissions || []).map((up) => permission_entity_1.PermissionData.restore({ id: up.permission?.id || up.id, name: up.permission?.name || up.name, description: up.permission?.description || up.description, createdAt: up.permission?.createdAt || up.createdAt, updatedAt: up.permission?.updatedAt || up.updatedAt, })); return user_entity_1.UserData.restore({ id: model.id, authentikId: model.authentikUserId || model.authentikId || null, username: model.username || model.name || model.username, email: model.email, roles, permissions, isActive: model.isActive ?? true, deletedAt: model.deletedAt || null, lastSeenAt: model.lastSeenAt || null, storageQuota: model.storageQuota !== undefined && model.storageQuota !== null ? Number(model.storageQuota) : undefined, storageUsed: model.storageUsed !== undefined && model.storageUsed !== null ? Number(model.storageUsed) : undefined, }); } static toPersistence(userData) { return { id: userData.id, authentikUserId: userData.authentikUserId || userData.authentikId, authentikId: userData.authentikId, username: userData.username, email: userData.email, isActive: userData.isActive, deletedAt: userData.deletedAt, lastSeenAt: userData.lastSeenAt, lastSyncedAt: userData.lastSyncedAt, syncStatus: userData.syncStatus, storageQuota: userData.storageQuota, storageUsed: userData.storageUsed, }; } } exports.PrismaUserMapper = PrismaUserMapper; //# sourceMappingURL=prisma-user.mapper.js.map