<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://www.liquigraph.org/schema/1.0/liquigraph.xsd">
    <changeset id="ARTARCH-634_backfill_projects:1" author="owright" run-on-change="true">
        <query>
            <![CDATA[
                CALL apoc.periodic.iterate(
                    "
                        WITH 'mysql_artrelations' as url_alias,
                        '
                            SELECT project_id, vendor_id, subaccount_id, artist_id, deletions
                            FROM project
                            WHERE project_id in (
                                1905616, 1915278, 1919224, 1919880, 1922658, 1923475, 1928971, 1934437, 1935567, 1936699, 1937722, 1943242, 1948905, 1950153, 1959818, 1963739, 1966118, 1975169, 1997431, 2034157, 2034158, 2038580, 2039282, 2041561, 2046897, 2056285, 2068016, 2071631, 2127655, 2134952, 2169209, 2175528, 2182490, 2186775, 2189913, 2191698, 2201215, 2209598, 2215884, 2216619, 2223053, 2224156, 2243878, 2246748, 2264018, 2270215, 2271502, 2276571, 2290698, 2294086, 2300863, 2323921, 2328103, 2332020, 2334495, 2360332, 2361982, 2374824, 2378354, 2386970, 2389623, 2393618, 2397509, 2398104, 2400668, 2430779, 2435053, 2443444, 2445277, 2449053, 2454013, 2454571, 2471074, 2471076, 2501569, 2504129, 2518229, 2520948, 2547472, 2557997, 2558718, 2568204, 2576654, 2579279, 2587886, 2601575, 2610240, 2614381, 2621501, 2628081, 2628688, 2632666, 2634837, 2646713, 2647584, 2661483, 2664278, 2672318, 2675657, 2686879,
                                2709384, 2709489, 2726671, 2735161, 2736319, 2746614, 2757273, 2760959, 2790783, 2798131, 2813058, 2813716, 2824486, 2830915, 2835490, 2843309, 2843654, 2858887, 2859389, 2859658, 2861151, 2863030, 2868005, 2869461, 2871203, 2881292, 2891245, 2892403, 2896120, 2917099, 2931807, 2935122, 2939695, 2951862, 2954086, 2957920, 2963008, 2963484, 2964466, 2968017, 2968533, 2986310, 2997514, 3001633, 3002993, 3012781, 3015971, 3018576, 3025422, 3035409, 3060777, 3077591, 3102026, 3105255, 3113030, 3140410, 3182350, 3186200, 3189396, 3195657, 3196653, 3199598, 3199840, 3200847, 3204798, 3206348, 3210630, 3213488, 3215358, 3216642, 3217409, 3224610, 3227956, 3227969, 3231237, 3232461, 3235180, 3235787, 3246231, 3247791, 3250287, 3251654, 3252352, 3252782, 3255518, 3294179, 3319104, 3324353, 3331292, 3346390, 3346416, 3346433, 3346453, 3346457, 3346467, 3346545, 3346651, 3346751, 3346774, 3346779,
                                3346918, 3346958, 3346962, 3346971, 3347002, 3347127, 3347252, 3347581, 3347698, 3353068, 3353075, 3353084, 3353101, 3353115, 3353171, 3353283, 3353290, 3353311, 3353321, 3353328, 3353351, 3353384, 3353388, 3353404, 3353417, 3353449, 3353472, 3353495, 3353511, 3353552, 3353682, 3353766, 3353815, 3357846, 3406787, 3409361, 3420196, 3423005, 3427117, 3457977, 3480497, 4300479, 4335883, 4420487, 4420488, 4420491, 4420492, 4420497, 4420501, 4420503, 4420504, 4420505, 4420506, 4420507, 4420510, 4420512, 4420513, 4420554, 4420787, 4420887, 4420889, 4420898, 4420899, 4420902, 4420944, 4420946, 4420947, 4420948, 4420951, 4420952, 4420953, 4420959, 4420962, 4420968, 4420972, 4420975, 4420985, 4421164, 4421276, 4421280, 4421290, 4421309, 4421341, 4421344, 4421365, 4421366, 4421367, 4421377, 4421426, 4421427, 4421428, 4421429, 4421432, 4421433, 4421434, 4421436, 4421437, 4421438, 4421439, 4421514,
                                4421515, 4421626, 4421627, 4421628, 4421629, 4421630, 4421634, 4421638, 4421647, 4421656, 4421661, 4421662, 4421736, 4421737, 4421739, 4421749, 4421750, 4421759, 4421762, 4421763, 4421765, 4421767, 4421768, 4421772, 4421780, 4421783, 4421787, 4421790, 4421796, 4421799, 4421800, 4421806, 4421809, 4421811, 4421812, 4421815, 4421816, 4421821, 4421831, 4421837, 4421838, 4421839, 4421842, 4421843, 4421844, 4421846, 4421847, 4421848, 4421850, 4421852, 4421857, 4421859, 4421860, 4421862, 4421864, 4421865, 4421868, 4421870, 4421871, 4421880, 4421881, 4421883, 4421888, 4421895, 4421897, 4421898, 4421900, 4421901, 4421903, 4421906, 4421907, 4421908, 4421909, 4421910, 4421912, 4421914, 4421916, 4421927, 4421928, 4421967, 4422080, 4422081, 4422082, 4422083, 4422084, 4532359, 4569340, 4593363, 4593365, 4593366, 4593367, 4593368, 4593369, 4593370, 4593371, 4593372, 4593374, 4593378, 4593380, 4593381,
                                4593384, 4593386, 4593387, 4593388, 4593392, 4593393, 4593396, 4653361, 4718249, 4718250, 4718251, 4718252, 4718253, 4718254, 4718255, 4718256, 4718257, 4718258, 4718259, 4718260, 4718261, 4718262, 4718263, 4718264, 4718265, 4718266, 4718267, 4718268, 4718269, 4718270, 4718271, 4718272, 4718273, 4718274, 4718275, 4718276, 4718277, 4718278, 4718279, 4718280, 4718296, 4718299, 4718775, 4759251, 4759255, 4759259, 4759261, 4759262, 4759269, 4759270, 4759271, 4759274, 4759277, 4759279, 4759293, 4759296, 4768789, 4768790, 4768791, 4768792, 4768793, 4768794, 4768795, 4768796, 4768797, 4768798, 4768799, 4768800, 4768801, 4768802, 4768803, 4768804, 4768805, 4768806, 4768807, 4768808, 4768809, 4768810, 4768811, 4768812, 4768813, 4768814, 4768815, 4768816, 4768817, 4768818, 4768819, 4768820, 4768821, 4768822, 4768823, 4768824, 4768825, 4768826, 4768827, 4768828, 4768829, 4768830, 4768831, 4768832,
                                4768833, 4768834, 4768835, 4768836, 4768837, 4768838, 4768839, 4768840, 4768841, 4768842, 4768843, 4768844, 4768845, 4768846, 4768847, 4768848, 4768849, 4768850, 4768851, 4768852, 4768853, 4768854, 4768855, 4768856, 4768857, 4768858, 4768859, 4768860, 4768861, 4768862, 4768863, 4768864, 4768865, 4768866, 4768867, 4768868, 4768869, 4768870, 4768871, 4768872, 4768873, 4768874, 4768875, 4768876, 4768877, 4768878, 4768879, 4768880, 4768881, 4768882, 4768883, 4768884, 4768885, 4768886, 4768887, 4768888, 4768889, 4768890, 4768891, 4768892, 4768893, 4768894, 4768895, 4768896, 4768897, 4768898, 4768899, 4768900, 4768901, 4768902, 4768903, 4768904, 4768905, 4768906, 4768907, 4768908, 4768909, 4768910
                            )
                        ' as sql
                        CALL apoc.load.jdbc(url_alias, sql)
                        YIELD row
                        RETURN row
                    ",
                    "
                        MERGE (pr:Project {id: toInteger(row.project_id)})
                            ON CREATE SET
                                pr.vendorId = toInteger(row.vendor_id),
                                pr.subaccountId = toInteger(row.subaccount_id),
                                pr.artistId = toInteger(row.artist_id),
                                pr.deletions = (row.deletions = 'Y'),
                                pr.createdAt = datetime(),
                                pr.createdBy = 'database/artarch-634_backfill_projects',
                                pr.lastModifiedAt = datetime(),
                                pr.lastModifiedBy = 'database/artarch-634_backfill_projects'
                            ON MATCH SET
                                pr.vendorId = toInteger(row.vendor_id),
                                pr.subaccountId = toInteger(row.subaccount_id),
                                pr.artistId = toInteger(row.artist_id),
                                pr.deletions = (row.deletions = 'Y'),
                                pr.lastModifiedAt = datetime(),
                                pr.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        MERGE (v:Vendor:Label:Orchard {id: pr.vendorId})
                            ON CREATE SET
                                v.createdAt = datetime(),
                                v.uuid = apoc.create.uuid(),
                                v.createdBy = 'database/artarch-634_backfill_projects',
                                v.lastModifiedAt = datetime(),
                                v.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        MERGE (pr)-[bt:BELONGS_TO]->(v)
                            ON CREATE SET
                                bt.createdAt = datetime(),
                                bt.createdBy = 'database/artarch-634_backfill_projects',
                                bt.lastModifiedAt = datetime(),
                                bt.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        WITH DISTINCT row, pr, v
                        OPTIONAL MATCH (pr)-[incorrect_ownership:BELONGS_TO]->(sa:Subaccount:Label)
                        WHERE sa.id <> pr.subaccountId
                        DELETE incorrect_ownership
                        WITH DISTINCT row, pr, v
                        FOREACH (isSubAccount IN CASE WHEN pr.subaccountId <> 0 THEN [1] ELSE [] END |
                            MERGE (sa:SubAccount:Subaccount:Label {id: pr.subaccountId})
                                ON CREATE SET
                                    sa.createdAt = datetime(),
                                    sa.uuid = apoc.create.uuid(),
                                    sa.createdBy = 'database/artarch-634_backfill_projects',
                                    sa.lastModifiedAt = datetime(),
                                    sa.lastModifiedBy = 'database/artarch-634_backfill_projects'
                            MERGE (pr)-[bts:BELONGS_TO]-(sa)
                                ON CREATE SET
                                    bts.createdAt = datetime(),
                                    bts.createdBy = 'database/artarch-634_backfill_projects',
                                    bts.lastModifiedAt = datetime(),
                                    bts.lastModifiedBy = 'database/artarch-634_backfill_projects'
                            MERGE (v)-[o:OWNS]->(sa)
                                ON CREATE SET
                                    o.createdAt = datetime(),
                                    o.createdBy = 'database/artarch-634_backfill_projects',
                                    o.lastModifiedAt = datetime(),
                                    o.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        )
                        FOREACH (isArtistInfo IN CASE WHEN pr.artistId <> 0 THEN [1] ELSE [] END |
                            MERGE (ai:ArtistInfo {id: pr.artistId})
                                ON CREATE SET
                                    ai.createdAt = datetime(),
                                    ai.createdBy = 'database/artarch-634_backfill_projects',
                                    ai.lastModifiedAt = datetime(),
                                    ai.lastModifiedBy = 'database/artarch-634_backfill_projects'
                            MERGE (pr)-[ha:HAS_ARTIST]->(ai)
                                ON CREATE SET
                                    ha.createdAt = datetime(),
                                    ha.createdBy = 'database/artarch-634_backfill_projects',
                                    ha.lastModifiedAt = datetime(),
                                    ha.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        )
                        WITH pr, v, toInteger(row.artist_id) AS artistId
                        MATCH (:LabelParticipant)<-[cfp:CREATED_FOR_PARTICIPANT]-(pr)-[ha:HAS_ARTIST]->(oldAI:ArtistInfo)
                        WHERE oldAI.id <> artistId
                        DELETE ha, cfp
                        WITH pr, v
                        MATCH (pr)-[:HAS_ARTIST]->(ai)
                        WHERE ai.name IS NOT NULL
                        MERGE (i:IncrementId {nodeName: \"LabelParticipant\"})
                            ON CREATE SET i.id = 1
                            ON MATCH SET i.id = i.id + 1
                        MERGE (lp:LabelParticipant:Orchard {
                            vendorId: pr.vendorId,
                            subaccountId: pr.subaccountId,
                            normalizedName: toLower(trim(apoc.text.regreplace(ai.name, '[ ]+', '')))
                        })
                        ON CREATE SET
                            lp.id = i.id,
                            lp.uuid = apoc.create.uuid(),
                            lp.createdAt = datetime(),
                            lp.createdBy = 'database/artarch-634_backfill_projects',
                            lp.lastModifiedAt = datetime(),
                            lp.lastModifiedBy = 'database/artarch-634_backfill_projects',
                            lp.name = trim(apoc.text.regreplace(ai.name, '[ ]{2,}', ' '))
                        MERGE (lp)-[cf:CREATED_FROM]->(ai)
                            ON CREATE SET
                                cf.createdAt = datetime(),
                                cf.createdBy = 'database/artarch-634_backfill_projects',
                                cf.lastModifiedAt = datetime(),
                                cf.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        MERGE (pr)-[cfp:CREATED_FOR_PARTICIPANT]->(lp)
                            ON CREATE SET
                                cfp.createdAt = datetime(),
                                cfp.createdBy = 'database/artarch-634_backfill_projects',
                                cfp.lastModifiedAt = datetime(),
                                cfp.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        MERGE (v)-[hlp:HAS_LABEL_PARTICIPANT]->(lp)
                            ON CREATE SET
                                hlp.createdAt = datetime(),
                                hlp.createdBy = 'database/artarch-634_backfill_projects',
                                hlp.lastModifiedAt = datetime(),
                                hlp.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        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 = apoc.create.uuid(),
                                    sa.createdBy = 'database/artarch-634_backfill_projects',
                                    sa.lastModifiedAt = datetime(),
                                    sa.lastModifiedBy = 'database/artarch-634_backfill_projects'
                            MERGE (sa)-[shlp:HAS_LABEL_PARTICIPANT]->(lp)
                                ON CREATE SET
                                    shlp.createdAt = datetime(),
                                    shlp.createdBy = 'database/artarch-634_backfill_projects',
                                    shlp.lastModifiedAt = datetime(),
                                    shlp.lastModifiedBy = 'database/artarch-634_backfill_projects'
                        )
                    ",
                    {batchSize:1000}
                );
            ]]>
        </query>
    </changeset>
</changelog>
