Fix Build Error
Deploy / deploy (push) Successful in 47s

This commit is contained in:
Rayyan Syahbani Hermanto
2026-09-07 23:44:40 +07:00
parent 06f4fd06ff
commit 8a278281ce
38 changed files with 927 additions and 427 deletions
@@ -2,26 +2,64 @@
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) {
if (!model) {
return null;
}
return user_entity_1.User.restore({
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,
name: model.name,
authentikId: model.authentikUserId || model.authentikId || null,
username: model.username || model.name || model.username,
email: model.email,
password: model.password,
metadata: model.metadata,
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(user) {
static toPersistence(userData) {
return {
id: user.id,
name: user.name,
email: user.email,
password: user.password,
metadata: user.metadata ?? {},
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,
};
}
}
@@ -1 +1 @@
{"version":3,"file":"prisma-user.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-user.mapper.ts"],"names":[],"mappings":";;;AAAA,mEAAyD;AAEzD,MAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,kBAAI,CAAC,OAAO,CAAC;YAClB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAU;QAC7B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;SAC9B,CAAC;IACJ,CAAC;CACF;AAxBD,4CAwBC"}
{"version":3,"file":"prisma-user.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-user.mapper.ts"],"names":[],"mappings":"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"}
@@ -18,54 +18,83 @@ let PrismaUserRepository = class PrismaUserRepository {
constructor(prisma) {
this.prisma = prisma;
}
async findById(id) {
const user = await this.prisma.user.findUnique({
where: { id },
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(user);
}
async findByEmail(email) {
const user = await this.prisma.user.findUnique({
where: { email },
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(user);
}
async findAll() {
const users = await this.prisma.user.findMany({
where: { deleted_at: null },
orderBy: { created_at: 'desc' },
});
return users.map(u => prisma_user_mapper_1.PrismaUserMapper.toDomain(u));
}
async create(user) {
const created = await this.prisma.user.create({
data: prisma_user_mapper_1.PrismaUserMapper.toPersistence(user),
});
const created = await this.prisma.user.create({ data: prisma_user_mapper_1.PrismaUserMapper.toPersistence(user) });
return prisma_user_mapper_1.PrismaUserMapper.toDomain(created);
}
async existsById(userId) {
const cnt = await this.prisma.user.count({ where: { id: userId } });
return cnt > 0;
}
async existByEmail(userEmail) {
const u = await this.prisma.user.findFirst({ where: { email: userEmail } });
return !!u;
}
async getById(userId) {
const row = await this.prisma.user.findUnique({ where: { id: userId }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
if (!row)
throw new common_1.NotFoundException('User not found.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(row);
}
async getByEmail(userEmail) {
const row = await this.prisma.user.findUnique({ where: { email: userEmail }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
if (!row)
throw new common_1.NotFoundException('User not found.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(row);
}
async findByAuthentikId(authentikId) {
const row = await this.prisma.user.findFirst({ where: { OR: [{ authentikId }, { authentikUserId: authentikId }] }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
if (!row)
return null;
return prisma_user_mapper_1.PrismaUserMapper.toDomain(row);
}
async update(user) {
const updated = await this.prisma.user.update({
where: {
id: user.id,
},
data: prisma_user_mapper_1.PrismaUserMapper.toPersistence(user),
});
const updated = await this.prisma.user.update({ where: { id: user.id }, data: prisma_user_mapper_1.PrismaUserMapper.toPersistence(user), include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async delete(id) {
const user = await this.prisma.user.update({
where: { id },
data: { deleted_at: new Date() },
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(user);
}
async existsByEmail(email, excludeId) {
const where = { email };
if (excludeId) {
where.id = { not: excludeId };
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 25;
const where = {};
if (params.search) {
where.OR = [
{ username: { contains: params.search, mode: 'insensitive' } },
{ name: { contains: params.search, mode: 'insensitive' } },
{ email: { contains: params.search, mode: 'insensitive' } },
];
}
const user = await this.prisma.user.findFirst({ where });
return !!user;
if (params.isActive !== undefined && params.isActive !== null) {
where.isActive = params.isActive;
}
if (params.deleted !== undefined && params.deleted !== null) {
if (params.deleted)
where.deletedAt = { not: null };
else
where.deletedAt = null;
}
if (params.roleId) {
where.userRoles = { some: { roleId: params.roleId } };
}
const [total, items] = await Promise.all([
this.prisma.user.count({ where }),
this.prisma.user.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } }),
]);
return { data: items.map(i => prisma_user_mapper_1.PrismaUserMapper.toDomain(i)), total };
}
async softDelete(userId) {
await this.prisma.user.update({ where: { id: userId }, data: { deletedAt: new Date() } });
}
async restore(userId) {
const updated = await this.prisma.user.update({ where: { id: userId }, data: { deletedAt: null }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async enable(userId) {
const updated = await this.prisma.user.update({ where: { id: userId }, data: { isActive: true }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async disable(userId) {
const updated = await this.prisma.user.update({ where: { id: userId }, data: { isActive: false }, include: { userRoles: { include: { role: { include: { permissions: { include: { permission: true } } } } } }, userPermissions: { include: { permission: true } } } });
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
};
exports.PrismaUserRepository = PrismaUserRepository;
File diff suppressed because one or more lines are too long