package com.spring.infra.security.service;

/**
 * 리프레시 토큰을 관리하는 서비스 클래스입니다.
 * 
 * <p>이 클래스는 리프레시 토큰의 저장, 조회 및 삭제 기능을 제공합니다.
 * 사용자의 리프레시 토큰을 데이터베이스에 저장하고, 필요 시 이를 조회하거나 삭제합니다.</p>
 * 
 * @author mindol
 * @version 1.0
 */
public interface RefreshTokenService {

    /**
     * 리프레시 토큰을 저장합니다.
     * 
     * <p>주어진 사용자 ID와 리프레시 토큰을 데이터베이스에 저장합니다.</p>
     * 
     * @param userId 사용자 ID
     * @param refreshToken 저장할 리프레시 토큰
     */
    void saveRefreshToken(String userId, String refreshToken);

    /**
     * 리프레시 토큰을 조회합니다.
     * 
     * <p>주어진 리프레시 토큰에 대한 정보를 조회합니다.</p>
     * 
     * @param refreshToken 조회할 리프레시 토큰
     * @return 해당 리프레시 토큰의 정보
     */
    String getRefreshToken(String refreshToken);

    /**
     * 리프레시 토큰을 삭제합니다.
     * 
     * <p>주어진 키에 해당하는 리프레시 토큰을 데이터베이스에서 삭제합니다.</p>
     * 
     * @param key 삭제할 리프레시 토큰의 키 (예: 사용자 ID)
     */
    void deleteRefreshToken(String key);
}
