--liquibase formatted sql

-- ============================================================================
--changeset hs-package-TEST-DATA-GENERATOR:1 endDelimiter:--//
-- ----------------------------------------------------------------------------
/*
    Creates test data for the package main table.
 */
create or replace procedure createPackageTestData(
    minCustomerReference integer,   -- skip customers with reference below this
    doCommitAfterEach boolean       -- only for mass data creation outside of Liquibase
)
    language plpgsql as $$
    declare
        cust            customer;
        pacName         varchar;
        currentTask     varchar;
        custAdmin       varchar;
        pac             package;
    begin
        set hsadminng.currentUser to '';

        for cust in (select * from customer)
            loop
                CONTINUE WHEN cust.reference < minCustomerReference;

                for t in 0..2
                    loop
                        pacName = cust.prefix || to_char(t, 'fm00');
                        currentTask = 'creating RBAC test package #' || pacName || ' for customer ' || cust.prefix || ' #' ||
                                      cust.uuid;
                        raise notice 'task: %', currentTask;

                        custAdmin = 'admin@' || cust.prefix || '.example.com';
                        set local hsadminng.currentUser to custAdmin;
                        set local hsadminng.assumedRoles = '';
                        set local hsadminng.currentTask to currentTask;

                        insert
                            into package (customerUuid, name, description)
                            values (cust.uuid, pacName, 'Here can add your own description of package ' || pacName || '.')
                            returning * into pac;

                        call grantRoleToUser(
                            findRoleId(packageAdmin(pac)),
                            createRbacUser(pacName || '@' || cust.prefix || '.example.com'));

                    end loop;
            end loop;

            if doCommitAfterEach then
                commit;
            end if;
    end;
$$;
--//


-- ============================================================================
--changeset hs-package-TEST-DATA-GENERATION:1 –context=dev,tc endDelimiter:--//
-- ----------------------------------------------------------------------------

do language plpgsql $$
    begin
        call createPackageTestData(0, false);
    end;
$$;
--//
