<?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="IN-17308_bulk_fix_lp_spotifyIdApi:1"
        author="rroy"
        neo4j-server="music-graph"
        run-on-change="true"
    >
        <precondition>
            <sqlquery>
                <![CDATA[
                    SELECT lp.UUID AS LP_UUID
                    FROM FACTS.PROD.LABEL_PARTICIPANT lp
                    LEFT JOIN FACTS.PROD.GLOBAL_PARTICIPANT_REPRESENTS_LABEL_PARTICIPANT r
                        ON r.LABEL_PARTICIPANT_UUID = lp.UUID
                    WHERE UPPER(TRIM(lp.SPOTIFY_ID)) = 'NEW'
                    AND (
                        r.LABEL_PARTICIPANT_UUID IS NULL
                        OR r.GLOBAL_PARTICIPANT_ID = '243192da-f0d2-405c-b9ac-9509eedca035'
                    )
                ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                MATCH (lp:LabelParticipant {uuid: event.LP_UUID})
                WHERE lp.spotifyIdApi IS NOT NULL
                  AND lp.spotifyId IS NULL
                OPTIONAL MATCH (liShaoluGP:GlobalParticipant {id: '243192da-f0d2-405c-b9ac-9509eedca035'})-[oldRel:REPRESENTS]->(lp)
                DELETE oldRel
                WITH lp
                SET lp.spotifyId = lp.spotifyIdApi,
                    lp.lastModifiedAt = datetime(),
                    lp.lastModifiedBy = 'database/IN-17308_bulk_fix_lp_spotifyIdApi:1'
                WITH lp
                OPTIONAL MATCH (gp:GlobalParticipant {spotifyId: lp.spotifyId})
                WITH lp, gp
                WHERE gp IS NOT NULL
                MERGE (gp)-[r:REPRESENTS]->(lp)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/IN-17308_bulk_fix_lp_spotifyIdApi:1'
            ]]>
        </cypherquery>
    </changeset>

    <changeset
        id="IN-17308_bulk_fix_lp_spotifyIdApi:2"
        author="rroy"
        neo4j-server="music-graph"
        run-on-change="true"
    >
        <precondition>
            <sqlquery>
                <![CDATA[
                    SELECT lp.UUID AS LP_UUID
                    FROM FACTS.PROD.LABEL_PARTICIPANT lp
                    LEFT JOIN FACTS.PROD.GLOBAL_PARTICIPANT_REPRESENTS_LABEL_PARTICIPANT r
                        ON r.LABEL_PARTICIPANT_UUID = lp.UUID
                    WHERE UPPER(TRIM(lp.SPOTIFY_ID)) = 'NEW'
                    AND (
                        r.LABEL_PARTICIPANT_UUID IS NULL
                        OR r.GLOBAL_PARTICIPANT_ID = '243192da-f0d2-405c-b9ac-9509eedca035'
                    )
                ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                MATCH (lp:LabelParticipant {uuid: event.LP_UUID})
                WHERE lp.spotifyIdApi IS NULL
                  AND lp.spotifyId IS NULL
                OPTIONAL MATCH (liShaoluGP:GlobalParticipant {id: '243192da-f0d2-405c-b9ac-9509eedca035'})-[oldRel:REPRESENTS]->(lp)
                DELETE oldRel
                WITH lp
                SET lp.lastModifiedAt = datetime(),
                    lp.lastModifiedBy = 'database/IN-17308_bulk_fix_lp_spotifyIdApi:2'
            ]]>
        </cypherquery>
    </changeset>

    <changeset
        id="IN-17308_bulk_fix_lp_spotifyIdApi:3"
        author="rroy"
        neo4j-server="music-graph"
        run-on-change="true"
    >
        <precondition>
            <sqlquery>
                <![CDATA[
                    SELECT ID AS GP_ID
                    FROM FACTS.PROD.GLOBAL_PARTICIPANT
                    WHERE ID = '243192da-f0d2-405c-b9ac-9509eedca035'
                    AND UPPER(TRIM(SPOTIFY_ID)) = 'NEW'
                ]]>
            </sqlquery>
        </precondition>
        <cypherquery>
            <![CDATA[
                MATCH (gp:GlobalParticipant {id: event.GP_ID})
                SET gp.spotifyId = 'LiShaolu',
                    gp.lastModifiedAt = datetime(),
                    gp.lastModifiedBy = 'database/IN-17308_bulk_fix_lp_spotifyIdApi:3'
            ]]>
        </cypherquery>
    </changeset>

</changelog>
