package com.red.circle.other.infra.database.cache.service.other;

import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;

/**
 * 房间管理缓存.
 *
 * @author pengliang on 2021/7/28
 */
public interface RoomManagerCacheService {

  /**
   * 获取房间人数.
   *
   * @param roomAccount 房间account
   * @return 人数
   */
  Long getNumberPeople(Long roomAccount);

  /**
   * 设置房间人数.
   *
   * @param roomAccount  房间account
   * @param numberPeople 人数
   * @return 人数
   */
  Long setNumberPeople(String roomAccount, Long numberPeople);

  /**
   * 累计房间人数.
   *
   * @param roomAccount 房间account
   * @return 人数
   */
  Long incrementNumberPeople(String roomAccount);

  /**
   * 递减房间人数.
   *
   * @param roomAccount 房间account
   * @return 人数
   */
  Long decrementNumberPeople(String roomAccount);

  /**
   * 移除.
   *
   * @param roomAccount 房间account
   */
  void removeNumberPeople(String roomAccount);

  /**
   * 用户在房间中的角色，缓存.
   */
  RoomUserRolesEnum getRoomUserRoles(Long userId, Long roomId);

  /**
   * 移除房间角色,缓存.
   */
  void removeRoomUserRoles(Long userId, Long roomId);

}
