stackql-deploy 2.2.0

Infrastructure-as-code framework for declarative cloud resource management using StackQL
/*+ exists */
SELECT COUNT(*) as count 
FROM snowflake.database.databases
WHERE name = '{{ database_name }}'
AND endpoint = '{{ endpoint }}';

/*+ statecheck, retries=1, retry_delay=2 */
SELECT COUNT(*) as count 
FROM snowflake.database.databases
WHERE name = '{{ database_name }}'
AND endpoint = '{{ endpoint }}'
AND kind = '{{ kind }}'
AND comment = '{{ comment }}'
AND data_retention_time_in_days = {{ data_retention_time_in_days }}
AND log_level = '{{ log_level }}'
AND max_data_extension_time_in_days = {{ max_data_extension_time_in_days }}
AND suspend_task_after_num_failures = {{ suspend_task_after_num_failures }}
AND trace_level = '{{ trace_level }}'
AND user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}'
AND serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}'
AND serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}'
AND user_task_timeout_ms = {{ user_task_timeout_ms }}
;

/*+ create */
INSERT INTO snowflake.database.databases (
name,
kind,
comment,
data_retention_time_in_days,
log_level,
max_data_extension_time_in_days,
suspend_task_after_num_failures,
trace_level,
user_task_managed_initial_warehouse_size,
serverless_task_min_statement_size,
serverless_task_max_statement_size,
user_task_timeout_ms,
endpoint
)
SELECT 
'{{ database_name }}',
'{{ kind }}',
'{{ comment }}',
 {{ data_retention_time_in_days }},
'{{ log_level }}',
 {{ max_data_extension_time_in_days }},
 {{ suspend_task_after_num_failures }},
'{{ trace_level }}',
'{{ user_task_managed_initial_warehouse_size }}',
'{{ serverless_task_min_statement_size }}',
'{{ serverless_task_max_statement_size }}',
 {{ user_task_timeout_ms }},
'{{ endpoint }}'
;

/*+ update */
REPLACE snowflake.database.databases
SET 
kind = '{{ kind }}',
comment = '{{ comment }}',
data_retention_time_in_days = '{{ data_retention_time_in_days }}',
default_ddl_collation = '{{ default_ddl_collation }}',
log_level = '{{ log_level }}',
max_data_extension_time_in_days = '{{ max_data_extension_time_in_days }}',
suspend_task_after_num_failures = '{{ suspend_task_after_num_failures }}',
trace_level = '{{ trace_level }}',
user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}',
serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}',
serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}',
user_task_timeout_ms = '{{ user_task_timeout_ms }}'
WHERE 
name = '{{ database_name }}'
AND name = '{{ database_name }}'
AND endpoint = '{{ endpoint }}';

/*+ exports */
SELECT '{{ database_name }}' as database_name;

/*+ delete */
DELETE FROM snowflake.database.databases
WHERE name = '{{ database_name }}'
AND endpoint = '{{ endpoint }}';