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

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

import fr.xebia.extras.selma.IgnoreMissing;
import fr.xebia.extras.selma.Mapper;
import io.delphiplatform.api.v3.model.amazon.AmazonStreamsInfo;
import io.delphiplatform.api.v3.model.apple.AppleStreamsInfo;
import io.delphiplatform.api.v3.model.mapper.streamsinfo.AmazonMappings;
import io.delphiplatform.api.v3.model.mapper.streamsinfo.AppleMappings;
import io.delphiplatform.api.v3.model.mapper.streamsinfo.SpotifyMappings;
import io.delphiplatform.api.v3.model.spotify.SpotifyStreamsInfo;

@Mapper(withIgnoreMissing = IgnoreMissing.ALL, withCustom = {
    JsonNullableMappings.class,
    AmazonMappings.class,
    AppleMappings.class,
    SpotifyMappings.class
})
public interface StreamsInfoMapper {

    SpotifyStreamsInfo toStreamsInfo(Spotify.SpotifyStreamStats spotifyStreamStats);

    AmazonStreamsInfo toStreamsInfo(Amazon.AmazonStreamStats amazonStreamStats);

    AppleStreamsInfo toStreamsInfo(Apple.AppleStreamStats appleStreamStats);

}
