<?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-14_fix_sync_duplicates_5:1" author="pdumoulin" run-always="true">
        <precondition>
            <sqlquery>
                <![CDATA[
                    WITH asset_winners AS (
                        WITH stats AS (
                            SELECT
                                ha.ORCHARD_TRACK_ID as TUID,
                                count(*) AS C
                            FROM facts.prod.HAS_ASSET AS ha
                            GROUP BY 1
                            HAVING c > 1
                        )
                        SELECT
                            au.TRACK_UNIQUE_ID AS TUID,
                            MAX(af.ID) AS ASSET_FINAL_ID
                        FROM ORCHARD_APP_REPORTING_V2.PROD_OWS01_OWS_ASSETS.ASSET_UPLOAD AS au
                        JOIN stats
                        ON stats.TUID = au.TRACK_UNIQUE_ID
                        AND au.DELETED = 0
                        AND au.IS_CORRECTION = 0
                        AND au.API_VERSION = 2
                        JOIN ORCHARD_APP_REPORTING_V2.PROD_OWS01_OWS_ASSETS.ASSET_FINAL AS af
                        ON af.ASSET_UPLOAD_ID = au.ID
                        AND af.ASSET_TYPE = 'FLAC'
                        GROUP BY 1
                    )
                    SELECT
                        asset_winners.TUID AS TUID,
                        SPLIT_PART(afw.FILENAME, '.', 1) AS FILENAME,
                        SPLIT_PART(afw.FILENAME, '.', 2) AS EXT
                    FROM asset_winners
                    JOIN ORCHARD_APP_REPORTING_V2.PROD_OWS01_OWS_ASSETS.ASSET_FINAL AS afw
                    ON afw.ID = asset_winners.ASSET_FINAL_ID
                    ;
               ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                MATCH(tr:Track)-[x:HAS_ASSET]->(oa:OrchardAsset)
                WHERE tr.id = event.TUID
                AND oa.filename <> event.FILENAME
                CALL apoc.refactor.setType(x, 'DELETED_HAS_ASSET')
                YIELD input, output
                RETURN output
                ;
            ]]>
        </cypherquery>
    </changeset>
</changelog>
