package go.kr.project.system.role.service;

import go.kr.project.system.role.model.RoleModifiedDataVO;
import go.kr.project.system.role.model.RoleSearchVO;
import go.kr.project.system.role.model.RoleVO;

import java.util.List;

/**
 * packageName    : go.kr.project.system.role.service
 * fileName       : RoleService
 * author         : 시스템 관리자
 * date           : 2023-06-01
 * description    : 역할 관련 비즈니스 로직을 처리하는 서비스 인터페이스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2023-06-01        시스템 관리자       최초 생성
 */
public interface RoleService {

    /**
     * 역할 정보를 조회합니다.
     * 
     * @param roleId 역할 ID
     * @return 역할 정보
     */
    RoleVO selectRole(String roleId);

    /**
     * 역할 목록을 조회합니다.
     * 
     * @param vo 검색 조건을 담은 VO 객체
     * @return 역할 목록
     */
    List<RoleVO> selectRoleList(RoleSearchVO paramVO);

    /**
     * 역할 목록의 총 개수를 조회합니다.
     * 
     * @param vo 검색 조건을 담은 VO 객체
     * @return 역할 목록의 총 개수
     */
    int selectRoleListTotalCount(RoleSearchVO paramVO);

    /**
     * 여러 역할 정보를 일괄 저장합니다.
     * 
     * @param modifyData 저장할 역할 정보 목록
     * @return 등록, 수정, 삭제 된 행의 수
     */
    int saveRoles(RoleModifiedDataVO modifyData);

}
