<?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_create_missing_assets:1" author="gaguirre" run-always="true">
        <precondition>
            <sqlquery>
                <![CDATA[
                    SELECT
                        au.TRACK_UNIQUE_ID,
                        au.UPDATED_TIMESTAMP,
                        au.DELETED AS OWS_ASSETS_DELETED,
                        ha.ORCHARD_TRACK_ID IS NULL AS NEO4J_MISSING,
                        SPLIT_PART(af.FILENAME, '.', 0) AS ASSETS_FINAL_FILENAME,
                        SPLIT_PART(af.FILENAME, '.', 2) AS ASSETS_FINAL_EXTENSION,
                        ha.ORCHARD_ASSET_ID AS neo4j_asset_id
                    FROM ORCHARD_APP_REPORTING_V2.PROD_OWS_ASSETS_OWS_ASSETS.ASSET_UPLOAD AS au
                    JOIN ORCHARD_APP_REPORTING_V2.PROD_OWS_ASSETS_OWS_ASSETS.ASSET_FINAL AS af
                        ON au.id = af.ASSET_UPLOAD_ID
                        AND au.IS_CORRECTION = 0
                        AND au.API_VERSION = 2
                        AND af.ASSET_TYPE = 'FLAC'
                        AND au.TRACK_UNIQUE_ID != 0
                    JOIN facts.PROD.ORCHARD_TRACK AS ot
                        ON au.TRACK_UNIQUE_ID = ot.ID
                    JOIN facts.prod.registry AS r
                        ON ot.ID = r.tuid
                    LEFT JOIN facts.prod.ORCHARD_ASSET AS oa
                        ON oa.filename = SPLIT_PART(af.FILENAME, '.', 0)
                    LEFT JOIN facts.prod.HAS_ASSET AS ha
                        ON ha.ORCHARD_ASSET_ID = oa.ID
                        AND ha.ORCHARD_TRACK_ID = au.TRACK_UNIQUE_ID
                    WHERE
                        OWS_ASSETS_DELETED = 0
                        AND NEO4J_MISSING = 1
                        AND au.UPDATED_TIMESTAMP < TIMESTAMPADD(HOUR, -1, CURRENT_TIMESTAMP())
                    GROUP BY 1,2,3,4,5,6,7
                    ORDER BY au.UPDATED_TIMESTAMP DESC;
                ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                WITH
                  event,
                  {
                    createdAt: datetime(),
                    createdBy: 'database/SR-579_create_missing_assets:1',
                    lastModifiedAt: datetime(),
                    lastModifiedBy: 'database/SR-579_create_missing_assets:1'
                  } AS createdData,
                  {
                    lastModifiedAt: datetime(),
                    lastModifiedBy: 'database/SR-579_create_missing_assets:1'
                  } AS updatedData
                MERGE (oa:OrchardAsset {
                  filename: event.ASSETS_FINAL_FILENAME,
                  extension: event.ASSETS_FINAL_EXTENSION,
                  source: 'ows-assets-db'
                })
                  ON CREATE SET
                    oa.id = apoc.create.uuid(),
                    oa.bucket = 'prod-orcd-mezzanine-assets',
                    oa += createdData
                  ON MATCH SET
                    oa.bucket = 'prod-orcd-mezzanine-assets',
                    oa += updatedData

                MERGE (t:Track:Orchard {id: toInteger(event.TRACK_UNIQUE_ID)})
                  ON CREATE SET
                    t += createdData

                MERGE (t)-[newHa:HAS_ASSET]->(oa)
                  ON CREATE SET
                    newHa += createdData
                ;
            ]]>
        </cypherquery>
    </changeset>
</changelog>
