<?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="ARTARCH_491_version:1" author="gaguirre" run-on-change="true">
        <query>
            CALL apoc.log.info("Starting run of lsr version ingest at %s", [datetime()]);
        </query>
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        MATCH (t:Track:Orchard)-[:IS_PLACEMENT_OF]->(lsr:LabelSoundRecording:Orchard)
                        RETURN lsr, t
                    ",
                    "
                        WITH lsr, t
                        ORDER BY t.updatedAt DESC
                        WITH lsr, HEAD(COLLECT(t)) AS track
                        SET
                            lsr.version = track.version,
                            lsr.modifiedAt = datetime(),
                            lsr.updatedAt = NULL
                    ",
                    {batchSize:1000, iterateList:true, parallel:true}
                );
            ]]>
        </query>
        <query>
            CALL apoc.log.info("Finished lsr version ingest at %s", [datetime()]);
        </query>
    </changeset>
    <changeset id="ARTARCH_491_version:2" author="gaguirre" run-on-change="true">
        <query>
            CALL apoc.log.info("Starting run of gsr ingest at %s", [datetime()]);
        </query>
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        MATCH (lsr:LabelSoundRecording:Orchard)<-[:REPRESENTS]-(gsr:GlobalSoundRecording)
                        WHERE NOT (gsr)-[:REPRESENTS]->(:PublicSoundRecording)
                        RETURN lsr, gsr
                    ",
                    "
                        WITH lsr, gsr
                        ORDER BY lsr.modifiedAt DESC
                        WITH gsr, HEAD(COLLECT(lsr)) AS labelSoundRecording
                        CALL apoc.when(
                            '
                                COALESCE(version, \"\") <> \"\"
                            ',
                            '
                                MATCH(gsr:GlobalSoundRecording { id: gsrId })
                                SET
                                    gsr.name = gsr.name + ' - ' + version,
                                    gsr.modifiedAt = datetime()
                            ',
                            '
                                RETURN true
                            ',
                            {
                                gsrId: gsr.id,
                                version: labelSoundRecording.version
                            }
                        )
                        YIELD value
                        RETURN value
                    ",
                    {batchSize:1000, iterateList:true, parallel:true}
                );
            ]]>
        </query>
        <query>
            CALL apoc.log.info("Finished gsr ingest at %s", [datetime()]);
        </query>
    </changeset>
</changelog>
