package com.mosquito.project.permission;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 角色权限关联Repository
 */
@Repository
public interface RolePermissionRepository extends JpaRepository<SysRolePermission, Long> {

    /**
     * 根据角色ID查询所有权限ID
     */
    List<SysRolePermission> findByRoleId(Long roleId);

    /**
     * 根据角色ID查询所有权限代码（两步查询）
     */
    @Query("SELECT rp.permissionId FROM SysRolePermission rp WHERE rp.roleId = :roleId")
    List<Long> findPermissionIdsByRoleId(@Param("roleId") Long roleId);

    /**
     * 根据角色代码查询所有权限代码（两步查询）
     */
    @Query("SELECT r.id FROM SysRole r WHERE r.roleCode = :roleCode")
    List<Long> findRoleIdsByRoleCode(@Param("roleCode") String roleCode);

    /**
     * 检查角色是否拥有指定权限
     */
    boolean existsByRoleIdAndPermissionId(Long roleId, Long permissionId);

    /**
     * 删除角色权限关联
     */
    void deleteByRoleIdAndPermissionId(Long roleId, Long permissionId);

    /**
     * 删除角色所有权限关联
     */
    void deleteByRoleId(Long roleId);
}
