USE ROLE SYSADMIN;
USE DATABASE DB_TESTING;
CREATE SCHEMA IF NOT EXISTS SCHEMA_DEV;
GRANT USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT CREATE FILE FORMAT, CREATE PIPE, CREATE STAGE, CREATE SEQUENCE, MODIFY, MONITOR, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT CREATE TABLE, CREATE FUNCTION, CREATE TEMPORARY TABLE, CREATE VIEW, MODIFY, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SYSADMIN;
GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT ON ALL VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT ON ALL MATERIALIZED VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL TABLES IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT DELETE, INSERT, REFERENCES, SELECT, TRUNCATE, UPDATE ON ALL MATERIALIZED VIEWS IN SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SECURITYADMIN;
GRANT SELECT ON FUTURE TABLES IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON FUTURE TABLES IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, REFERENCES ON FUTURE VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
GRANT SELECT ON FUTURE MATERIALIZED VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_READ;
GRANT SELECT, REFERENCES ON FUTURE MATERIALIZED VIEWS IN SCHEMA DB_TESTING.SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE ROLE SYSADMIN;
GRANT CREATE FILE FORMAT, CREATE STAGE, CREATE SEQUENCE, MONITOR, USAGE ON SCHEMA SCHEMA_DEV TO ROLE ROLE_DB_TESTING_WRITE;
USE SCHEMA DB_TESTING.SCHEMA_DEV;
CREATE TABLE IF NOT EXISTS INCR_TABLES (TABLE_NAME VARCHAR(1000) NOT NULL,PRIMARY_KEY VARCHAR(1000),SQL_SELECT VARCHAR,SQL_WHERE VARCHAR,SRC_DB_SCHEMA VARCHAR(100),LAST_MODIFIED_FIELD VARCHAR(1000),LAST_MODIFIED_FIELD_VALUE TIMESTAMP);
CREATE TABLE IF NOT EXISTS RELOAD_TABLES (TABLE_NAME VARCHAR(1000),PRIMARY_KEY VARCHAR(1000),SQL_SELECT VARCHAR,SQL_WHERE VARCHAR,SRC_DB_SCHEMA VARCHAR(100),REFRESH_RATE NUMBER(5,0), NEXT_REFRESH_DATE TIMESTAMP);
USE ROLE SECURITYADMIN;
GRANT ROLE ROLE_DB_TESTING_WRITE TO ROLE DEV_APP;
GRANT ROLE ROLE_DB_TESTING_READ TO ROLE DEV_APP_DEVELOPER;
GRANT ROLE ROLE_DB_TESTING_READ TO ROLE DEV_READ_ALL;