package com.red.circle.other.infra.convertor.sys;

import com.red.circle.framework.core.convertor.ConvertorModel;
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.other.infra.database.rds.entity.game.GameUserLotteryRecord;
import com.red.circle.other.infra.database.rds.entity.game.GameUserShardsExchangeRecord;
import com.red.circle.other.infra.database.rds.entity.sys.GameListConfig;
import com.red.circle.other.infra.database.rds.entity.user.user.BaseInfo;
import com.red.circle.other.inner.model.cmd.sys.SysGameListConfigParamCmd;
import com.red.circle.other.inner.model.cmd.sys.SysGameMatchModelConfigBackQryCmd;
import com.red.circle.other.inner.model.dto.game.GameUserLotteryRecordDTO;
import com.red.circle.other.inner.model.dto.game.GameUserShardsExchangeRecordDTO;
import com.red.circle.other.inner.model.dto.sys.GameMatchModelConfigDTO;
import com.red.circle.other.inner.model.dto.sys.GamePlayersUserDTO;
import com.red.circle.other.inner.model.dto.sys.SysGameListConfigDTO;
import java.util.List;
import org.mapstruct.Mapper;

/**
 * @author zongpubin on 2023/10/31
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface SysGameListConfigInnerConvertor {

  SysGameListConfigDTO toSysGameListConfigDTO(GameListConfig gameListConfig);

  GameListConfig toSysGameListConfig(SysGameListConfigParamCmd param);

  GameMatchModelConfigQuery toGameMatchModelConfigQuery(SysGameMatchModelConfigBackQryCmd query);

  List<GameMatchModelConfigDTO> toGameMatchModelConfigDTO(List<GameMatchModelConfig> list);

  GameMatchModelConfig toGameMatchModelConfig(GameMatchModelConfigDTO param);

  GamePlayersUserDTO toGamePlayersUserDTO(BaseInfo userBaseInfo);

  GameUserLotteryRecordDTO toGameUserLotteryRecordDTO(GameUserLotteryRecord gameUserLotteryRecord);

  GameUserShardsExchangeRecordDTO toGameUserShardsExchangeRecordDTO(
      GameUserShardsExchangeRecord gameUserShardsExchangeRecord);
}
