CentralBackend/repositories/PermissionRepository.js
2025-09-07 12:44:01 +02:00

67 lines
2.3 KiB
JavaScript

const Permission = require('../models/Permission');
const { logger } = require('../middleware/logger');
class PermissionRepository {
constructor(unitOfWork) {
this.unitOfWork = unitOfWork;
}
async getAllPermissions() {
logger.info('PermissionRepository.getAllPermissions:start');
try {
const conn = this.unitOfWork.connection;
const [rows] = await conn.query(
`SELECT id, name, description, is_active FROM permissions`
);
logger.info('PermissionRepository.getAllPermissions:success', { count: rows.length });
return rows.map(row => new Permission(row));
} catch (error) {
logger.error('PermissionRepository.getAllPermissions:error', { error: error.message });
throw error;
}
}
async createPermission({ name, description, is_active, created_by }) {
logger.info('PermissionRepository.createPermission:start', { name });
try {
const conn = this.unitOfWork.connection;
const [result] = await conn.query(
`INSERT INTO permissions (name, description, is_active, created_by) VALUES (?, ?, ?, ?)`,
[name, description, is_active !== undefined ? is_active : true, created_by]
);
logger.info('PermissionRepository.createPermission:success', { id: result.insertId, name });
return new Permission({
id: result.insertId,
name,
description,
is_active: is_active !== undefined ? is_active : true,
created_by
});
} catch (error) {
logger.error('PermissionRepository.createPermission:error', { name, error: error.message });
throw error;
}
}
async getPermissionsByUserId(userId) {
logger.info('PermissionRepository.getPermissionsByUserId:start', { userId });
try {
const conn = this.unitOfWork.connection;
const [rows] = await conn.query(
`SELECT p.id, p.name, p.description, p.is_active
FROM user_permissions up
JOIN permissions p ON up.permission_id = p.id
WHERE up.user_id = ? AND p.is_active = TRUE`,
[userId]
);
logger.info('PermissionRepository.getPermissionsByUserId:success', { userId, count: rows.length });
return rows;
} catch (error) {
logger.error('PermissionRepository.getPermissionsByUserId:error', { userId, error: error.message });
throw error;
}
}
}
module.exports = PermissionRepository;