terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/snowflake/delphi/external-access-integrations/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

provider "snowflake" {
  account_name = var.account
  role         = "PROD_ATLANTIS"
}

resource "snowflake_execute" "spotify_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "SPOTIFY_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.SPOTIFY_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"SPOTIFY_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"SPOTIFY_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "google_news_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "GOOGLE_NEWS_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.GOOGLE_NEWS_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"GOOGLE_NEWS_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"GOOGLE_NEWS_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "powerplatform_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "POWERPLATFORM_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.POWERPLATFORM_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"POWERPLATFORM_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"POWERPLATFORM_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "audiense_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "AUDIENSE_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.AUDIENSE_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"AUDIENSE_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"AUDIENSE_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "google_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "GOOGLE_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.GOOGLE_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"GOOGLE_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"GOOGLE_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "apple_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "APPLE_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.APPLE_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"APPLE_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"APPLE_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "tiktok_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "TIKTOK_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.TIKTOK_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"TIKTOK_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"TIKTOK_API_ACCESS_INTEGRATION\""
}

resource "snowflake_execute" "deezer_api_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "DEEZER_API_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (
        "SNOWFLAKE_SETTINGS.NETWORK_RULES.DEEZER_API"
      )
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"DEEZER_API_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"DEEZER_API_ACCESS_INTEGRATION\""
}
