const { getDb } = require('../dbPool');

class RoleModel {
  /**
   * 모든 역할 목록을 조회합니다.
   * @returns {Promise<Array>} 역할 목록
   */
  static async findAll() {
    const db = await getDb();
    const [rows] = await db.query('SELECT id, name, description FROM roles ORDER BY id');
    return rows;
  }

  /**
   * ID로 특정 역할을 조회합니다.
   * @param {number} id - 역할 ID
   * @returns {Promise<Object>} 역할 객체
   */
  static async findById(id) {
    const db = await getDb();
    const [rows] = await db.query('SELECT id, name, description FROM roles WHERE id = ?', [id]);
    return rows[0];
  }

  /**
   * 역할에 속한 모든 권한을 조회합니다.
   * @param {number} roleId - 역할 ID
   * @returns {Promise<Array>} 권한 이름 목록
   */
  static async findPermissionsByRoleId(roleId) {
    const db = await getDb();
    const [rows] = await db.query(
      `SELECT p.name 
       FROM permissions p
       JOIN role_permissions rp ON p.id = rp.permission_id
       WHERE rp.role_id = ?`,
      [roleId]
    );
    return rows.map(p => p.name);
  }
}

module.exports = RoleModel;
