package com.takensoft.cms.mber.dao;

import com.takensoft.cms.mber.dto.JoinDTO;
import com.takensoft.cms.mber.dto.PasswordDTO;
import com.takensoft.cms.mber.vo.MberAuthorVO;
import com.takensoft.cms.mber.vo.MberVO;
import com.takensoft.common.Pagination;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

import java.util.*;
/**
 * @author takensoft
 * @since 2024.04.01
 * @modification
 *     since    |    author    | description
 *  2024.04.01  |  takensoft   | 최초 등록
 *
 * 회원 정보 관련 Mapper
 */
@Mapper("mberDAO")
public interface MberDAO {
    /**
     * @param lgnId - 로그인 아이디
     * @return MberVO - 사용자 정보 조회 결과
     *
     * 사용자 정보 조회 [security 용]
     */
    MberVO findByMberSecurity(String lgnId);

    /**
     * @param lgnId - 로그인 아이디
     * @return boolean - 아이디 중복 여부
     *
     * 아이디 중복 검사
     */
    boolean findByCheckLoginId(String lgnId);

    /**
     * @param joinDTO - 회원 가입 관련 DTO
     * @return int - 회원가입 결과
     *
     * 회원가입
     */
    int save(JoinDTO joinDTO);

    /**
     * @param mberAuthorVO - 사용자 권한 관련 VO
     * @return int - 사용자 권한 등록 결과
     *
     * 사용자 권한 등록
     */
    int authorSave(MberAuthorVO mberAuthorVO);

    /**
     * @param passwordDTO -비밀 번호 변경 관련 DTO
     * @return int - 비밀 번호 변경 결과
     *
     * 비밀 번호 변경
     */
    int updatePassword(PasswordDTO passwordDTO);

    /**
     * @param mbrId -회원 아이디
     * @return MberVO - 사용자 정보 조회 결과
     *
     * 사용자 정보 조회
     */
    MberVO findByMber(String mbrId);
}