fix npm run build
This commit is contained in:
+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