<?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-8695_missing_social_stats:1" author="savva" run-on-change="true">
        <query>
            <![CDATA[
                WITH range(0, 3) AS items, 1000000 AS step
                UNWIND items AS i
                WITH step AS limit, i * step AS offset
                CALL apoc.periodic.iterate(
                    "
                        WITH 'snowflake_orchard' AS url_alias,
                        '
                            SELECT chartmetric_id, url
                            FROM (
                                SELECT
                                    cm_artist AS chartmetric_id,
                                    (\\'https://open.spotify.com/artist/\\' || spotify_artist_id) AS url
                                FROM CHARTMETRIC.RAW_DATA.SPOTIFY_ARTIST
                                UNION
                                SELECT
                                    cm_artist AS chartmetric_id,
                                    (\\'https://deezer.com/artist/\\' || id) AS url
                                FROM chartmetric.raw_data.deezer_artist
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.facebook_stat A
                                JOIN chartmetric.raw_data.cm_url U ON A.account_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                WHERE U.active = TRUE
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.instagram_stat A
                                JOIN chartmetric.raw_data.cm_url U ON A.account_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                WHERE U.active = TRUE
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.soundcloud_user_stat A
                                JOIN chartmetric.raw_data.cm_url U ON A.account_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                WHERE U.active = TRUE
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.tiktok_user A
                                JOIN chartmetric.raw_data.cm_url U ON A.user_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.twitter_stat A
                                JOIN chartmetric.raw_data.cm_url U ON A.account_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                WHERE U.active = TRUE
                                UNION
                                SELECT DISTINCT
                                    CA.id AS chartmetric_id,
                                    U.url
                                FROM chartmetric.raw_data.youtube_channel_stat A
                                JOIN chartmetric.raw_data.cm_url U ON A.account_id = U.account_id
                                JOIN chartmetric.raw_data.cm_artist CA ON CA.id = U.target_id
                                WHERE U.active = TRUE
                            ) t
                            WHERE chartmetric_id IS NOT NULL AND url IS NOT NULL
                            ORDER BY chartmetric_id
                            LIMIT ' + $limit + ' OFFSET ' + $offset
                        AS sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MATCH (p:Participant {chartmetricId: row.CHARTMETRIC_ID})
                        MATCH (sa:PublicSocialAccount {url: row.URL})
                        WHERE NOT (p)-[:HAS_SOCIAL_ACCOUNT]->(sa)
                        MERGE (p)-[:HAS_SOCIAL_ACCOUNT]->(sa)
                    ",
                    {batchSize:1000, iterateList:true, parallel:true, concurrency: 5, params:{limit: limit, offset: offset}}
                )
                YIELD total
                RETURN total;
            ]]>
        </query>
    </changeset>
</changelog>
