<?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-87_migrate_failures_20221206:1"
     author="pdumoulin"
     run-always="true"
     topic="event.workflow.backfill.v2.assets">
        <precondition>
            <sqlquery>
                <![CDATA[
                    WITH sr_errors AS (
                        SELECT DISTINCT(dh.SOUND_RECORDING_ID) AS osr_id
                        FROM facts.prod.ORCHARD_SOUND_RECORDING_DELIVERY_HISTORY AS dh
                        WHERE
                            dh.SERVICE = 'Meta (Audio Fingerprinting)'
                            AND dh.EVENT_TYPE = 'failure'
                            AND dh.MESSAGE LIKE '%Unable to find asset for delivery%'
                            AND dh."TIMESTAMP" > '2022-12-06 21:00:00'
                            AND dh."TIMESTAMP" < '2022-12-07'
                    )
                    SELECT 
                        CONCAT('releaseId:', op.id) AS KEY,
                        OBJECT_CONSTRUCT('product_id', TO_VARCHAR(op.id)) AS VALUE
                    FROM
                        sr_errors AS err
                    JOIN facts.prod.ORCHARD_SOUND_RECORDING AS osr 
                        ON osr.ID = err.osr_id
                    JOIN facts.prod.CONTAINS_FINGERPRINT AS cfp 
                        ON cfp.ORCHARD_SOUND_RECORDING_ID = osr.ID
                    JOIN facts.prod.FINGERPRINTED_AS AS fp 
                        ON fp.ACRID_ID = cfp.ACRID_ID
                    JOIN facts.prod.ORCHARD_ASSET AS oa 
                        ON oa.ID = fp.ORCHARD_ASSET_ID
                    JOIN facts.prod.HAS_ASSET AS ha 
                        ON ha.ORCHARD_ASSET_ID = oa.ID
                    JOIN facts.prod.ORCHARD_TRACK AS ot 
                        ON ot.ID = ha.ORCHARD_TRACK_ID
                    JOIN facts.prod.ORCHARD_PRODUCT AS op 
                        ON op.ID = ot.PRODUCT_ID
                        AND op.RELEASE_STATUS = 'in_content'
                    GROUP BY
                        1,
                        2
                    ;
                ]]>
            </sqlquery>
        </precondition>
    </changeset>
</changelog>
