<?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="WIZ-1786_retry_moved:1"
     author="pdumoulin"
     run-always="true"
     topic="event.workflow.backfill.v2.assets">
        <precondition>
            <sqlquery>
                <![CDATA[
                    WITH upcs AS (
                        SELECT
                            DISTINCT(a.UPC)
                        FROM ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.ASSET_LOCATION AS al 
                        JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.ASSET_LOCATION_DETAIL AS ald 
                            ON ald.ASSET_LOCATION_ID = al.ASSET_LOCATION_ID
                        JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.ASSET AS a 
                            ON a.ASSET_ID = al.ASSET_ID
                        JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.STORAGE_DRIVE AS sd 
                            ON sd.STORAGE_DRIVE_ID = al.STORAGE_DRIVE_ID
                        JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.STORAGE AS s 
                            ON sd.STORAGE_ID = s.STORAGE_ID
                        WHERE 
                            al.LAST_MODIFIED IS NOT NULL 
                            AND STATUS = 'Y'
                            AND s.PHYSICAL_LOCATION_ID = 1
                            AND al.LAST_MODIFIED > '2023-10-26'
                            AND a.ASSET_TYPE_ID = 1
                    ),
                    can_migrate AS (
                        SELECT
                            r.RELEASE_ID,
                            r.upc,
                            count_if(al.ASSET_ID IS NOT NULL) = 0 AS missing_dddb,
                            count(DISTINCT(tr.ID)) > count(DISTINCT(au.TRACK_UNIQUE_ID)) AS missing_upload,
                            count(DISTINCT(tr.ID)) > count(DISTINCT(af.ASSET_UPLOAD_ID)) AS missing_flac,
                            count(DISTINCT(tr.ID)) AS num_tracks
                        FROM ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.RELEASES AS r
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.ASSET AS a 
                            ON r.UPC = a.UPC
                            AND a.ASSET_TYPE_ID = 1
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.REPORTSDD_DIRECT_DELIVERY.ASSET_LOCATION AS al 
                            ON al.ASSET_ID = a.ASSET_ID
                            AND al.status = 'Y'
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.TRACK AS tr
                            ON tr.RELEASE_ID = r.RELEASE_ID
                            AND r.RELEASE_STATUS = 'in_content'
                            AND r.NOT_FOR_DISTRIBUTION IN ('N', 'EditoriallySuspectContent', 'NotforFurtherDistribution')
                            AND tr.TRACK_TYPE = 'music'
                            AND (r."VERSION" != 'Ringtone' OR r."VERSION" IS NULL)
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.PROD_OWS_ASSETS_OWS_ASSETS.ASSET_UPLOAD AS au
                            ON au.TRACK_UNIQUE_ID = tr.ID
                            AND au.API_VERSION = 2
                            AND au.IS_CORRECTION = 0
                            AND au.DELETED = 0
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.PROD_OWS_ASSETS_OWS_ASSETS.ASSET_FINAL AS af 
                            ON au.ID = af.ASSET_UPLOAD_ID
                            AND af.ASSET_TYPE = 'FLAC'
                        LEFT JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.PRODUCT_PHYSICAL AS pf
                            ON pf.RELEASE_ID = r.RELEASE_ID
                        WHERE 
                            pf.ID IS NULL
                        GROUP BY 1, 2
                        HAVING 
                            missing_upload = TRUE
                            AND num_tracks > 0
                            AND missing_dddb = FALSE
                    )
                    SELECT 
                        CONCAT('releaseId:', can_migrate.release_id) AS KEY,
                        OBJECT_CONSTRUCT(
                            'product_id', TO_VARCHAR(can_migrate.release_id),
                            'suffix', 'retry-20231211'
                        ) AS VALUE
                    FROM upcs 
                    JOIN can_migrate 
                        ON upcs.upc = can_migrate.upc
                    ;
                ]]>
            </sqlquery>
        </precondition>
    </changeset>
</changelog>
