package io.delphiplatform.api.v3.model.mapper.streamsinfo;

import com.sonymusic.delphi.etl.apps.proto.Apple;

import fr.xebia.extras.selma.IgnoreMissing;
import fr.xebia.extras.selma.Mapper;
import io.delphiplatform.api.v3.model.apple.AppleContainerSubType;
import io.delphiplatform.api.v3.model.apple.AppleContainerType;
import io.delphiplatform.api.v3.model.apple.AppleDeviceType;
import io.delphiplatform.api.v3.model.apple.AppleListenerEngagement;
import io.delphiplatform.api.v3.model.apple.AppleOs;
import io.delphiplatform.api.v3.model.apple.AppleSource;
import io.delphiplatform.api.v3.model.apple.AppleUserType;
import io.delphiplatform.api.v3.model.mapper.JsonNullableMappings;

@Mapper(withIgnoreMissing = IgnoreMissing.ALL, withCustom = JsonNullableMappings.class)
public interface AppleStreamsInfoMapper {

    AppleSource toDto(Apple.AppleMusicAggregation.Source source);

    AppleContainerType toDto(Apple.AppleMusicAggregation.ContainerType source);

    AppleContainerSubType toDto(Apple.AppleMusicAggregation.ContainerSubType source);

    AppleDeviceType toDto(Apple.AppleMusicAggregation.DeviceType source);

    AppleOs toDto(Apple.AppleMusicAggregation.Os source);

    AppleUserType toDto(Apple.AppleMusicAggregation.UserType source);

    AppleListenerEngagement toDto(Apple.AppleMusicAggregation.ListenerEngagement source);

}
