terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/fivetran/marketing-integrations/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

resource "fivetran_group" "group" {
  for_each = var.destinations

  name = each.key
}

resource "fivetran_destination" "destination" {
  for_each = var.destinations

  group_id         = fivetran_group.group[each.key].id
  region           = "GCP_US_EAST4"
  service          = "snowflake"
  time_zone_offset = "-8"
  run_setup_tests  = false

  config {
    host            = each.value["snowflake_host"]
    port            = 443
    auth            = "KEY_PAIR"
    connection_type = "Directly"
    private_key     = "dummy"
    database        = each.value["snowflake_database"]
    user            = each.value["snowflake_user"]
  }

  lifecycle {
    ignore_changes = [
      config[0].private_key,
    ]
  }
}

resource "fivetran_connector" "facebook_ads_connector" {
  group_id = fivetran_destination.destination["MARKETING_INTEGRATIONS"].group_id
  service  = "facebook_ads"

  destination_schema {
    name = var.snowflake_destination_schema
  }

  config {
    sync_mode = "SpecificAccounts"
    accounts  = var.facebook_account_ids
    custom_tables {
      table_name           = var.facebook_data_table_name
      config_type          = "Prebuilt"
      prebuilt_report_name = var.facebook_prebuilt_report_name
      aggregation          = var.facebook_data_aggregation_duration
    }
    timeframe_months = var.facebook_data_initial_sync_months
  }

  lifecycle {
    ignore_changes = [
      config
    ]
  }
}

resource "fivetran_connector_schedule" "facebook_ads_connector_schedule" {
  connector_id      = fivetran_connector.facebook_ads_connector.id
  pause_after_trial = false
  paused            = false
  sync_frequency    = var.connector_sync_frequency
}
