<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://www.liquigraph.org/schema/1.0/liquigraph.xsd">
    <changeset id="DISTRO-4795_create-orchard-assets-after-acr:1" author="gaguirre" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            WITH latest_asset_upload_ids AS (
                                SELECT max(au.id) AS id
                                FROM orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au
                                INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = au.id
                                WHERE
                                    af.asset_type IN (\\'WAV\\', \\'FLAC\\')
                                AND
                                    deleted = 0
                                AND
                                    au.is_correction = 0
                                GROUP BY track_unique_id
                            )
                            SELECT DISTINCT
                                au.track_unique_id,
                                af.filename,
                                af.asset_type
                            FROM latest_asset_upload_ids
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au ON au.id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t ON t.id = au.track_unique_id
                            LEFT JOIN facts.prod.sound_recording_track_mapping srtm ON srtm.tuid = au.track_unique_id
                            WHERE
                                af.asset_type IN (\\'FLAC\\', \\'WAV\\')
                            AND
                                srtm.tuid IS NULL
                            GROUP BY 1,2,3
                            ORDER BY au.track_unique_id
                            LIMIT 500000;
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (t:Track:Orchard {id: toInteger(row.TRACK_UNIQUE_ID)})
                        MERGE (oa:OrchardAsset {filename: apoc.text.regreplace(row.FILENAME, '.wav|.flac', ''), source: 'ows-assets-db', extension: toLower(row.ASSET_TYPE)})
                            ON CREATE SET
                                oa.id = apoc.create.uuid(),
                                oa.createdAt = datetime(),
                                oa.createdBy = 'database/DISTRO-4795',
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                            ON MATCH SET
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                        MERGE (t)-[ha:HAS_ASSET]->(oa)
                            ON CREATE SET
                                ha.createdBy = 'database/distro-4795',
                                ha.createdAt = datetime(),
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                        WITH t
                        MATCH (oldOa:OrchardAsset)<-[oldHa:HAS_ASSET]-(t) WHERE oldOa.source = 'direct-delivery-db'
                        MERGE (oldOa)<-[dha:DELETED_HAS_ASSET]-(t)
                            ON CREATE SET
                                dha.createdBy = 'database/distro-4795',
                                dha.createdAt = datetime(),
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                        DELETE oldHa
                    ",
                    {batchSize:1000}
                )
                YIELD failedOperations, errorMessages, failedBatches, batch
                CALL apoc.util.validate(failedOperations > 0, "At least one sub-operation failed: %s", [reduce(all_errors = "", error IN keys(errorMessages) | all_errors + ", " + error)])
                CALL apoc.util.validate(failedBatches > 0, "At least one batch failed: %s", [reduce(all_errors = "", error IN keys(batch.errors) | all_errors + ", " + error)])
                RETURN 0;
            ]]>
        </query>
    </changeset>
    <changeset id="DISTRO-4795_create-orchard-assets-after-acr:2" author="gaguirre" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            WITH latest_asset_upload_ids AS (
                                SELECT max(au.id) AS id
                                FROM orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au
                                INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = au.id
                                WHERE
                                    af.asset_type IN (\\'WAV\\', \\'FLAC\\')
                                AND
                                    deleted = 0
                                AND
                                    au.is_correction = 0
                                GROUP BY track_unique_id
                            )
                            SELECT DISTINCT
                                au.track_unique_id,
                                af.filename,
                                af.asset_type
                            FROM latest_asset_upload_ids
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au ON au.id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t ON t.id = au.track_unique_id
                            LEFT JOIN facts.prod.sound_recording_track_mapping srtm ON srtm.tuid = au.track_unique_id
                            WHERE
                                af.asset_type IN (\\'FLAC\\', \\'WAV\\')
                            AND
                                srtm.tuid IS NULL
                            GROUP BY 1,2,3
                            ORDER BY au.track_unique_id
                            LIMIT 500000
                            OFFSET 500000;
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (t:Track:Orchard {id: toInteger(row.TRACK_UNIQUE_ID)})
                        MERGE (oa:OrchardAsset {filename: apoc.text.regreplace(row.FILENAME, '.wav|.flac', ''), source: 'ows-assets-db', extension: toLower(row.ASSET_TYPE)})
                            ON CREATE SET
                                oa.id = apoc.create.uuid(),
                                oa.createdAt = datetime(),
                                oa.createdBy = 'database/DISTRO-4795',
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                            ON MATCH SET
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                        MERGE (t)-[ha:HAS_ASSET]->(oa)
                            ON CREATE SET
                                ha.createdBy = 'database/distro-4795',
                                ha.createdAt = datetime(),
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                        WITH t
                        MATCH (oldOa:OrchardAsset)<-[oldHa:HAS_ASSET]-(t) WHERE oldOa.source = 'direct-delivery-db'
                        MERGE (oldOa)<-[dha:DELETED_HAS_ASSET]-(t)
                            ON CREATE SET
                                dha.createdBy = 'database/distro-4795',
                                dha.createdAt = datetime(),
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                        DELETE oldHa
                    ",
                    {batchSize:1000}
                )
                YIELD failedOperations, errorMessages, failedBatches, batch
                CALL apoc.util.validate(failedOperations > 0, "At least one sub-operation failed: %s", [reduce(all_errors = "", error IN keys(errorMessages) | all_errors + ", " + error)])
                CALL apoc.util.validate(failedBatches > 0, "At least one batch failed: %s", [reduce(all_errors = "", error IN keys(batch.errors) | all_errors + ", " + error)])
                RETURN 0;
            ]]>
        </query>
    </changeset>
    <changeset id="DISTRO-4795_create-orchard-assets-after-acr:3" author="gaguirre" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            WITH latest_asset_upload_ids AS (
                                SELECT max(au.id) AS id
                                FROM orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au
                                INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = au.id
                                WHERE
                                    af.asset_type IN (\\'WAV\\', \\'FLAC\\')
                                AND
                                    deleted = 0
                                AND
                                    au.is_correction = 0
                                GROUP BY track_unique_id
                            )
                            SELECT DISTINCT
                                au.track_unique_id,
                                af.filename,
                                af.asset_type
                            FROM latest_asset_upload_ids
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au ON au.id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t ON t.id = au.track_unique_id
                            LEFT JOIN facts.prod.sound_recording_track_mapping srtm ON srtm.tuid = au.track_unique_id
                            WHERE
                                af.asset_type IN (\\'FLAC\\', \\'WAV\\')
                            AND
                                srtm.tuid IS NULL
                            GROUP BY 1,2,3
                            ORDER BY au.track_unique_id
                            LIMIT 500000
                            OFFSET 1000000;
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (t:Track:Orchard {id: toInteger(row.TRACK_UNIQUE_ID)})
                        MERGE (oa:OrchardAsset {filename: apoc.text.regreplace(row.FILENAME, '.wav|.flac', ''), source: 'ows-assets-db', extension: toLower(row.ASSET_TYPE)})
                            ON CREATE SET
                                oa.id = apoc.create.uuid(),
                                oa.createdAt = datetime(),
                                oa.createdBy = 'database/DISTRO-4795',
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                            ON MATCH SET
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                        MERGE (t)-[ha:HAS_ASSET]->(oa)
                            ON CREATE SET
                                ha.createdBy = 'database/distro-4795',
                                ha.createdAt = datetime(),
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                        WITH t
                        MATCH (oldOa:OrchardAsset)<-[oldHa:HAS_ASSET]-(t) WHERE oldOa.source = 'direct-delivery-db'
                        MERGE (oldOa)<-[dha:DELETED_HAS_ASSET]-(t)
                            ON CREATE SET
                                dha.createdBy = 'database/distro-4795',
                                dha.createdAt = datetime(),
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                        DELETE oldHa
                    ",
                    {batchSize:1000}
                )
                YIELD failedOperations, errorMessages, failedBatches, batch
                CALL apoc.util.validate(failedOperations > 0, "At least one sub-operation failed: %s", [reduce(all_errors = "", error IN keys(errorMessages) | all_errors + ", " + error)])
                CALL apoc.util.validate(failedBatches > 0, "At least one batch failed: %s", [reduce(all_errors = "", error IN keys(batch.errors) | all_errors + ", " + error)])
                RETURN 0;
            ]]>
        </query>
    </changeset>
    <changeset id="DISTRO-4795_create-orchard-assets-after-acr:4" author="gaguirre" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            WITH latest_asset_upload_ids AS (
                                SELECT max(au.id) AS id
                                FROM orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au
                                INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = au.id
                                WHERE
                                    af.asset_type IN (\\'WAV\\', \\'FLAC\\')
                                AND
                                    deleted = 0
                                AND
                                    au.is_correction = 0
                                GROUP BY track_unique_id
                            )
                            SELECT DISTINCT
                                au.track_unique_id,
                                af.filename,
                                af.asset_type
                            FROM latest_asset_upload_ids
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au ON au.id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t ON t.id = au.track_unique_id
                            LEFT JOIN facts.prod.sound_recording_track_mapping srtm ON srtm.tuid = au.track_unique_id
                            WHERE
                                af.asset_type IN (\\'FLAC\\', \\'WAV\\')
                            AND
                                srtm.tuid IS NULL
                            GROUP BY 1,2,3
                            ORDER BY au.track_unique_id
                            LIMIT 500000
                            OFFSET 1500000;
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (t:Track:Orchard {id: toInteger(row.TRACK_UNIQUE_ID)})
                        MERGE (oa:OrchardAsset {filename: apoc.text.regreplace(row.FILENAME, '.wav|.flac', ''), source: 'ows-assets-db', extension: toLower(row.ASSET_TYPE)})
                            ON CREATE SET
                                oa.id = apoc.create.uuid(),
                                oa.createdAt = datetime(),
                                oa.createdBy = 'database/DISTRO-4795',
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                            ON MATCH SET
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                        MERGE (t)-[ha:HAS_ASSET]->(oa)
                            ON CREATE SET
                                ha.createdBy = 'database/distro-4795',
                                ha.createdAt = datetime(),
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                        WITH t
                        MATCH (oldOa:OrchardAsset)<-[oldHa:HAS_ASSET]-(t) WHERE oldOa.source = 'direct-delivery-db'
                        MERGE (oldOa)<-[dha:DELETED_HAS_ASSET]-(t)
                            ON CREATE SET
                                dha.createdBy = 'database/distro-4795',
                                dha.createdAt = datetime(),
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                        DELETE oldHa
                    ",
                    {batchSize:1000}
                )
                YIELD failedOperations, errorMessages, failedBatches, batch
                CALL apoc.util.validate(failedOperations > 0, "At least one sub-operation failed: %s", [reduce(all_errors = "", error IN keys(errorMessages) | all_errors + ", " + error)])
                CALL apoc.util.validate(failedBatches > 0, "At least one batch failed: %s", [reduce(all_errors = "", error IN keys(batch.errors) | all_errors + ", " + error)])
                RETURN 0;
            ]]>
        </query>
    </changeset>
    <changeset id="DISTRO-4795_create-orchard-assets-after-acr:5" author="gaguirre" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            WITH latest_asset_upload_ids AS (
                                SELECT max(au.id) AS id
                                FROM orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au
                                INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = au.id
                                WHERE
                                    af.asset_type IN (\\'WAV\\', \\'FLAC\\')
                                AND
                                    deleted = 0
                                AND
                                    au.is_correction = 0
                                GROUP BY track_unique_id
                            )
                            SELECT DISTINCT
                                au.track_unique_id,
                                af.filename,
                                af.asset_type
                            FROM latest_asset_upload_ids
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_upload au ON au.id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.prod_ows01_ows_assets.asset_final af ON af.asset_upload_id = latest_asset_upload_ids.id
                            INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t ON t.id = au.track_unique_id
                            LEFT JOIN facts.prod.sound_recording_track_mapping srtm ON srtm.tuid = au.track_unique_id
                            WHERE
                                af.asset_type IN (\\'FLAC\\', \\'WAV\\')
                            AND
                                srtm.tuid IS NULL
                            GROUP BY 1,2,3
                            ORDER BY au.track_unique_id
                            LIMIT 500000
                            OFFSET 2000000;
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (t:Track:Orchard {id: toInteger(row.TRACK_UNIQUE_ID)})
                        MERGE (oa:OrchardAsset {filename: apoc.text.regreplace(row.FILENAME, '.wav|.flac', ''), source: 'ows-assets-db', extension: toLower(row.ASSET_TYPE)})
                            ON CREATE SET
                                oa.id = apoc.create.uuid(),
                                oa.createdAt = datetime(),
                                oa.createdBy = 'database/DISTRO-4795',
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                            ON MATCH SET
                                oa.lastModifiedAt = datetime(),
                                oa.lastModifiedBy = 'database/DISTRO-4795'
                        MERGE (t)-[ha:HAS_ASSET]->(oa)
                            ON CREATE SET
                                ha.createdBy = 'database/distro-4795',
                                ha.createdAt = datetime(),
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                ha.lastModifiedAt = datetime(),
                                ha.lastModifiedBy = 'database/distro-4795'
                        WITH t
                        MATCH (oldOa:OrchardAsset)<-[oldHa:HAS_ASSET]-(t) WHERE oldOa.source = 'direct-delivery-db'
                        MERGE (oldOa)<-[dha:DELETED_HAS_ASSET]-(t)
                            ON CREATE SET
                                dha.createdBy = 'database/distro-4795',
                                dha.createdAt = datetime(),
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                            ON MATCH SET
                                dha.lastModifiedAt = datetime(),
                                dha.lastModifiedBy = 'database/distro-4795'
                        DELETE oldHa
                    ",
                    {batchSize:1000}
                )
                YIELD failedOperations, errorMessages, failedBatches, batch
                CALL apoc.util.validate(failedOperations > 0, "At least one sub-operation failed: %s", [reduce(all_errors = "", error IN keys(errorMessages) | all_errors + ", " + error)])
                CALL apoc.util.validate(failedBatches > 0, "At least one batch failed: %s", [reduce(all_errors = "", error IN keys(batch.errors) | all_errors + ", " + error)])
                RETURN 0;
            ]]>
        </query>
    </changeset>
</changelog>
