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

import com.google.cloud.bigtable.data.v2.models.Row;

import org.springframework.stereotype.Service;

import io.delphiplatform.api.v3.bigtable.entity.PlaylistPublicDaily;
import lombok.extern.slf4j.Slf4j;

import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.COUNTRY_CODE;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.NUMBER_OF_TRACKS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.PLAYLIST_ID;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.DSP_SYNC_DATE_TIME;

@Slf4j
@Service
public class PlaylistPublicDailyReader extends BigtableEntityReader<PlaylistPublicDaily> {

    @Override
    public Class<PlaylistPublicDaily> getParsedClass() {
        return PlaylistPublicDaily.class;
    }

    @Override
    public PlaylistPublicDaily readRow(Row row) {
        PlaylistPublicDaily playlistPublicDaily = new PlaylistPublicDaily();

        playlistPublicDaily.setReportDate(readDate(row));
        playlistPublicDaily.setPlaylistId(readString(row, PLAYLIST_ID));
        playlistPublicDaily.setCountryCode(readString(row, COUNTRY_CODE));
        Integer numberOfTracks = readIntFromStringColumn(row, metrics, NUMBER_OF_TRACKS);
        playlistPublicDaily.setNumberOfTracks(numberOfTracks != null ? Long.valueOf(numberOfTracks) : null);
        playlistPublicDaily.setDspSyncDateTime(readDateTime(row, metrics, DSP_SYNC_DATE_TIME));

        return playlistPublicDaily;
    }
}
