<?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="DATA-7952_create_chart_rankings:1" author="veixar">
        <query>
            CALL apoc.periodic.iterate(
                "
                    MATCH (sr:SoundRecording)-[r:RANKED_ON]->(c:Chart)
                    WHERE c.platform &lt;&gt; 'tiktok'
                    RETURN sr, r, c
                ",
                "
                    MERGE (cr:ChartRanking:Chartmetric {soundRecordingId: sr.id, chartId: c.id, timestamp: date(r.timestamp)})
                        ON CREATE SET
                            cr.position = r.position,
                            cr.positionChange = r.positionChange,
                            cr.trackId = toString(r.trackId),
                            cr.streams = r.streams,
                            cr.id = apoc.create.uuid(),
                            cr.createdAt = datetime()
                    MERGE (sr)-[:HAS_CHART_RANKING]->(cr)
                    MERGE (cr)-[:APPEARS_ON_CHART]->(c)
                ",
                {batchSize:1000, iterateList:true, parallel:false}
            );
        </query>
    </changeset>
    <changeset id="DATA-7952_create_chart_rankings:2" author="veixar">
        <query>
            CALL apoc.periodic.iterate(
                "
                    MATCH (sr:SoundRecording)-[r:RANKED_ON]->(c:Chart)
                    WHERE c.platform = 'tiktok'
                    RETURN sr, r, c
                ",
                "
                    MERGE (cr:ChartRanking:Chartmetric {soundRecordingId: sr.id, chartId: c.id, timestamp: date(r.timestamp), position: r.position})
                        ON CREATE SET
                            cr.positionChange = r.positionChange,
                            cr.trackId = toString(r.trackId),
                            cr.streams = r.streams,
                            cr.id = apoc.create.uuid(),
                            cr.createdAt = datetime()
                    MERGE (sr)-[:HAS_CHART_RANKING]->(cr)
                    MERGE (cr)-[:APPEARS_ON_CHART]->(c)
                ",
                {batchSize:1000, iterateList:true, parallel:false}
            );
        </query>
    </changeset>
</changelog>
