package com.red.circle.other.infra.database.mongo.service.sys;

import com.red.circle.other.infra.database.mongo.dto.GamePlayersUser;
import com.red.circle.other.infra.database.mongo.dto.query.GameMatchModelConfigQuery;
import com.red.circle.other.infra.database.mongo.entity.sys.GameMatchModelConfig;
import com.red.circle.tool.core.func.VoidCallable;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 游戏匹配模式配置.
 *
 * @author pengliang on 2022/7/11
 */
public interface GameMatchModelConfigService {

  /**
   * 添加配置.
   */
  void add(GameMatchModelConfig config);

  /**
   * 获取游戏配置.
   */
  GameMatchModelConfig getById(Long id);

  /**
   * 获取一批游戏配置.
   */
  Map<Long, GameMatchModelConfig> mapByIds(Set<Long> ids);

  /**
   * 获取游戏列表.
   */
  List<GameMatchModelConfig> list(GameMatchModelConfigQuery query);

  /**
   * 获取平台上架游戏列表.
   */
  List<GameMatchModelConfig> listShowcaseConfig(String sysOrigin);

  /**
   * 根据ID移除.
   */
  void removeById(Long id);

  /**
   * 修改在线玩家.
   */
  void updateOnlinePlayer(VoidCallable<List<GamePlayersUser>> consumer);

}
