<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.liquigraph.org/schema/1.0/liquigraph.xsd">

    <changeset id="PUB-108-merge-duplicates:1" author="j0shua">
        <query>
            <![CDATA[
            CALL apoc.periodic.iterate(
                '
                    MATCH (p1:PublishingSongWriter)--(l:Label)--(p2:PublishingSongWriter)
                    WHERE p1.pubWriterID = p2.pubWriterID AND p1.id <> p2.id return  p1
                ',
                '
                    MATCH (p1:PublishingSongWriter)--(l:Label)--(p2:PublishingSongWriter)
                    WHERE p1.pubWriterID = p2.pubWriterID AND p1.id <> p2.id
                    WITH * LIMIT 1
                    CALL apoc.do.when(
                        size(p1.legalName) > size(p2.legalName),
                        "CALL apoc.refactor.mergeNodes([p1, p2], {properties: \'discard\', mergeRels: true}) YIELD node RETURN node",
                        "CALL apoc.refactor.mergeNodes([p2, p1], {properties: \'discard\', mergeRels: true}) YIELD node RETURN node",
                        {p1: p1, p2: p2}
                    )
                    YIELD value
                    WITH value.node as node
                    RETURN node
                ',
                {batchSize:1, batchMode: 'SINGLE', parallel:true, concurrency:5})
            ]]>
        </query>
    </changeset>

    <changeset id="PUB-108-merge-duplicates:2" author="j0shua">
        <query>
            <![CDATA[
            CALL apoc.periodic.iterate(
                '
                    MATCH (p1:PublishingPublisher)--(l:Label)--(p2:PublishingPublisher)
                    WHERE p1.pubPublisherID = p2.pubPublisherID AND p1.id <> p2.id return  p1
                ',
                '
                    MATCH (p1:PublishingPublisher)--(l:Label)--(p2:PublishingPublisher)
                    WHERE p1.pubPublisherID = p2.pubPublisherID AND p1.id <> p2.id
                    WITH * LIMIT 1
                    CALL apoc.do.when(
                        size(p1.name) > size(p2.name),
                        "CALL apoc.refactor.mergeNodes([p1, p2], {properties: \'discard\', mergeRels: true}) YIELD node RETURN node",
                        "CALL apoc.refactor.mergeNodes([p2, p1], {properties: \'discard\', mergeRels: true}) YIELD node RETURN node",
                        {p1: p1, p2: p2}
                    )
                    YIELD value
                    WITH value.node as node
                    RETURN node
                ',
                {batchSize:1, batchMode: 'SINGLE', parallel:true, concurrency:5})
            ]]>
        </query>
    </changeset>
</changelog>
