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

    <!-- 48 TrackArtist are missing in neo4j -->
    <changeset id="KDH-440-BACKFILL-track_artist_art_relations_only-1" author="npatel" neo4j-server="music-graph" run-always="true">
        <precondition>
            <sqlquery>
                <![CDATA[
                    SELECT ta.id, ta.track_id, ta.name, ta.type, coalesce(p.subaccount_id, 0) as SUBACCOUNT_ID, pr.vendor_id  
                    FROM orchard_app_reporting_v2.art_relations_prod_art_relations.track_artist ta
                    INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.track t on t.id = ta.track_id
                    INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.releases p on p.release_id = t.release_id
                    INNER JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.project pr on pr.project_id = p.project_id
                    WHERE ta.id in (
                        19615134, 58559006, 2500907, 61552023, 58559099, 19615127, 19615136, 58559045, 19615129, 61552016, 1000465168, 1000762199, 101157435, 99477974, 58559023, 1000761506, 58558975, 100835403, 58559066, 61552019, 19615135, 61552014, 58559070, 61552018, 58559058, 19615137, 58559033, 19615138, 19615139, 61552015, 19615131, 58559078, 101157439, 2500908, 61552020, 19615125, 19615133, 58558944, 61552021, 19615132, 19615128, 61552022, 19615126, 99477977, 19615130, 3524808, 61552017, 58558977, 101940932, 3524807
                    );
                ]]>
            </sqlquery>
        </precondition>
        
    <!-- same as /lambda-kinesis-to-neo4j/blob/master/lambda/kinesis-to-neo4j/src/logic/art_relations/queries/queries.py#L1378 but with event. prefix -->
        <cypherquery>
            <![CDATA[
                MERGE (ta:TrackArtist {id: toInteger(event.ID)})
                    ON CREATE SET
                        ta.trackId = toInteger(event.TRACK_ID),
                        ta.name = event.NAME,
                        ta.type = event.TYPE,
                        ta.createdAt = datetime(),
                        ta.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        ta.lastModifiedAt = datetime(),
                        ta.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                    ON MATCH SET
                        ta.trackId = toInteger(event.TRACK_ID),
                        ta.name = event.NAME,
                        ta.type = event.TYPE,
                        ta.lastModifiedAt = datetime(),
                        ta.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (t:Track:Orchard {id: event.TRACK_ID})
                    ON CREATE SET
                        t.createdAt = datetime(),
                        t.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        t.lastModifiedAt = datetime(),
                        t.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (t)-[hsa:HAS_SOURCE_ARTIST]->(ta)
                    ON CREATE SET
                        hsa.createdAt = datetime(),
                        hsa.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        hsa.lastModifiedAt = datetime(),
                        hsa.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (
                    lp:LabelParticipant:Orchard {
                        normalizedName: toLower(trim(apoc.text.regreplace(event.NAME, '[ ]+', ''))),
                        vendorId: event.VENDOR_ID,
                        subaccountId: event.SUBACCOUNT_ID
                    }
                )
                    ON CREATE SET
                        lp.id = datetime.realtime().epochMillis,
                        lp.uuid = apoc.create.uuid(),
                        lp.createdAt = datetime(),
                        lp.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        lp.lastModifiedAt = datetime(),
                        lp.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        lp.name = trim(apoc.text.regreplace(event.NAME, '[ ]{2,}', ' '))
                    ON MATCH SET
                        lp.lastModifiedAt = datetime(),
                        lp.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (lp)-[participation:PARTICIPATED_IN {participated_as: event.TYPE}]->(t)
                    ON CREATE SET
                        participation.createdAt = datetime(),
                        participation.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        participation.lastModifiedAt = datetime(),
                        participation.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (lp)-[cf:CREATED_FROM]->(ta)
                    ON CREATE SET
                        cf.createdAt = datetime(),
                        cf.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        cf.lastModifiedAt = datetime(),
                        cf.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (v:Vendor:Label:Orchard {id: lp.vendorId})
                    ON CREATE SET
                        v.createdAt = datetime(),
                        v.uuid = '',
                        v.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        v.lastModifiedAt = datetime(),
                        v.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                MERGE (v)-[hlp:HAS_LABEL_PARTICIPANT]->(lp)
                    ON CREATE SET
                        hlp.createdAt = datetime(),
                        hlp.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                        hlp.lastModifiedAt = datetime(),
                        hlp.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                FOREACH (hasSubAccount IN
                                CASE WHEN not (lp.subaccountId = 0) THEN [1] ELSE [] END |
                    MERGE (sa:SubAccount:Subaccount:Label {id: lp.subaccountId})
                        ON CREATE SET
                            sa.createdAt = datetime(),
                            sa.uuid = '',
                            sa.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                            sa.lastModifiedAt = datetime(),
                            sa.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                    MERGE (sa)-[shlp:HAS_LABEL_PARTICIPANT]->(lp)
                        ON CREATE SET
                            shlp.createdAt = datetime(),
                            shlp.createdBy = 'KDH-440-BACKFILL-track_artist_art_relations_only',
                            shlp.lastModifiedAt = datetime(),
                            shlp.lastModifiedBy = 'KDH-440-BACKFILL-track_artist_art_relations_only'
                )
                RETURN count(ta)
            ]]>
        </cypherquery>
    </changeset>
</changelog>
