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

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.mq.business.model.event.room.RoomVoiceCreateSuccessEvent;
import com.red.circle.other.app.dto.clientobject.activity.RoomProfileCO;
import com.red.circle.other.app.dto.clientobject.family.RoomSettingCO;
import com.red.circle.other.app.dto.clientobject.room.RoomVoiceProfileCO;
import com.red.circle.other.app.dto.cmd.room.UpdateRoomCmdData;
import com.red.circle.other.app.dto.cmd.room.UpdateRoomSettingCmd;
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.RoomSetting;
import com.red.circle.other.inner.model.dto.live.RoomCounterDTO;
import com.red.circle.other.inner.model.dto.live.RoomProfileDTO;
import com.red.circle.other.inner.model.dto.live.RoomProfileManagerDTO;
import org.mapstruct.Mapper;

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

  RoomCounterDTO toRoomCounterDTO(RoomCounter roomCounter);

  RoomProfileDTO toRoomProfileDTO(RoomProfile roomProfile);

  RoomProfileCO toRoomProfileCO(RoomProfile roomProfile);

  RoomProfileManagerDTO toRoomProfileManagerDTO(RoomProfileManager roomProfileManager);

  RoomVoiceProfileCO toRoomVoiceProfileCO(RoomProfileManager cmd);

  RoomSettingCO toRoomSettingCO(RoomSetting roomSettingV2);

  RoomSetting toRoomSetting(UpdateRoomSettingCmd cmd);

  RoomVoiceCreateSuccessEvent toRoomVoiceCreateSuccessEvent(RoomProfileManager roomProfile);

  RoomProfile toRoomProfile(UpdateRoomCmdData cmd);

  RoomProfileDTO toRoomProfileDTO(UpdateRoomCmdData cmd);

}
