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

import java.time.LocalDate;
import java.util.List;

import io.delphiplatform.api.v3.bigtable.processing.GroupByFieldEnum;
import io.delphiplatform.api.v3.model.tiktok.TikTokContentType;
import io.delphiplatform.api.v3.model.tiktok.top.sound.TikTokTopIsrcSound;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

@EqualsAndHashCode
@Getter
@Setter
public class TikTokIsrcTopSoundGroupByKey {

    private LocalDate reportDate;
    private String soundId;
    private TikTokContentType contentType;

    public TikTokIsrcTopSoundGroupByKey(TikTokTopIsrcSound topIsrcSound, List<GroupByFieldEnum> groupByFields) {
        groupByFields.forEach(groupByField -> {
            if (groupByField == GroupByFieldEnum.DATE) {
                this.reportDate = topIsrcSound.getReportDate();
            }
            if (groupByField == GroupByFieldEnum.SOUND_ID) {
                this.soundId = topIsrcSound.getSoundId();
            }
            if (groupByField == GroupByFieldEnum.CONTENT_TYPE) {
                this.contentType = topIsrcSound.getContentType();
            }
        });
    }

    public void populateTikTokTopIsrcSound(TikTokTopIsrcSound topIsrcSound) {
        if (this.reportDate != null) {
            topIsrcSound.setReportDate(this.reportDate);
        }
        if (this.soundId != null) {
            topIsrcSound.setSoundId(this.soundId);
        }
        if (this.contentType != null) {
            topIsrcSound.setContentType(this.contentType);
        }
    }


}
