package com.takensoft.cms.token.dao;

import com.takensoft.cms.token.vo.RefreshTknVO;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

/**
 * @author  : takensoft
 * @since   : 2024.04.01
 * @modification
 *     since    |    author    | description
 *  2024.04.01  |  takensoft   | 최초 등록
 *
 * RefreshToken 관련 Mapper
 *
 */
@Mapper("refreshTokenDAO")
public interface RefreshTokenDAO {

    /**
     * @param refreshTknVO - RefreshToken 정보 관련 VO
     * @return int - refresh token 등록 결과
     *
     * refresh token 등록
     */
    int save(RefreshTknVO refreshTknVO);

    /**
     * @param refreshTknVO - RefreshToken 정보 관련 VO
     * @return int - refresh token 삭제 결과
     *
     * refresh token 삭제
     */
    int deleteByRefresh(RefreshTknVO refreshTknVO);

    /**
     * @return int - 기한 만료된 refresh token 삭제 결과
     *
     * 기한 만료된 refresh token 삭제 [ Schedule 용 ]
     */
    int cleanExpiredRefreshTokens();

    /**
     * @param refreshTknVO - RefreshToken 정보 관련 VO
     * @return boolean - refresh token 등록 여부
     *
     * refresh token 등록 여부 확인
     */
    boolean findByCheckRefresh(RefreshTknVO refreshTknVO);

    /**
     * @return int - refresh token 전체 삭제 여부
     *
     * refresh token 전체 삭제
     */
    int deleteAll();

}
