<?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="YT-246_backfill_missing_assets:1" author="ayermakov">
        <query>
            CALL apoc.periodic.iterate(
                '
                    WITH "
                        SELECT DISTINCT
                          s.assetid,
                          s.videoid,
                          s.uploadertype,
                          s.channelid,
                          dt.isrc,
                          dt.trackname,
                          v.isrc as video_isrc
                        FROM facts.prod.fact_youtube_asset_analytics s
                        LEFT JOIN facts.prod.dim_track_clean dt
                          ON s.isrcid = dt.isrcid
                        LEFT JOIN facts.prod.staging_raw_youtube_video_report v
                          ON s.videoid = v.video_id
                        LEFT JOIN facts.prod.dim_track_clean dtv
                          ON v.isrc = dtv.isrc
                        WHERE v.isrc IS NOT NULL
                          AND v.content_type = \'PARTNER_UPLOADED\'
                          AND v.licensor = \'theorchard\';
                    " AS sql
                    CALL apoc.load.jdbc("snowflake_orchard", sql) YIELD row RETURN row
                ',
                '
                    WITH row
                    MERGE (a:YoutubeAsset:YouTube {assetId: row.ASSETID})
                        ON CREATE SET
                            a.id = apoc.create.uuid(),
                            a.isrc = row.ISRC,
                            a.name = row.TRACKNAME,
                            a.createdAt = datetime(),
                            a.modifiedAt = datetime()
                    WITH row, a
                    MATCH (v:Video:YouTube {videoId: row.VIDEOID})
                    MERGE (a)-[:APPEARS_IN_VIDEO]->(v)
                    WITH row, a
                    MATCH (gsr:GlobalSoundRecording {isrc: row.ISRC})
                    MERGE (gsr)-[:REPRESENTS]->(a)
                ',
                {batchSize:1000, iterateList:true, parallel:false}
            );
        </query>
    </changeset>
</changelog>

