Source: Services/RolesServices.js

import { DAOMongoDbFactory } from "../Factory/DAOMongoDbFactory.js";

const Factory = new DAOMongoDbFactory();
const RolesDAO = Factory.createRolesDAO();

(async () => await RolesDAO.init())();

/**
 * Represents a service for handling roles requests
 */
const RolesServices = {
    close: async () => 
    {
        return await RolesDAO.close();
    },

    /**
     * Get roles
     * @param {object} filters - The filters to apply
     * @returns {Array} - An array of roles
     */
    getRoles: async (filters) => {
        return await RolesDAO.getRoles(filters);
    },

    /**
     * Update roles
     * @param {number} roleId - The id of the role to update
     * @param {object} role - The role data to update
     * @returns {object} - The role updated
     */
    updateRoles: async (roleId, role) => {
        return await RolesDAO.updateRole(roleId, role);
    },

    /**
     * Delete roles
     * @param {number} roleId - The id of the role to delete
     * @returns {object} - The role deleted
     */
    deleteRoles: async (roleId) => {
        return await RolesDAO.deleteRole(roleId);
    },

    /**
     * Create roles
     * @param {object} role - The role to create
     * @returns {object} - The role created
     */
    createRoles: async (role) => {
        return await RolesDAO.createRole(role);
    },
    
    /**
     * Récupère les permissions d'un rôle
     * @param {number} roleId - L'identifiant du rôle
     * @returns {object} - Les permissions du rôle
     */
    getRolePermissions: async (id) => {
        const roles = await RolesDAO.getRoles({ _id: id });
        if (roles.length === 0) {
            throw new Error('Rôle non trouvé');
        }
        return roles[0].permissions;
    }
}

export default RolesServices;