<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:/var/app/InputFileSchema.xsd">
    <changeset id="SR-579_backfill_osr_tiktok:1" author="gaguirre" run-always="true">
        <precondition>
            <sqlquery>
                <![CDATA[
                    WITH tuids_ordered_by_revenue AS (
                        WITH registry_tuids AS (
                            SELECT DISTINCT tuid FROM facts.prod.registry
                        )
                        SELECT
                            rt.tuid AS track_id,
                            t.track_name,
                            r.display_upc AS "Product UPC",
                            r.RELEASE_NAME AS "Product Name",
                            v.vendor_id AS "Account ID",
                            v.company AS "Account Name",
                            st.display_name AS "Account Service Tier",
                            sub.subaccount_id AS "SubAccount ID",
                            sub.subaccount_name AS "SubAccount Name",
                            IFNULL(sum(fs.gross), 0) AS gross_revenue
                        FROM registry_tuids rt
                        JOIN FACTS.PROD.FACT_SALES AS fs
                            ON rt.tuid = fs.trackid
                        JOIN orchard_app_reporting_v2.art_relations_PROD_art_relations.track t
                            ON rt.tuid = t.id
                        JOIN orchard_app_reporting_v2.art_relations_PROD_art_relations.releases r
                            ON t.release_id = r.release_id
                        JOIN orchard_app_reporting_v2.art_relations_PROD_art_relations.project p
                            ON r.project_id = p.project_id
                        JOIN orchard_app_reporting_v2.art_relations_PROD_art_relations.vendor v
                            ON p.vendor_id = v.vendor_id
                        LEFT JOIN orchard_app_reporting_v2.art_relations_PROD_art_relations.subaccount sub
                            ON sub.subaccount_id = p.subaccount_id
                        LEFT JOIN FACTS.PROD.VENDOR_IN_SERVICE_TIER_SERVICE_TIER vst
                            ON v.vendor_id = vst.vendor_id
                        LEFT JOIN FACTS.PROD.SERVICE_TIER st
                            ON st.uuid = vst.service_tier_uuid
                        GROUP BY 1,2,3,4,5,6,7,8,9
                        ORDER BY 10 DESC
                    )
                    SELECT
                        DISTINCT(osr.id) AS OSR_ID,
                        tobr.gross_revenue
                    FROM tuids_ordered_by_revenue AS tobr
                    JOIN facts.prod.ORCHARD_TRACK AS ot
                        ON ot.id = tobr.track_id
                    JOIN facts.prod.ORCHARD_PRODUCT AS op
                        ON op.id = ot.product_id and op.deletions = FALSE
                    JOIN facts.prod.HAS_ASSET AS ha
                        ON ot.ID = ha.ORCHARD_TRACK_ID
                    JOIN facts.prod.ORCHARD_ASSET AS oa
                        ON ha.ORCHARD_ASSET_ID = oa.ID
                    JOIN facts.prod.FINGERPRINTED_AS AS fp
                        ON oa.ID = fp.ORCHARD_ASSET_ID
                    JOIN facts.prod.CONTAINS_FINGERPRINT AS cfp
                        ON cfp.ACRID_ID = fp.ACRID_ID
                    JOIN facts.prod.ORCHARD_SOUND_RECORDING AS osr
                        ON osr.id = cfp.ORCHARD_SOUND_RECORDING_ID
                    LEFT JOIN facts.prod.ORCHARD_SOUND_RECORDING_DELIVERY_HISTORY AS osrdh
                        ON osrdh.SOUND_RECORDING_ID = osr.id AND osrdh.service = 'TikTok (Audio Fingerprinting)'
                    WHERE osrdh.SOUND_RECORDING_ID IS NULL
                    ORDER BY tobr.gross_revenue DESC
                    LIMIT 150000
               ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                MATCH(osr:OrchardSoundRecording)
                WHERE osr.id = event.OSR_ID
                SET
                    osr.lastModifiedAt = datetime(),
                    osr.lastModifiedBy = 'database/SR-579_backfill_osr_tiktok:1',
                    osr.touchedByBackfillAt = datetime()
            ]]>
        </cypherquery>
    </changeset>
</changelog>
