<?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="DS-5539_backfill_released_content_2:1_1" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (p:Product:Orchard)
                WHERE
                    date('2015-01-01') <= p.saleStartDate < date()
                    AND p.deletions = false
                    AND (p.releaseStatus = 'in_content')
                    AND p.notForDistribution in ['N', 'SMEAnalyticsDummy', 'SwitchboardDummy']
                MATCH (lsr:LabelSoundRecording)<-[:IS_PLACEMENT_OF]-(t:Track:Orchard)<-[:INCLUDES]-(p)
                USING JOIN ON p
                WHERE
                    NOT (lsr)<-[:REPRESENTS]-(:GlobalSoundRecording)
                    AND COALESCE(lsr.name, '') <> ''
                    AND lsr.isrc =~ '^[A-Za-z]{2}[-]?[0-9A-Za-z]{3}[-]?[0-9]{2}[-]?[0-9]{5}$'
                WITH
                    lsr,
                    COLLECT(DISTINCT t.type) AS trackTypes,
                    COLLECT(DISTINCT p.releaseDate) AS releaseDates
                WITH lsr, trackTypes, HEAD(apoc.coll.sort(releaseDates)) AS releaseDate
                MERGE (n:GlobalSoundRecording {isrc: toUpper(lsr.isrc)})
                    ON CREATE SET
                        n.id = apoc.create.uuid(),
                        n.createdAt = datetime(),
                        n.createdBy = 'database/DS-5539_backfill_released_content_2:1',
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.types = trackTypes,
                        n.releaseDate = releaseDate
                    ON MATCH SET
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.lastModifiedAt = datetime(),
                        n.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:1',
                        n.types = apoc.coll.sort(apoc.coll.union(n.types, trackTypes))
                MERGE (n)-[r:REPRESENTS]->(lsr)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/DS-5539_backfill_released_content_2:1'
                    ON MATCH SET
                        r.lastModifiedAt = datetime(),
                        r.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:1'
                WITH
                    lsr, n
                MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr)
                    WITH DISTINCT pc, h, lsr, n
                    CREATE (pc)-[has:HAS_SOUND_RECORDING]->(n)
                    SET
                        has.createdAt = datetime(),
                        has.lastModifiedAt = datetime(),
                        has.createdBy = 'database/DS-5539_backfill_released_content_2:1'
                    CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr)
                    SET
                        dhas.deletedAt = datetime(),
                        has.deletedBy = 'database/DS-5539_backfill_released_content_2:1'
                    DELETE h
                    ;
            ]]>
        </query>
    </changeset>
    <changeset id="DS-5539_backfill_released_content_2:1_2" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (p:Product:Orchard)
                WHERE
                    p.saleStartDate < date('2015-01-01')
                    AND p.deletions = false
                    AND (p.releaseStatus = 'in_content')
                    AND p.notForDistribution in ['N', 'SMEAnalyticsDummy', 'SwitchboardDummy']
                MATCH (lsr:LabelSoundRecording)<-[:IS_PLACEMENT_OF]-(t:Track:Orchard)<-[:INCLUDES]-(p)
                USING JOIN ON p
                WHERE
                    NOT (lsr)<-[:REPRESENTS]-(:GlobalSoundRecording)
                    AND COALESCE(lsr.name, '') <> ''
                    AND lsr.isrc =~ '^[A-Za-z]{2}[-]?[0-9A-Za-z]{3}[-]?[0-9]{2}[-]?[0-9]{5}$'
                WITH
                    lsr,
                    COLLECT(DISTINCT t.type) AS trackTypes,
                    COLLECT(DISTINCT p.releaseDate) AS releaseDates
                WITH lsr, trackTypes, HEAD(apoc.coll.sort(releaseDates)) AS releaseDate
                MERGE (n:GlobalSoundRecording {isrc: toUpper(lsr.isrc)})
                    ON CREATE SET
                        n.id = apoc.create.uuid(),
                        n.createdAt = datetime(),
                        n.createdBy = 'database/DS-5539_backfill_released_content_2:1',
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.types = trackTypes,
                        n.releaseDate = releaseDate
                    ON MATCH SET
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.lastModifiedAt = datetime(),
                        n.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:1',
                        n.types = apoc.coll.sort(apoc.coll.union(n.types, trackTypes))
                MERGE (n)-[r:REPRESENTS]->(lsr)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/DS-5539_backfill_released_content_2:1'
                    ON MATCH SET
                        r.lastModifiedAt = datetime(),
                        r.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:1'
                WITH
                    lsr, n
                MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr)
                    WITH DISTINCT pc, h, lsr, n
                    CREATE (pc)-[has:HAS_SOUND_RECORDING]->(n)
                    SET
                        has.createdAt = datetime(),
                        has.lastModifiedAt = datetime(),
                        has.createdBy = 'database/DS-5539_backfill_released_content_2:1'
                    CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr)
                    SET
                        dhas.deletedAt = datetime(),
                        has.deletedBy = 'database/DS-5539_backfill_released_content_2:1'
                    DELETE h
                    ;
            ]]>
        </query>
    </changeset>
    <changeset id="DS-5539_backfill_released_content_2:2" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (p:Product:Orchard)
                WHERE
                    p.preorderDate <= date()
                    AND p.deletions = false
                    AND (p.releaseStatus = 'in_content')
                    AND p.notForDistribution in ['N', 'SMEAnalyticsDummy', 'SwitchboardDummy']
                MATCH (lsr:LabelSoundRecording)<-[:IS_PLACEMENT_OF]-(t:Track:Orchard)<-[:INCLUDES]-(p)
                USING JOIN ON p
                WHERE
                    NOT (lsr)<-[:REPRESENTS]-(:GlobalSoundRecording)
                    AND COALESCE(lsr.name, '') <> ''
                    AND lsr.isrc =~ '^[A-Za-z]{2}[-]?[0-9A-Za-z]{3}[-]?[0-9]{2}[-]?[0-9]{5}$'
                WITH
                    lsr,
                    COLLECT(DISTINCT t.type) AS trackTypes,
                    COLLECT(DISTINCT p.releaseDate) AS releaseDates
                WITH lsr, trackTypes, HEAD(apoc.coll.sort(releaseDates)) AS releaseDate
                MERGE (n:GlobalSoundRecording {isrc: toUpper(lsr.isrc)})
                    ON CREATE SET
                        n.id = apoc.create.uuid(),
                        n.createdAt = datetime(),
                        n.createdBy = 'database/DS-5539_backfill_released_content_2:2',
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.types = trackTypes,
                        n.releaseDate = releaseDate
                    ON MATCH SET
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.lastModifiedAt = datetime(),
                        n.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:2',
                        n.types = apoc.coll.sort(apoc.coll.union(n.types, trackTypes))
                MERGE (n)-[r:REPRESENTS]->(lsr)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/DS-5539_backfill_released_content_2:2'
                    ON MATCH SET
                        r.lastModifiedAt = datetime(),
                        r.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:2'
                WITH
                    lsr, n
                MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr)
                    WITH DISTINCT pc, h, lsr, n
                    CREATE (pc)-[has:HAS_SOUND_RECORDING]->(n)
                    SET
                        has.createdAt = datetime(),
                        has.lastModifiedAt = datetime(),
                        has.createdBy = 'database/DS-5539_backfill_released_content_2:2'
                    CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr)
                    SET
                        dhas.deletedAt = datetime(),
                        has.deletedBy = 'database/DS-5539_backfill_released_content_2:2'
                    DELETE h
                ;
            ]]>
        </query>
    </changeset>
    <changeset id="DS-5539_backfill_released_content_2:3" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                    MATCH (p:Product:Orchard)
                    WHERE
                        p.createdAt < datetime()
                        AND (
                            p.saleStartDate < date()
                            OR
                            p.preorderDate < date()
                        )
                        AND p.deletions = false
                        AND (p.releaseStatus = 'in_content')
                        AND p.notForDistribution in ['N', 'SMEAnalyticsDummy', 'SwitchboardDummy']
                    MATCH (lsr:LabelSoundRecording)<-[:IS_PLACEMENT_OF]-(t:Track:Orchard)<-[:INCLUDES]-(p)
                    USING JOIN ON p
                    WHERE
                        NOT (lsr)<-[:REPRESENTS]-(:GlobalSoundRecording)
                        AND COALESCE(lsr.name, '') <> ''
                        AND lsr.isrc =~ '^[A-Za-z]{2}[-]?[0-9A-Za-z]{3}[-]?[0-9]{2}[-]?[0-9]{5}$'
                    WITH
                        lsr,
                        COLLECT(DISTINCT t.type) AS trackTypes,
                        COLLECT(DISTINCT p.releaseDate) AS releaseDates
                    WITH lsr, trackTypes, HEAD(apoc.coll.sort(releaseDates)) AS releaseDate
                    MERGE (n:GlobalSoundRecording {isrc: toUpper(lsr.isrc)})
                        ON CREATE SET
                            n.id = apoc.create.uuid(),
                            n.createdAt = datetime(),
                            n.createdBy = 'database/DS-5539_backfill_released_content_2:3',
                            n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                            n.types = trackTypes,
                            n.releaseDate = releaseDate
                        ON MATCH SET
                            n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                            n.lastModifiedAt = datetime(),
                            n.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:3',
                            n.types = apoc.coll.sort(apoc.coll.union(n.types, trackTypes))
                    MERGE (n)-[r:REPRESENTS]->(lsr)
                        ON CREATE SET
                            r.createdAt = datetime(),
                            r.createdBy = 'database/DS-5539_backfill_released_content_2:3'
                        ON MATCH SET
                            r.lastModifiedAt = datetime(),
                            r.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:3'
                    WITH
                        lsr, n
                    MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr)
                        WITH DISTINCT pc, h, lsr, n
                        CREATE (pc)-[has:HAS_SOUND_RECORDING]->(n)
                        SET
                            has.createdAt = datetime(),
                            has.lastModifiedAt = datetime(),
                            has.createdBy = 'database/DS-5539_backfill_released_content_2:3'
                        CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr)
                        SET
                            dhas.deletedAt = datetime(),
                            has.deletedBy = 'database/DS-5539_backfill_released_content_2:3'
                        DELETE h
                    ;
            ]]>
        </query>
    </changeset>
    <changeset id="DS-5539_backfill_released_content_2:4" author="ssavva" run-always="true">
        <query>
            <![CDATA[
                MATCH (lsr:LabelSoundRecording)<-[:IS_PLACEMENT_OF]-(t:Track:Orchard)<-[:INCLUDES]-(p:Product:Orchard)
                        <-[:INCLUDES]-(pr:Project)-[:BELONGS_TO]->(:Vendor)<-[:HAS_LABEL]-(cp:CompanyBrand)
                USING SCAN cp:CompanyBrand
                WHERE
                    cp.name = 'awal'
                    AND (
                        p.saleStartDate < date()
                        OR
                        p.preorderDate < date()
                    )
                    AND p.deletions = false
                    AND p.notForDistribution in ['N', 'SMEAnalyticsDummy', 'SwitchboardDummy']
                    AND NOT (lsr)<-[:REPRESENTS]-(:GlobalSoundRecording)
                    AND COALESCE(lsr.name, '') <> ''
                    AND lsr.isrc =~ '^[A-Za-z]{2}[-]?[0-9A-Za-z]{3}[-]?[0-9]{2}[-]?[0-9]{5}$'
                WITH
                    lsr,
                    COLLECT(DISTINCT t.type) AS trackTypes,
                    COLLECT(DISTINCT p.releaseDate) AS releaseDates
                WITH lsr, trackTypes, HEAD(apoc.coll.sort(releaseDates)) AS releaseDate
                MERGE (n:GlobalSoundRecording {isrc: toUpper(lsr.isrc)})
                    ON CREATE SET
                        n.id = apoc.create.uuid(),
                        n.createdAt = datetime(),
                        n.createdBy = 'database/DS-5539_backfill_released_content_2:4',
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.types = trackTypes,
                        n.releaseDate = releaseDate
                    ON MATCH SET
                        n.name = CASE WHEN COALESCE(lsr.version, '') = '' THEN lsr.name ELSE lsr.name + ' - ' + lsr.version END,
                        n.lastModifiedAt = datetime(),
                        n.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:4',
                        n.types = apoc.coll.sort(apoc.coll.union(n.types, trackTypes))
                MERGE (n)-[r:REPRESENTS]->(lsr)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/DS-5539_backfill_released_content_2:4'
                    ON MATCH SET
                        r.lastModifiedAt = datetime(),
                        r.lastModifiedBy = 'database/DS-5539_backfill_released_content_2:4'
                WITH
                    lsr, n
                MATCH (pc:PublishingComposition)-[h:HAS_SOUND_RECORDING]->(lsr)
                    WITH DISTINCT pc, h, lsr, n
                    CREATE (pc)-[has:HAS_SOUND_RECORDING]->(n)
                    SET
                        has.createdAt = datetime(),
                        has.lastModifiedAt = datetime(),
                        has.createdBy = 'database/DS-5539_backfill_released_content_2:4'
                    CREATE (pc)-[dhas:DELETED_HAS_SOUND_RECORDING]->(lsr)
                    SET
                        dhas.deletedAt = datetime(),
                        has.deletedBy = 'database/DS-5539_backfill_released_content_2:4'
                    DELETE h
                ;
            ]]>
        </query>
    </changeset>
</changelog>
