provider "snowflake" {
  account_name = "delphi"
  role         = "PROD_ATLANTIS"
  preview_features_enabled = [
    "snowflake_table_resource",
    "snowflake_dynamic_table_resource",
  ]
}

module "database" {
  source = "../../../modules/database"

  database_name = "TERRAFORM_SNOWFLAKE_TEST"

  schemas = [
    {
      name    = "SCHEMA_A"
      managed = false
    },
  ]
}

resource "snowflake_table" "test_1" {
  database = module.database.database_name
  schema   = "SCHEMA_A"
  name     = "TEST_TABLE_1"

  column {
    name = "id"
    type = "NUMBER(38,0)"
  }

  depends_on = [module.database]
}

resource "snowflake_dynamic_table" "dt" {
  database = module.database.database_name
  schema   = "SCHEMA_A"
  name     = "TEST_DYNAMIC_TABLE_1"
  target_lag {
    maximum_duration = "20 minutes"
  }
  warehouse = "DEV_OWS_WAREHOUSE"
  query     = "SELECT * FROM \"${module.database.database_name}\".\"SCHEMA_A\".\"${snowflake_table.test_1.name}\""
  comment   = "example comment"
}

module "role" {
  source                    = "../../../modules/roles/dynamic_table_access"
  database                  = module.database.database_name
  schema                    = "SCHEMA_A"
  dynamic_table             = snowflake_dynamic_table.dt.name
  enable_operate_privileges = true
}
