package io.delphiplatform.api.v3.bigtable.processing;

import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Stream;

import io.delphiplatform.api.v3.bigtable.entity.TrackStream;
import io.delphiplatform.api.v3.constant.CountryCodeConstant;
import io.delphiplatform.api.v3.model.StreamDate;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class StreamDatesConverter {

    public Stream<StreamDate> convert(Stream<List<TrackStream<?, ?>>> streamsForDates) {
        return streamsForDates.map(streams -> {
                StreamDate streamDate = new StreamDate();
                streamDate.setDate(streams.get(0).getDate());
                streamDate.setDsp(streams.get(0).getDsp());
                streamDate.setIsrc(streams.get(0).getIsrc());
                streamDate.setCountryCode(CountryCodeConstant.WORLDWIDE);
                streamDate.setStreams(streams.stream().mapToLong(s -> s.getStreams(CountryCodeConstant.WORLDWIDE)).sum());
                return streamDate;
            }
        );
    }

}
