diff --git a/terraform/common_db_schema.tf b/terraform/common_db_schema.tf index db5aee2..3c4e2bc 100644 --- a/terraform/common_db_schema.tf +++ b/terraform/common_db_schema.tf @@ -1,3 +1,18 @@ +import { + to = snowflake_warehouse.xs_wh + id = "XS_WH" +} + +resource "snowflake_warehouse" "xs_wh" { + provider = snowflake.sysadmin + name = "XS_WH" + warehouse_size = "XSMALL" + auto_suspend = 60 + auto_resume = true + enable_query_acceleration = false + query_acceleration_max_scale_factor = 0 +} + resource "snowflake_database" "common_db" { provider = snowflake.sysadmin name = "COMMON" diff --git a/terraform/import_shares_logical_grouping.tf b/terraform/import_shares_logical_grouping.tf new file mode 100644 index 0000000..f33319a --- /dev/null +++ b/terraform/import_shares_logical_grouping.tf @@ -0,0 +1,43 @@ +module "logical_import_layer" { + source = "github.com/inovex/snowform_logical_import_layer.git?ref=0.0.2" + + + # Location for the stored procedure + procedure_database = "COMMON" + procedure_schema = "COMMON" + + # Map source objects to logical layer targets + source_to_target_mappings = { + "CUSTOMER_LEADS_IMPORTED_DB.SNOWFORM_SCHEMA.CUSTOMER_LEADS" = { + target_database = "IMPORTED_INOVEX" + target_schema = "CUSTOMER_DATA" + target_name = "CUSTOMER_LEADS" + } + "CUSTOMER_LEADS_IMPORTED_DB.SNOWFORM_SCHEMA.CUSTOMER_LOCATION" = { + target_database = "IMPORTED_INOVEX" + target_schema = "CUSTOMER_DATA" + target_name = "CUSTOMER_LOCATION" + } + "CUSTOMER_LEADS_IMPORTED_DB.SNOWFORM_SCHEMA.INOVEX_LOCATIONS" = { + target_database = "IMPORTED_INOVEX" + target_schema = "LOCATION_DATA" + target_name = "INOVEX_LOCATIONS" + } + } + + # Grant read access to roles + database_role_grants = { + "IMPORTED_INOVEX" = [ + "SYSADMIN", + ], + } + + providers = { + snowflake.sysadmin = snowflake.sysadmin + snowflake.securityadmin = snowflake.securityadmin + } + + depends_on = [ + snowflake_warehouse.xs_wh, + ] +} diff --git a/terraform/main.tf b/terraform/main.tf index 6c4195d..d03b515 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -3,7 +3,7 @@ terraform { required_providers { snowflake = { source = "snowflakedb/snowflake" - version = "~> 2.7.0" + version = "~> 2.14.0" } } } diff --git a/terraform/provider.tf b/terraform/provider.tf index 720aac5..5d186e0 100644 --- a/terraform/provider.tf +++ b/terraform/provider.tf @@ -9,7 +9,8 @@ provider "snowflake" { alias = "sysadmin" authenticator = "SNOWFLAKE_JWT" driver_tracing = "debug" - preview_features_enabled = ["snowflake_notification_integration_resource", "snowflake_procedure_sql_resource"] + preview_features_enabled = ["snowflake_notification_integration_resource", "snowflake_procedure_sql_resource", "snowflake_procedure_python_resource"] + warehouse = "XS_WH" } provider "snowflake" { @@ -36,5 +37,5 @@ provider "snowflake" { alias = "securityadmin" authenticator = "SNOWFLAKE_JWT" driver_tracing = "debug" - preview_features_enabled = ["snowflake_procedure_sql_resource", "snowflake_network_rule_resource", "snowflake_network_policy_attachment_resource", "snowflake_authentication_policy_resource", "snowflake_user_authentication_policy_attachment_resource"] + preview_features_enabled = ["snowflake_procedure_sql_resource", "snowflake_network_policy_attachment_resource", "snowflake_authentication_policy_resource", "snowflake_user_authentication_policy_attachment_resource"] }