<?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="FIX_bad_label_participants:1" author="veixar" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (lp:LabelParticipant)
                WHERE EXISTS(lp.spotifyId) AND NOT EXISTS((:GlobalParticipant { spotifyId: lp.spotifyId })-[:REPRESENTS]->(lp))
                MERGE(gp:GlobalParticipant {spotifyId: lp.spotifyId})
                    ON CREATE SET
                        gp.id = apoc.create.uuid(),
                        gp.name = lp.name,
                        gp.appleMusicId = lp.appleMusicId,
                        gp.createdAt = datetime(),
                        gp.createdBy = 'database/FIX_bad_label_participants:1'
                MERGE(gp)-[r:REPRESENTS]->(lp)
                    ON CREATE SET
                        r.createdAt = datetime(),
                        r.createdBy = 'database/FIX_bad_label_participants:1'
                    SET
                        r.lastModifiedAt = datetime(),
                        r.lastModifiedBy = 'database/FIX_bad_label_participants:1'
            ]]>
        </query>
    </changeset>
    <changeset id="FIX_bad_label_participants:2" author="veixar" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (gp:GlobalParticipant)
                WHERE gp.id IN [
                    "06d037ce-a13e-4ba4-bd67-90054e4b8764",
                    "9c5ce7d6-1ce8-4c23-8a1f-f5ebd83e8ced",
                    "efe5776e-ff0f-4825-ba30-f66927c84b61"
                ]
                DETACH DELETE gp
            ]]>
        </query>
    </changeset>
    <changeset id="FIX_bad_label_participants:3" author="veixar" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (gp:GlobalParticipant)-[:REPRESENTS]->(lp:LabelParticipant)
                WHERE lp.spotifyId IS NULL
                SET
                    lp.spotifyId = gp.spotifyId,
                    lp.lastModifiedAt = datetime(),
                    lp.lastModifiedBy = 'database/FIX_bad_label_participants:3'
            ]]>
        </query>
    </changeset>
    <changeset id="FIX_bad_label_participants:4" author="veixar" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (gp:GlobalParticipant)-[rel:REPRESENTS]->(lp:LabelParticipant)
                WHERE lp.spotifyId <> gp.spotifyId
                    AND lp.spotifyId IS NOT NULL 
                    AND EXISTS((lp)<-[:REPRESENTS]-(:GlobalParticipant {spotifyId: lp.spotifyId}))
                DELETE rel
            ]]>
        </query>
    </changeset>
    <changeset id="FIX_bad_label_participants:5" author="veixar" run-on-change="true">
        <query>
            <![CDATA[
                MATCH (gp:GlobalParticipant)-[:REPRESENTS]->(lp:LabelParticipant)
                WHERE lp.spotifyId <> gp.spotifyId
                    AND lp.spotifyId IS NOT NULL 
                    AND NOT EXISTS((lp)<-[:REPRESENTS]-(:GlobalParticipant {spotifyId: lp.spotifyId}))
                SET
                    lp.spotifyId = gp.spotifyId,
                    lp.lastModifiedAt = datetime(),
                    lp.lastModifiedBy = 'database/FIX_bad_label_participants:5'
            ]]>
        </query>
    </changeset>
</changelog>
