variable "aws_region" {
  default     = "us-east-1"
  description = "Which AWS region to spin up the environment in"
}

variable "environment" {
  description = "Available values:  dev, qa, prod."
  default     = "qa"
}

variable "service_name" {
  default = "fan-response-api"
}

variable "smf_service_name" {
  default = "lambda-smf-fan-response"
}

variable "campaign_lambda_name" {
  default = "lambda-fan-campaign"
}

variable "fan_triggered_send_definitions_lambda_name" {
  default = "lambda-fan-triggered-send-definitions"
}

variable "fan_vendor_weekly_deletions_emails_lambda_name" {
  default = "lambda-fan-vendor-weekly-deletions-emails"
}

variable "fan_response_authorizer_image_uri" {
  description = "Image URI for the common authorizer lambda."
  default     = "086679231553.dkr.ecr.us-east-1.amazonaws.com/lambda-fan-response-authorizer:latest"
}

variable "smf_authorizer_service_name" {
  default = "lambda-smf-fan-response-authorizer"
}

variable "jwk_client_uri" {
  default = "https://qa-orchard.auth0.com/.well-known/jwks.json"
}

variable "token_issuer" {
  default = "https://qa-orchard.auth0.com/"
}

variable "token_audience" {
  default = "https://qa-fan-response-jwt-authorizer"
}

variable "application_family" {
  default = "kafka-data-highway"
}

variable "application_family_data_team" {
  default = "data-platform"
}

variable "vpc_id" {
  type        = string
  description = "VPC ID"
  default     = "vpc-7f0e841a"
}

variable "vpc_subnet_ids" {
  type = list(string)
  description = "VPC subnet IDs where the lambdas will execute"
  default = ["subnet-067a6b45b079d7296", "subnet-098b89d0c58c5693a"]
}

variable "smf_fan_response_topic_name" {
  description = "SMF fan response target topic name."
  default     = "event.smf.fanresponse"
}

variable "tunespeak_fan_response_topic_name" {
  description = "Tunespeak fan response target topic name."
  default     = "event.tunespeak.fanresponse"
}

variable "wyng_fan_response_topic_name" {
  description = "Wyng fan response target topic name."
  default     = "event.wyng.fanresponse"
}

variable "mtl_fan_response_topic_name" {
  description = "MTL fan response target topic name."
  default     = "event.mtl.fanresponse"
}

variable "dlq_topic_name" {
  description = "dlq topic name."
  default     = "dlq.lambda.fanresponse"
}

variable "campaign_dlq_topic_name" {
  description = "dlq topic name."
  default     = "dlq.lambda.fan.campaign"
}

variable "dlq_number_errors" {
  description = "Number of errors that will trigger an alert."
  default     = 2
}

variable "kafka_bootstrap_servers" {
  default = "b-2.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094,b-4.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094,b-3.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094,b-5.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094,b-6.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094,b-1.qa-managed-kafka-cdc-d.2kgc64.c6.kafka.us-east-1.amazonaws.com:9094"
}

variable "kafka_topics_cluster_name" {
  default = "qa-managed-kafka-cdc-destination"
}

variable "allowed_smf_ip_addresses" {
  description = "Allowed IP addresses for the SMF API"
  default = [
    "46.10.149.236/32",
    "62.73.68.162/32",
    "111.125.221.191/32",
    "176.100.12.57/32",
    "209.236.99.4/32",
    "159.224.64.148/32",
    "207.237.185.2/32", # For Orchard NY traffic
    "12.170.130.192/28", # VPN gateway
  ]
}

variable "allowed_tunespeak_ip_addresses" {
  description = "Allowed IP addresses for the Tunespeak API"
  default = [
    "52.22.35.113/32",
    "207.237.185.2/32", # For Orchard NY traffic
    "12.170.130.192/28", # VPN gateway
  ]
}

variable "allowed_wyng_ip_addresses" {
  description = "Allowed IP addresses for the Wyng API"
  default = [
    "52.200.87.96/32",
    "54.210.65.119/32",
    "207.237.185.2/32", # For Orchard NY traffic
    "12.170.130.192/28", # VPN gateway
  ]
}

variable "allowed_mtl_ip_addresses" {
  description = "Allowed IP addresses for the MTL API"
  default = [
    "18.193.244.93/32",
    "207.237.185.2/32", # For Orchard NY traffic
    "12.170.130.192/28", # VPN gateway
  ]
}

variable "email_campaigns_nlb_listener_arn" {
  description = "NLB listener ARN for ows-email-campaigns in fansifter account"
  type        = string
  default     = "arn:aws:elasticloadbalancing:us-east-1:285943604611:listener/net/qa-ows-email-campaigns-nlb/2ac29e46a63acce4/669bb9ff665fe9e3"
}

variable "email_campaigns_vpce_service_name" {
  description = "VPC Endpoint Service name for ows-email-campaigns PrivateLink"
  type        = string
  default     = "com.amazonaws.vpce.us-east-1.vpce-svc-0c30951b08f898b9c"
}

variable "route53_zone_name" {
  description = "Route53 zone name for the API Gateway domain"
  default     = "theorchard.io"
}

variable "acm_certificate_domain" {
  description = "ACM certificate domain for the API Gateway"
  default     = "*.theorchard.io"
}
variable "notification_endpoints" {
  description = "notification endpoints"
  default     =  "@slack-kafka-data-highway-alerts"
}

variable "SNOWFLAKE_ACCOUNT" {
  description = "snowflake account"
  default     =  "delphi.us-east-1"
}

variable "SNOWFLAKE_USER" {
  description = "snowflake user"
  default     =  "QA_LAMBDA_FAN_CAMPAIGN"
}

variable "SNOWFLAKE_DATABASE" {
  description = "snowflake database"
  default     =  "FANSIFTER_APP_REPORTING"
}

variable "SNOWFLAKE_SCHEMA" {
  description = "SNOWFLAKE schema"
  default     =  "QA_CRM_FANS"
}

variable "SNOWFLAKE_WAREHOUSE" {
  description = "SNOWFLAKE warehouse"
  default     =  "QA_ETL_WH"
}

variable "SNOWFLAKE_CAMPAIGN_RAW_TABLE" {
  description = "SNOWFLAKE raw table name"
  default     =  "EVENT_CAMPAIGN_RAW"
}

variable "SNOWFLAKE_USER_FAN_WEEKLY_DELETIONS_EMAILS" {
  description = "snowflake user"
  default     =  "QA_LAMBDA_FAN_VENDOR_WEEKLY_DELETIONS_EMAILS"
}

variable "SNOWFLAKE_WAREHOUSE_FAN_WEEKLY_DELETIONS_EMAILS" {
  description = "SNOWFLAKE warehouse"
  default     =  "QA_FANSIFTER_FAN_DELETION_WH"
}


variable "SNOWFLAKE_SECRETS_CREDS" {
  type = list(string)
  default = [
    "SNOWFLAKE_PRIVATE_KEY",
    "SNOWFLAKE_PRIVATE_KEY_PASS",
  ]
}


locals {
  api_path_part = "{vendor}"
  api_path_part_sub = "response"
  api_path_part_sub_campaign = "campaign"
  api_path_part_sub_triggered_send_definitions = "triggered-send-definitions"
  smf_name = "smf"
  tunespeak_name = "tunespeak"
  wyng_name = "wyng"
  mtl_name = "mtl"
  prefix = "${var.environment}-${var.service_name}"
  smf_prefix = "${local.prefix}-${local.smf_name}"
  tunespeak_prefix = "${local.prefix}-${local.tunespeak_name}"
  wyng_prefix = "${local.prefix}-${local.wyng_name}"
  mtl_prefix = "${local.prefix}-${local.mtl_name}"

  tags = {
    environment        = var.environment
    service_name       = var.service_name
    application_family = var.application_family
    terraformed        = true
  }

  datadog_tags = flatten([
    "env:${var.environment}",
    "environment:${var.environment}",
    "service:${var.smf_service_name}",
    "service_name:${var.smf_service_name}",
    "team:kdh",
  ])
}
