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

variable "region" {
  default     = "us-east-1"
  description = "aws resources region"
}

variable "service_name" {
  description = "Service name"
  default     = "lambda-asset-tools"
}

variable "datadog_enabled" {
  description = "Whether or not to attach datadog secretsmanager IAM policy"
  default     = true
}

variable "datadog_advanced_enabled" {
  description = "Enabled DataDog monitoring."
  default     = true
}

variable "lambda_default_timeout" {
  description = "Default value for timeout"
  default     = "900"
}

variable "lambda_concurrent_executions" {
  description = "Number of lambda concurrent executions"
  default     = 10
}

variable "application_family" {
  type        = string
  description = "Name of application family"
  default     = "assets"
}

variable "team_name" {
  type        = string
  description = "Name of team that owns the service"
  default     = "content-delivery-asset-management"
}

variable "lambda_memory_size" {
  description = "Memory size for the lambda function"
  default     = "128"
}

variable "lambda_get_asset_locations_name" {
  description = "get asset locations lambda name"
  default     = "get-asset-locations"
}

variable "lambda_generate_error_report_name" {
  description = "generate error report lambda name"
  default     = "generate-error-report"
}

variable "notification_endpoints" {
  default = "@slack-content-delivery-and-asset-mgmt-alerts"
}

variable "lambda_get_products_for_account_name" {
  description = "get products for account lambda name"
  default     = "get-products-for-account"
}

variable "asset_copy_worker_name" {
  description = "asset copy worker fargate task name"
  default     = "asset-copy-worker"
}

variable "bulk_asset_download_tool_name" {
  description = "lambda-asset-tools tool name"
  default     = "bulk-asset-download"
}

variable "page_limit" {
  description = "number of products to query per request"
  default     = 10000
}

variable "get_asset_locations_reserved_concurrency_limit" {
  description = "concurrent executions limit for get-asset-locations lambda"
  default     = 75
}

variable "mezzanine_assets_buckets" {
  type        = map(string)
  description = "Map of S3 buckets and paths within that bucket to which this group will receive read-only access"
  default = {
    "prod-orcd-video-assets" : "*",
    "prod-orcd-mezzanine-assets" : "*",
  }
}

variable "sns_notifications_slack_email_address" {
  description = "Slack endpoint for step function"
  default     = "bulk-asset-download-a-aaaaqu4owro6bakt5djauva5gi@sonymusic.org.slack.com"
}

variable "user_access_prefixes" {
  description = "List of maps containing user names and prefixes they should have access to"
  type = list(object({
    username           = string
    create_aws_user    = optional(bool, false) # Whether to create an AWS IAM user for this access
    prefixes           = list(string)
    access_expiry_date = string # YYYY-MM-DD format (e.g. 2025-08-29)
  }))
  default = [
    {
      username = "external_user_617948",
      prefixes = [
        "144df9b4-b9ce-4460-84b0-b7fd28640aa7",
      ],
      access_expiry_date = "2026-04-27",
      create_aws_user    = true
    },
    {
      username = "external_user_616648",
      prefixes = [
        "ec221cb0-43e8-4807-a8c1-6764e564cc88",
      ],
      access_expiry_date = "2026-04-28",
      create_aws_user    = true
    },
    {
      username = "external_user_619411",
      prefixes = [
        "b7a21b47-ff0f-43c9-8752-82af6437c522",
      ],
      access_expiry_date = "2026-05-01",
      create_aws_user    = true
    },
    {
      username = "external_user_624830",
      prefixes = [
        "f6cfaa91-98f4-4abe-8142-cca5bcb7e808",
      ],
      access_expiry_date = "2026-05-12",
      create_aws_user    = true
    },
    {
      username = "external_user_630508",
      prefixes = [
        "6dce0c32-835e-4420-99e1-29f9ba0f034b",
      ],
      access_expiry_date = "2026-05-25",
      create_aws_user    = true
    },
    {
      username = "external_user_630515",
      prefixes = [
        "59a1ea9f-2278-4343-adb7-9daadab5de8b",
      ],
      access_expiry_date = "2026-06-01",
      create_aws_user    = true
    },
    {
      username = "external_user_662845",
      prefixes =  [
        "7f908872-c74b-4dc3-a539-817a08f827c5",
      ],
      access_expiry_date = "2026-07-27",
      create_aws_user    = true
    },
    {
      username = "external_user_662837",
      prefixes =  [
        "a4e20f6a-c561-432a-baa4-2bf96b78799d",
      ],
      access_expiry_date = "2026-07-27",
      create_aws_user    = true
    },
    {
      username = "external_user_666265",
      prefixes =  [
        "cb05a0a9-010c-4e72-bb1e-c8dedcba0b66",
      ],
      access_expiry_date = "2026-08-03",
      create_aws_user    = true
    },
    {
      username = "external_user_668121",
      prefixes =  [
        "c58261e8-5401-4295-861e-9c1c03354dc8",
      ],
      access_expiry_date = "2026-08-08",
      create_aws_user    = true
    },
    {
      username = "external_user_668129",
      prefixes =  [
        "50de4733-b010-4574-9337-4c751bb88779",
      ],
      access_expiry_date = "2026-08-08",
      create_aws_user    = true
    },
  ]
}
