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

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

public interface LinkfireDimReferrerRepository extends JpaRepository<LinkfireDimReferrerEntity, Long>,
    JpaSpecificationExecutor<LinkfireDimReferrerEntity> {

    @Query(
        nativeQuery = true,
        value = "SELECT DISTINCT lc.campaign_id "
            + "    FROM decibel.linkfire_link_campaign lc "
            + "             INNER JOIN linkfire.fact_event_funnel_daily fact ON fact.link_id = lc.link_id "
            + "             INNER JOIN linkfire.dim_referrer referrer ON referrer.referrer_key = fact.referrer_key "
            + "    WHERE referrer.referrer_name IN (:domains);"
    )
    Set<String> findCampaignsForReferrerName(@Param("domains") Set<String> domains);

}
