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.Chartmetric;

import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.ARTIST_ID;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.DSP;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.FANS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.FOLLOWERS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.LIKES;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.LISTENERS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.POPULARITY;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.SUBSCRIBERS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.TALKS;
import static io.delphiplatform.api.v3.bigtable.reader.BigtableColumns.VIEWS;

@Service
public class ChartmetricReader extends BigtableEntityReader<Chartmetric> {

    @Override
    public Chartmetric readRow(Row row) {
        Chartmetric chartmetric = new Chartmetric();

        chartmetric.setDate(readDate(row));
        chartmetric.setDsp(readString(row, DSP));
        chartmetric.setArtistId(readString(row, ARTIST_ID));
        chartmetric.setFans(readLong(row, FANS));
        chartmetric.setFollowers(readLong(row, FOLLOWERS));
        chartmetric.setLikes(readLong(row, LIKES));
        chartmetric.setListeners(readLong(row, LISTENERS));
        chartmetric.setPopularity(readLong(row, POPULARITY));
        chartmetric.setTalks(readLong(row, TALKS));
        chartmetric.setSubscribers(readLong(row, SUBSCRIBERS));
        chartmetric.setViews(readLong(row, VIEWS));

        return chartmetric;
    }

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

}
