package io.delphiplatform.api.integration.context.bigtable;

import org.springframework.core.io.support.EncodedResource;
import org.springframework.stereotype.Component;

import io.delphiplatform.api.integration.client.TestBigtableClient;
import io.delphiplatform.api.integration.dto.StreamsDto;
import io.delphiplatform.api.integration.manager.TestBigtableManager;
import io.delphiplatform.api.v3.constant.BigtableTableName;

@Component
public class BigtableTestAppleStreamsExecutor extends BigtableTestDataExecutor {

    public BigtableTestAppleStreamsExecutor(TestBigtableManager bigtableManager,
        TestBigtableClient bigtableClient) {
        super(bigtableManager, bigtableClient);
    }

    @Override
    public void populate(EncodedResource encodedResource) {
        StreamsDto[] rows = readRows(encodedResource, StreamsDto[].class);
        for (StreamsDto row : rows) {
            bigtableManager.createAppleMusicTrackStream(
                row.getRowKey(),
                row.getDate(),
                row.getPlaylistId(),
                row.getIsrc(),
                row.getTrackId(),
                row.getArtistId(),
                row.getStreamsCountries()
            );
        }
    }

    @Override
    public String getTableName() {
        return BigtableTableName.APPLE_STREAMS;
    }
}
