package com.red.circle.other.app.inner.convertor.live;

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.other.infra.database.mongo.entity.live.RoomCounter;
import com.red.circle.other.infra.database.mongo.entity.live.RoomProfile;
import com.red.circle.other.infra.database.mongo.entity.live.RoomProfileManager;
import com.red.circle.other.infra.database.mongo.entity.live.RoomTopFixed;
import com.red.circle.other.infra.database.rds.entity.live.HotRoom;
import com.red.circle.other.infra.database.rds.entity.live.RoomMikeType;
import com.red.circle.other.inner.model.cmd.sys.RoomTopFixedCmd;
import com.red.circle.other.inner.model.cmd.sys.SysHotRoomCmd;
import com.red.circle.other.inner.model.dto.live.RoomCounterDTO;
import com.red.circle.other.inner.model.dto.live.RoomMikeTypeDTO;
import com.red.circle.other.inner.model.dto.live.RoomProfileDTO;
import com.red.circle.other.inner.model.dto.live.RoomProfileManagerDTO;
import com.red.circle.other.inner.model.dto.sys.SysHotRoomDTO;
import com.red.circle.other.inner.model.dto.sys.SysTopRoomDTO;
import java.util.List;
import java.util.Map;
import org.mapstruct.Mapper;

/**
 * @author pengliang on 2023/6/10
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface RoomProfileInnerConvertor {

  RoomProfileDTO toRoomProfileDTO(RoomProfile roomProfile);

  List<RoomProfileDTO> toListProfileManagerDTO(List<RoomProfile> roomProfiles);

  List<RoomProfileManagerDTO> toListRoomProfileManagerDTO(
      List<RoomProfileManager> roomProfileManagers);

  RoomProfile toRoomProfile(RoomProfileDTO roomProfileDTO);


  RoomMikeTypeDTO toRoomMikeTypeDTO(RoomMikeType roomMikeType);

  Map<Long, RoomProfileDTO> toMapRoomProfileDTO(Map<Long, RoomProfile> roomProfileMap);

  HotRoom toHotRoom(SysHotRoomCmd cmd);

  SysHotRoomDTO toSysHotRoomDTO(HotRoom hotRoom);

  SysTopRoomDTO toSysTopRoomDTO(RoomTopFixed roomTopFixed);

  RoomTopFixed toRoomTopFixed(RoomTopFixedCmd cmd);

  RoomProfileManagerDTO toRoomProfileManagerDTO(RoomProfileManager roomProfileManager);

  RoomCounterDTO toRoomCounterDTO(RoomCounter roomCounterByUserId);
}
