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

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

import fr.xebia.extras.selma.Field;
import fr.xebia.extras.selma.IgnoreMissing;
import fr.xebia.extras.selma.Mapper;
import io.delphiplatform.api.v3.model.amazon.AmazonDeviceType;
import io.delphiplatform.api.v3.model.amazon.AmazonEngagement;
import io.delphiplatform.api.v3.model.amazon.AmazonOperatingSystem;
import io.delphiplatform.api.v3.model.amazon.AmazonReferralSourceType;
import io.delphiplatform.api.v3.model.amazon.AmazonSelectionSourceType;
import io.delphiplatform.api.v3.model.amazon.AmazonSubscriptionType;
import io.delphiplatform.api.v3.model.mapper.JsonNullableMappings;

@Mapper(withIgnoreMissing = IgnoreMissing.ALL, withCustom = JsonNullableMappings.class,
    withCustomFields = {
        @Field({"promotionalMarketingInventory", "smePromotionalMarketingInventory"}),
        @Field({"paidPromotion", "smePaidPromotion"})
    }
)
public interface AmazonStreamsInfoMapper {

    AmazonDeviceType toDto(Amazon.AmazonAggregate.DeviceType source);

    AmazonEngagement toDto(Amazon.AmazonAggregate.Engagement source);

    AmazonOperatingSystem toDto(Amazon.AmazonAggregate.OperatingSystem source);

    AmazonReferralSourceType toDto(Amazon.AmazonAggregate.ReferralSourceType source);

    AmazonSelectionSourceType toDto(Amazon.AmazonAggregate.SelectionSourceType source);

    AmazonSubscriptionType toDto(Amazon.AmazonAggregate.SubscriptionType source);

}
