variable "aws_region" {
  default = "us-east-1"
}

variable "environment" {
  default = "prod"
}

variable "service_name" {
  default = "stripo"
}

variable "application_family" {
  description = "Application family of which this is a component. Used for tagging"
  default     = "stripo"
}

variable "team_name" {
  type    = string
  default = "fansifter"
}

variable "efs_volume_container_path" {
  description = "Path inside container to mount EFS volume"
  default     = "/config"
}

variable "screenshot_service_efs_volume_container_path" {
  description = "Path inside container to mount EFS volume"
  default     = "/usr/src/app/config"
}

variable "amp_validator_service_efs_volume_container_path" {
  description = "Path inside container to mount EFS volume"
  default     = "/usr/src/app/config"
}

variable "patches_service_efs_volume_container_path" {
  description = "Path inside container to mount EFS volume"
  default     = "/usr/src/app/config"
}

variable "bucket_name" {
  description = "Name of the s3 bucket"
  default     = "stripo-documents"
}

variable "cloudfront_logs_bucket" {
  description = "Name of the s3 bucket for cloudfront logs"
  default     = "prod-fansifter-cloudfront-logs.s3.amazonaws.com"
}

variable "load_balancer_logs_bucket" {
  description = "Name of the s3 bucket for lb logs"
  default     = "prod-fansifter-lb-logs"
}

variable "documents_domain" {
  description = "Domain name for the documents CDN"
  default     = "stripo-documents"
}

variable "custom_blocks_bucket_name" {
  description = "Name of the custom blocks s3 bucket"
  default     = "stripo-custom-blocks"
}

variable "emple_ui_domain" {
  description = "Domain name for the emple-ui CDN"
  default     = "stripo-assets"
}

variable "api_gateway_public_domain" {
  description = "Domain name for the publicly exposed API gateway"
  default     = "theorchard.com"
}

variable "https_listener_certificate_id" {
  description = "ACM Certificate id"
  default     = "dc15aad5-daca-4e9d-a924-c5f367278dd6"
}

variable "secrets_manager_api_gateway" {
  description = "List of secrets manager secrets for api gateway service to create"
  type        = list(string)
  default = [
    "JWT_SECRET_API_KEY",
    "APIGW_SERVICE_PASSWORD",
  ]
}

variable "secrets_manager_statistics_service" {
  description = "List of secrets manager secrets for statistics service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
  ]
}

variable "secrets_manager_security_service" {
  description = "List of secrets manager secrets for security service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
    "SECURITY_SERVICE_USERNAME",
    "SECURITY_SERVICE_PASSWORD",
  ]
}

variable "secrets_manager_details_service" {
  description = "List of secrets manager secrets for details service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
    "SECURITY_SERVICE_USERNAME",
    "SECURITY_SERVICE_PASSWORD",
  ]
}

variable "secrets_manager_timer_api" {
  description = "List of secrets manager secrets for timer api service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
    "TIMER_USERNAME",
    "TIMER_PASSWORD",
    "SECURITY_USER_PASSWORD",
    "SECURITY_USER_NAME",
  ]
}

variable "secrets_manager_countdowntimer" {
  description = "List of secrets manager secrets for countdowntimer service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
    "SECRET_KEY",
  ]
}

variable "secrets_manager_drafts_service" {
  description = "List of secrets manager secrets for drafts service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
  ]
}

variable "secrets_manager_documents_service" {
  description = "List of secrets manager secrets for documents service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
    "SECURITY_SERVICE_PASSWORD",
    "SECURITY_SERVICE_USERNAME",
    "STORAGE_ACCESS_KEY",
    "STORAGE_SECRET_KEY",
  ]
}

variable "secrets_manager_image_bank_service" {
  description = "List of secrets manager secrets for image-bank service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
  ]
}

variable "secrets_manager_custom_blocks_service" {
  description = "List of secrets manager secrets for custom blocks service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
  ]
}

variable "secrets_manager_amp_validator_service" {
  description = "List of secrets manager secrets for amp validator service to create"
  type        = list(string)
  default = [
    "AUTH_PASSWORD",
  ]
}

variable "secrets_manager_html_cleaner_service" {
  description = "List of secrets manager secrets for html cleaner service to create"
  type        = list(string)
  default = [
    "AMP_VALIDATOR_PASSWORD",
    "AUTH_SWAGGER_PASSWORD"
  ]
}

variable "secrets_manager_html_gen_service" {
  description = "List of secrets manager secrets for html gen service to create"
  type        = list(string)
  default = [
    "AUTH_SWAGGER_PASSWORD",
    "RDS_DB_PASSWORD",
    "SECURITY_SERVICE_USERNAME",
    "SECURITY_SERVICE_PASSWORD",
  ]
}

variable "secrets_manager_ai_service" {
  description = "List of secrets manager secrets for ai service to create"
  type        = list(string)
  default = [
    "RDS_DB_PASSWORD",
  ]
}

variable "secrets_manager_proxy_service" {
  description = "List of secrets manager secrets for proxy service to create"
  type        = list(string)
  default = [
    "SECURITY_SERVICE_USERNAME",
    "SECURITY_SERVICE_PASSWORD",
  ]
}

variable "additional_tags" {
  type        = map(string)
  description = "Optional map of additional tags to set on resources. These will be combined with programmatically set required tags."
  default     = {}
}

variable "application_alert_channel" {
  default = "@slack-fansifter-alerts"
}

locals {
  combined_resource_tags = merge(
    {
      environment        = var.environment
      service_name       = var.service_name
      application_family = var.application_family
      terraformed        = true
    },
    var.additional_tags
  )
}
