fix npm run build
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.PrismaPermissionMapper = void 0;
|
||||
const permission_entity_1 = require("../../domain/entities/permission.entity");
|
||||
class PrismaPermissionMapper {
|
||||
static toDomain(model) {
|
||||
return permission_entity_1.PermissionData.restore({
|
||||
id: model.id,
|
||||
code: model.code || model.name,
|
||||
name: model.name,
|
||||
description: model.description,
|
||||
createdAt: model.createdAt,
|
||||
updatedAt: model.updatedAt,
|
||||
});
|
||||
}
|
||||
static toPersistence(permission) {
|
||||
return {
|
||||
id: permission.id,
|
||||
code: permission.code,
|
||||
name: permission.name,
|
||||
description: permission.description,
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.PrismaPermissionMapper = PrismaPermissionMapper;
|
||||
//# sourceMappingURL=prisma-permission.mapper.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"prisma-permission.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-permission.mapper.ts"],"names":[],"mappings":";;;AAAA,+EAAyE;AAEzE,MAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,OAAO,kCAAc,CAAC,OAAO,CAAC;YAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAA0B;QAC7C,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;CACF;AApBD,wDAoBC"}
|
||||
@@ -0,0 +1,31 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.PrismaRoleMapper = void 0;
|
||||
const role_entity_1 = require("../../domain/entities/role.entity");
|
||||
const permission_entity_1 = require("../../domain/entities/permission.entity");
|
||||
class PrismaRoleMapper {
|
||||
static toDomain(model) {
|
||||
const permissions = (model.permissions || []).map((p) => {
|
||||
const perm = p.permission || p; // p may be RolePermission with nested permission or permission itself
|
||||
return permission_entity_1.PermissionData.restore({
|
||||
id: perm.id,
|
||||
name: perm.name,
|
||||
description: perm.description,
|
||||
createdAt: perm.createdAt,
|
||||
updatedAt: perm.updatedAt,
|
||||
});
|
||||
});
|
||||
return role_entity_1.RoleData.restore({
|
||||
id: model.id,
|
||||
code: model.code,
|
||||
name: model.name,
|
||||
description: model.description,
|
||||
permissions,
|
||||
isDefault: model.isDefault ?? false,
|
||||
createdAt: model.createdAt,
|
||||
updatedAt: model.updatedAt,
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.PrismaRoleMapper = PrismaRoleMapper;
|
||||
//# sourceMappingURL=prisma-role.mapper.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"prisma-role.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-role.mapper.ts"],"names":[],"mappings":";;;AAAA,mEAA6D;AAC7D,+EAAyE;AAEzE,MAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,MAAM,WAAW,GAAqB,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC7E,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,sEAAsE;YACtG,OAAO,kCAAc,CAAC,OAAO,CAAC;gBAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAQ,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW;YACX,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,4CAwBC"}
|
||||
@@ -0,0 +1,69 @@
|
||||
"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.roles || []).map((ur) => {
|
||||
const r = 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.permissions || []).map((up) => permission_entity_1.PermissionData.restore({
|
||||
id: up.permission.id,
|
||||
name: up.permission.name,
|
||||
description: up.permission.description,
|
||||
createdAt: up.permission.createdAt,
|
||||
updatedAt: up.permission.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,
|
||||
password: model.password ?? null,
|
||||
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,
|
||||
password: userData.password ?? null,
|
||||
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
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"prisma-user.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-user.mapper.ts"],"names":[],"mappings":"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"}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.PrismaPermissionRepository = void 0;
|
||||
const common_1 = require("@nestjs/common");
|
||||
const prisma_service_1 = require("../../../../shared/prisma.service");
|
||||
const prisma_permission_mapper_1 = require("../mappers/prisma-permission.mapper");
|
||||
let PrismaPermissionRepository = class PrismaPermissionRepository {
|
||||
prisma;
|
||||
constructor(prisma) {
|
||||
this.prisma = prisma;
|
||||
}
|
||||
async find(params) {
|
||||
const page = params.page && params.page > 0 ? params.page : 1;
|
||||
const limit = params.limit && params.limit > 0 ? params.limit : 10;
|
||||
const where = {};
|
||||
if (params.search) {
|
||||
where.OR = [
|
||||
{ name: { contains: params.search, mode: 'insensitive' } },
|
||||
{ code: { contains: params.search, mode: 'insensitive' } },
|
||||
{ description: { contains: params.search, mode: 'insensitive' } },
|
||||
];
|
||||
}
|
||||
const [total, items] = await Promise.all([
|
||||
this.prisma.permission.count({ where }),
|
||||
this.prisma.permission.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' } }),
|
||||
]);
|
||||
return { data: items.map(i => prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(i)), total };
|
||||
}
|
||||
async getById(id) {
|
||||
const p = await this.prisma.permission.findUnique({ where: { id } });
|
||||
if (!p)
|
||||
throw new Error('Permission not found.');
|
||||
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(p);
|
||||
}
|
||||
async create(permission) {
|
||||
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
|
||||
const created = await this.prisma.permission.create({ data: base });
|
||||
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(created);
|
||||
}
|
||||
async update(permission) {
|
||||
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
|
||||
const updated = await this.prisma.permission.update({ where: { id: permission.id }, data: base });
|
||||
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(updated);
|
||||
}
|
||||
async delete(id) {
|
||||
await this.prisma.permission.delete({ where: { id } });
|
||||
}
|
||||
async findRoleIdsByPermission(permissionId) {
|
||||
const rows = await this.prisma.rolePermission.findMany({ where: { permissionId }, select: { roleId: true } });
|
||||
return rows.map(r => r.roleId);
|
||||
}
|
||||
};
|
||||
exports.PrismaPermissionRepository = PrismaPermissionRepository;
|
||||
exports.PrismaPermissionRepository = PrismaPermissionRepository = __decorate([
|
||||
(0, common_1.Injectable)(),
|
||||
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
|
||||
], PrismaPermissionRepository);
|
||||
//# sourceMappingURL=prisma-permission.repository.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"prisma-permission.repository.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/repositories/prisma-permission.repository.ts"],"names":[],"mappings":"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"}
|
||||
@@ -0,0 +1,110 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.PrismaRoleRepository = void 0;
|
||||
const common_1 = require("@nestjs/common");
|
||||
const prisma_service_1 = require("../../../../shared/prisma.service");
|
||||
const prisma_role_mapper_1 = require("../mappers/prisma-role.mapper");
|
||||
let PrismaRoleRepository = class PrismaRoleRepository {
|
||||
prisma;
|
||||
constructor(prisma) {
|
||||
this.prisma = prisma;
|
||||
}
|
||||
async getDefaultRole() {
|
||||
const role = await this.prisma.role.findFirst({
|
||||
where: { isDefault: true },
|
||||
include: { permissions: { include: { permission: true } } },
|
||||
});
|
||||
if (!role)
|
||||
return null;
|
||||
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
|
||||
}
|
||||
async findById(roleId) {
|
||||
const role = await this.prisma.role.findUnique({
|
||||
where: { id: roleId },
|
||||
include: { permissions: { include: { permission: true } } },
|
||||
});
|
||||
if (!role)
|
||||
throw new Error('Role not found.');
|
||||
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
|
||||
}
|
||||
async find(params) {
|
||||
const page = params.page && params.page > 0 ? params.page : 1;
|
||||
const limit = params.limit && params.limit > 0 ? params.limit : 10;
|
||||
const where = {};
|
||||
if (params.search) {
|
||||
where.OR = [
|
||||
{ name: { contains: params.search, mode: 'insensitive' } },
|
||||
{ code: { contains: params.search, mode: 'insensitive' } },
|
||||
{ description: { contains: params.search, mode: 'insensitive' } },
|
||||
];
|
||||
}
|
||||
const [total, items] = await Promise.all([
|
||||
this.prisma.role.count({ where }),
|
||||
this.prisma.role.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' }, include: { permissions: { include: { permission: true } } } }),
|
||||
]);
|
||||
return { data: items.map(i => prisma_role_mapper_1.PrismaRoleMapper.toDomain(i)), total };
|
||||
}
|
||||
async create(role) {
|
||||
const base = {
|
||||
id: role.id,
|
||||
code: role.code,
|
||||
name: role.name,
|
||||
description: role.description,
|
||||
isDefault: role.isDefault,
|
||||
};
|
||||
if (role.permissions && role.permissions.length > 0) {
|
||||
base.permissions = {
|
||||
create: role.permissions.map(p => ({ permission: { connect: { id: p.id } }, assignedBy: 'system' })),
|
||||
};
|
||||
}
|
||||
const created = await this.prisma.role.create({ data: base, include: { permissions: { include: { permission: true } } } });
|
||||
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(created);
|
||||
}
|
||||
async update(role) {
|
||||
const base = {
|
||||
code: role.code,
|
||||
name: role.name,
|
||||
description: role.description,
|
||||
isDefault: role.isDefault,
|
||||
};
|
||||
// sync permissions via transaction
|
||||
const permIds = role.permissions ? role.permissions.map(p => p.id) : [];
|
||||
await this.prisma.$transaction(async (prisma) => {
|
||||
const currentPerms = await prisma.rolePermission.findMany({ where: { roleId: role.id } });
|
||||
const currentIds = currentPerms.map(p => p.permissionId);
|
||||
const toAdd = permIds.filter(id => !currentIds.includes(id));
|
||||
const toRemove = currentIds.filter(id => !permIds.includes(id));
|
||||
if (toRemove.length > 0) {
|
||||
await prisma.rolePermission.deleteMany({ where: { roleId: role.id, permissionId: { in: toRemove } } });
|
||||
}
|
||||
if (toAdd.length > 0) {
|
||||
await prisma.rolePermission.createMany({ data: toAdd.map(pid => ({ roleId: role.id, permissionId: pid, assignedBy: 'system' })), skipDuplicates: true });
|
||||
}
|
||||
await prisma.role.update({ where: { id: role.id }, data: base });
|
||||
});
|
||||
const updated = await this.prisma.role.findUnique({ where: { id: role.id }, include: { permissions: { include: { permission: true } } } });
|
||||
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(updated);
|
||||
}
|
||||
async delete(roleId) {
|
||||
await this.prisma.role.delete({ where: { id: roleId } });
|
||||
}
|
||||
async getAssignedUserIds(roleId) {
|
||||
const rows = await this.prisma.userRole.findMany({ where: { roleId }, select: { userId: true } });
|
||||
return rows.map(r => r.userId);
|
||||
}
|
||||
};
|
||||
exports.PrismaRoleRepository = PrismaRoleRepository;
|
||||
exports.PrismaRoleRepository = PrismaRoleRepository = __decorate([
|
||||
(0, common_1.Injectable)(),
|
||||
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
|
||||
], PrismaRoleRepository);
|
||||
//# sourceMappingURL=prisma-role.repository.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,216 @@
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.PrismaUserRepository = void 0;
|
||||
const common_1 = require("@nestjs/common");
|
||||
const prisma_service_1 = require("../../../../shared/prisma.service");
|
||||
const prisma_user_mapper_1 = require("../mappers/prisma-user.mapper");
|
||||
let PrismaUserRepository = class PrismaUserRepository {
|
||||
prisma;
|
||||
constructor(prisma) {
|
||||
this.prisma = prisma;
|
||||
}
|
||||
//#region Create
|
||||
async create(userData) {
|
||||
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
|
||||
const data = { ...base };
|
||||
if (userData.roles && userData.roles.length > 0) {
|
||||
data.roles = {
|
||||
create: userData.roles.map(r => ({ role: { connect: { id: r.id } }, assignedBy: 'system' })),
|
||||
};
|
||||
}
|
||||
const created = await this.prisma.user.create({
|
||||
data,
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(created);
|
||||
}
|
||||
//#endregion
|
||||
//#region Read
|
||||
async existsById(userId) {
|
||||
return ((await this.prisma.user.findUnique({
|
||||
where: { id: userId },
|
||||
select: { id: true },
|
||||
})) !== null);
|
||||
}
|
||||
async existByEmail(userEmail) {
|
||||
return ((await this.prisma.user.findUnique({
|
||||
where: { email: userEmail },
|
||||
select: { email: true },
|
||||
})) !== null);
|
||||
}
|
||||
async getById(userId) {
|
||||
const userData = await this.prisma.user.findUnique({
|
||||
where: { id: userId },
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
if (userData === null)
|
||||
throw new Error('User tidak ditemukan.');
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
|
||||
}
|
||||
async getByEmail(userEmail) {
|
||||
const userData = await this.prisma.user.findUnique({
|
||||
where: { email: userEmail },
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
if (userData === null)
|
||||
throw new Error('User tidak ditemukan.');
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
|
||||
}
|
||||
async findByAuthentikId(authentikId) {
|
||||
const userData = await this.prisma.user.findUnique({
|
||||
where: { authentikId },
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
if (!userData)
|
||||
return null;
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
|
||||
}
|
||||
async find(params) {
|
||||
const page = params.page && params.page > 0 ? params.page : 1;
|
||||
const limit = params.limit && params.limit > 0 ? params.limit : 10;
|
||||
const where = {};
|
||||
if (params.search) {
|
||||
where.OR = [
|
||||
{ username: { contains: params.search, mode: 'insensitive' } },
|
||||
{ email: { contains: params.search, mode: 'insensitive' } },
|
||||
];
|
||||
}
|
||||
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.roles = { some: { roleId: params.roleId } };
|
||||
}
|
||||
const [total, items] = await Promise.all([
|
||||
this.prisma.user.count({ where }),
|
||||
this.prisma.user.findMany({
|
||||
where,
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
skip: (page - 1) * limit,
|
||||
take: limit,
|
||||
orderBy: { createdAt: 'desc' },
|
||||
}),
|
||||
]);
|
||||
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(), isActive: false } });
|
||||
}
|
||||
async restore(userId) {
|
||||
const updated = await this.prisma.user.update({
|
||||
where: { id: userId },
|
||||
data: { deletedAt: null },
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { 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: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { 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: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
|
||||
}
|
||||
async update(userData) {
|
||||
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
|
||||
const data = { ...base };
|
||||
// sync roles and permissions using transaction
|
||||
const roleIds = userData.roles ? userData.roles.map(r => r.id) : [];
|
||||
const permissionIds = userData.permissions ? userData.permissions.map(p => p.id) : [];
|
||||
// perform transaction: delete removed relations, create missing ones, update user
|
||||
await this.prisma.$transaction(async (prisma) => {
|
||||
// current roles
|
||||
const currentRoles = await prisma.userRole.findMany({ where: { userId: userData.id } });
|
||||
const currentRoleIds = currentRoles.map(r => r.roleId);
|
||||
const toAddRoles = roleIds.filter(id => !currentRoleIds.includes(id));
|
||||
const toRemoveRoles = currentRoleIds.filter(id => !roleIds.includes(id));
|
||||
if (toRemoveRoles.length > 0) {
|
||||
await prisma.userRole.deleteMany({ where: { userId: userData.id, roleId: { in: toRemoveRoles } } });
|
||||
}
|
||||
if (toAddRoles.length > 0) {
|
||||
await prisma.userRole.createMany({
|
||||
data: toAddRoles.map(rid => ({ userId: userData.id, roleId: rid, assignedBy: 'system' })),
|
||||
skipDuplicates: true,
|
||||
});
|
||||
}
|
||||
// permissions
|
||||
const currentPerms = await prisma.userPermission.findMany({ where: { userId: userData.id } });
|
||||
const currentPermIds = currentPerms.map(p => p.permissionId);
|
||||
const toAddPerms = permissionIds.filter(id => !currentPermIds.includes(id));
|
||||
const toRemovePerms = currentPermIds.filter(id => !permissionIds.includes(id));
|
||||
if (toRemovePerms.length > 0) {
|
||||
await prisma.userPermission.deleteMany({ where: { userId: userData.id, permissionId: { in: toRemovePerms } } });
|
||||
}
|
||||
if (toAddPerms.length > 0) {
|
||||
await prisma.userPermission.createMany({
|
||||
data: toAddPerms.map(pid => ({ userId: userData.id, permissionId: pid, assignedBy: 'system' })),
|
||||
skipDuplicates: true,
|
||||
});
|
||||
}
|
||||
// update base user fields
|
||||
await prisma.user.update({ where: { id: userData.id }, data });
|
||||
});
|
||||
const updated = await this.prisma.user.findUnique({
|
||||
where: { id: userData.id },
|
||||
include: {
|
||||
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
|
||||
permissions: { include: { permission: true } },
|
||||
},
|
||||
});
|
||||
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
|
||||
}
|
||||
};
|
||||
exports.PrismaUserRepository = PrismaUserRepository;
|
||||
exports.PrismaUserRepository = PrismaUserRepository = __decorate([
|
||||
(0, common_1.Injectable)(),
|
||||
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
|
||||
], PrismaUserRepository);
|
||||
//# sourceMappingURL=prisma-user.repository.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user