package com.yami.shop.common.constants;

/**
 * OauthCacheNames接口主要用于定义与Oauth（授权认证相关）缓存中使用的各种键（Key）的名称常量，通过统一的接口定义这些常量，
 * 方便在整个项目中对Oauth缓存相关操作涉及的键名进行规范管理，避免出现键名不一致或者硬编码键名的情况，提高代码的可维护性和可读性。
 *
 * @author 菠萝凤梨
 * @date 2022/3/28 14:32
 */
public interface OauthCacheNames {

    /**
     * OAUTH_PREFIX常量定义了Oauth授权相关键名的基础前缀，后续所有与Oauth授权相关的缓存键名都会以此为开头进行构建，
     * 这样可以清晰地将Oauth相关的缓存键与其他类型的缓存键区分开来，便于在缓存管理中进行分类和识别，其值为"mall4j_oauth:"。
     */
    String OAUTH_PREFIX = "mall4j_oauth:";

    /**
     * OAUTH_TOKEN_PREFIX常量是在OAUTH_PREFIX基础上进一步细化，用于表示与token授权相关的键名前缀，意味着后续所有和token授权具体操作相关的缓存键名都会以这个值开头，
     * 它是通过将OAUTH_PREFIX与"token:"拼接而成，其值为"mall4j_oauth:token:"，明确了这部分键名是专门针对token授权这个细分领域的缓存键名。
     */
    String OAUTH_TOKEN_PREFIX = OAUTH_PREFIX + "token:";

    /**
     * ACCESS常量定义了用于保存token缓存时使用的具体键名的一部分，是在OAUTH_TOKEN_PREFIX基础上添加"access:"后缀形成的，
     * 在项目中实际使用时，可能会结合具体的token标识等其他信息共同构成完整的缓存键名，用于在缓存中存储和获取token相关的数据，其值为"mall4j_oauth:token:access:"。
     */
    String ACCESS = OAUTH_TOKEN_PREFIX + "access:";

    /**
     * REFRESH_TO_ACCESS常量定义了用于刷新token到访问token相关操作时，在缓存中使用的键名的一部分，它以OAUTH_TOKEN_PREFIX为基础，添加"refresh_to_access:"后缀，
     * 表示这个键名主要用于处理刷新token与访问token之间关联或转换等相关缓存操作，在具体业务逻辑中配合相应的参数来唯一确定缓存中的具体数据，其值为"mall4j_oauth:token:refresh_to_access:"。
     */
    String REFRESH_TO_ACCESS = OAUTH_TOKEN_PREFIX + "refresh_to_access:";

    /**
     * UID_TO_ACCESS常量定义了根据用户唯一标识符（UID）获取保存的token key时，在缓存中使用的键名的一部分，同样以OAUTH_TOKEN_PREFIX开头，添加"uid_to_access:"后缀，
     * 意味着在需要通过用户ID来查找对应的token相关缓存数据时，会使用这个键名格式，结合具体的用户ID等信息构建完整的缓存键，方便在缓存中进行相应的查询操作，其值为"mall4j_oauth:token:uid_to_access:"。
     */
    String UID_TO_ACCESS = OAUTH_TOKEN_PREFIX + "uid_to_access:";

    /**
     * USER_INFO常量定义了保存token的用户信息时在缓存中使用的键名的一部分，基于OAUTH_TOKEN_PREFIX再添加"user_info:"后缀形成，
     * 用于在缓存中存储与token关联的用户详细信息，例如用户的基本资料、权限等信息，在获取token对应的用户相关数据时，会依据这个键名格式结合具体的token标识等构建完整的缓存键来进行查找，其值为"mall4j_oauth:token:user_info:"。
     */
    String USER_INFO = OAUTH_TOKEN_PREFIX + "user_info:";
}