package com.red.circle.external.infra.database.redis.service;

/**
 * UserAgoraToken缓存服务.
 *
 * @author lixiaofei on 2024/9/4
 */
public interface UserAgoraTokenCacheService {

  /**
   * 移除相关缓存.
   *
   * @param userId 用户id
   */
  void remove(Long userId, Long roomId);

  /**
   * 添加缓存.
   *
   * @param agoraToken agora 发声token
   * @param userId 用户id
   */
  void save(String agoraToken, Long userId, Long roomId);

  /**
   * 获取一个用户AgoraToken.
   *
   * @param userId 用户id
   */
  String getUserAgoraToken(Long userId, Long roomId);


  /**
   * 移除房间token相关缓存.
   *
   * @param userId 用户id
   */
  void removeRoom(Long userId, Long roomId);

  /**
   * 添加房间token缓存.
   *
   * @param agoraToken agora 发声token
   * @param userId 用户id
   */
  void saveRoom(String agoraToken, Long userId, Long roomId);

  /**
   * 获取一个用户AgoraToken缓存
   *
   * @param userId 用户id
   */
  String getUserAgoraTokenRoom(Long userId, Long roomId);

  /**
   * 获取一个用户服务缓存
   *
   * @param userId 用户id
   */
  String getUserToken(Long userId);

  /**
   * 保存用户账户
   *
   * @param userId 用户id
   */
  void saveUserAccount(String account, Long userId);

  /**
   * 获取用户账户
   *
   * @param userId 用户id
   */
  String getUserAccount(Long userId);
}
