package io.delphiplatform.api.v3.rdb.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Collection;
import java.util.Set;
import java.util.UUID;

import io.delphiplatform.api.v3.rdb.entity.ads.linkfire.LinkfireDimLinkEntity;

public interface LinkfireDimLinkRepository extends JpaRepository<LinkfireDimLinkEntity, UUID>,
    JpaSpecificationExecutor<LinkfireDimLinkEntity> {

    @Query(nativeQuery = true,
        value = "select distinct cast(lc.link_id as text) "
            + " from decibel.linkfire_link_campaign lc "
            + " where lc.link_id is not null "
            + "   and lc.campaign_id in (:campaignIds) ")
    Set<String> findByCampaign(@Param("campaignIds") Collection<String> campaignIds);

    @Query(nativeQuery = true,
        value = "select distinct cast(lp.link_id as text) "
            + " from decibel.linkfire_link_project lp "
            + " where lp.link_id is not null "
            + "   and lp.project_id in (:projectIds) ")
    Set<String> findByProject(@Param("projectIds") Collection<String> projectIds);

}
