resource "snowflake_grant_privileges_to_account_role" "all_objects_in_schema" {
  for_each = var.role_type == "account" ? var.schema_role_map : {}

  privileges        = var.privileges
  account_role_name = each.value

  on_schema_object {
    all {
      object_type_plural = var.object_type_plural
      in_schema          = "\"${var.database_name}\".\"${each.key}\""
    }
  }
}

resource "snowflake_grant_privileges_to_database_role" "all_objects_in_schema" {
  for_each = var.role_type == "database" ? var.schema_role_map : {}

  privileges         = var.privileges
  database_role_name = "${var.database_name}.${each.value}"

  on_schema_object {
    all {
      object_type_plural = var.object_type_plural
      in_schema          = "\"${var.database_name}\".\"${each.key}\""
    }
  }
}

resource "snowflake_grant_privileges_to_account_role" "future_objects_in_schema" {
  for_each = var.role_type == "account" ? var.schema_role_map : {}

  privileges        = var.privileges
  account_role_name = each.value

  on_schema_object {
    future {
      object_type_plural = var.object_type_plural
      in_schema          = "\"${var.database_name}\".\"${each.key}\""
    }
  }
}

resource "snowflake_grant_privileges_to_database_role" "future_objects_in_schema" {
  for_each = var.role_type == "database" ? var.schema_role_map : {}

  privileges         = var.privileges
  database_role_name = "${var.database_name}.${each.value}"

  on_schema_object {
    future {
      object_type_plural = var.object_type_plural
      in_schema          = "\"${var.database_name}\".\"${each.key}\""
    }
  }
}
