<?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="PLATFORM-2135-Backfill_subaccount_bactches:1" author="npatel" run-on-change="true">
        <query>
            CALL apoc.log.info("Starting run subaccount ingest at %s", [datetime()]);
        </query>
        <query>
            CALL apoc.periodic.iterate(
                "
                    WITH 'mysql_artrelations' as url_alias,
                    '
                        SELECT 
                            s.subaccount_id, s.subaccount_name, s.vendor_id
                        FROM subaccount s
                        WHERE s.subaccount_id BETWEEN 0 AND 20000
                    ' as sql
                    CALL apoc.load.jdbc(url_alias, sql)
                    YIELD row
                    RETURN row
                ",
                "
                MERGE (sa:SubAccount { id: toInteger(row.subaccount_id) })
                    SET  sa.name = row.subaccount_name
                WITH sa, row
                MERGE (v:Vendor {id: toInteger(row.vendor_id) })
                MERGE (v)-[:OWNS]->(sa)
                ",
                {batchSize:1000}
            );
        </query>
        <query>
            CALL apoc.log.info("Finished subaccount ingest 1 of 3 at %s", [datetime()]);
        </query>
        
        <query>
            CALL apoc.periodic.iterate(
                "
                    WITH 'mysql_artrelations' as url_alias,
                    '
                        SELECT 
                            s.subaccount_id, s.subaccount_name, s.vendor_id
                        FROM subaccount s
                        WHERE s.subaccount_id BETWEEN 20000 AND 40000
                    ' as sql
                    CALL apoc.load.jdbc(url_alias, sql)
                    YIELD row
                    RETURN row
                ",
                "
                MERGE (sa:SubAccount { id: toInteger(row.subaccount_id) })
                    SET  sa.name = row.subaccount_name
                WITH sa, row
                MERGE (v:Vendor {id: toInteger(row.vendor_id) })
                MERGE (v)-[:OWNS]->(sa)
                ",
                {batchSize:1000}
            );
        </query>
        <query>
            CALL apoc.log.info("Finished subaccount ingest 2 of 3 at %s", [datetime()]);
        </query>
        
         <query>
            CALL apoc.periodic.iterate(
                "
                    WITH 'mysql_artrelations' as url_alias,
                    '
                        SELECT 
                            s.subaccount_id, s.subaccount_name, s.vendor_id
                        FROM subaccount s
                        WHERE s.subaccount_id >= 40000
                    ' as sql
                    CALL apoc.load.jdbc(url_alias, sql)
                    YIELD row
                    RETURN row
                ",
                "
                MERGE (sa:SubAccount { id: toInteger(row.subaccount_id) })
                    SET  sa.name = row.subaccount_name
                WITH sa, row
                MERGE (v:Vendor {id: toInteger(row.vendor_id) })
                MERGE (v)-[:OWNS]->(sa)
                ",
                {batchSize:1000}
            );
        </query>
        <query>
            CALL apoc.log.info("Finished subaccount ingest 3 of 3 at %s", [datetime()]);
        </query>
        
    </changeset>
</changelog>
