variable "project_name" {
  type        = string
  description = "Project name used in resource naming"
  default     = "cuppa"
}

variable "environment" {
  type        = string
  description = "Environment label (staging, production)"
  default     = "production"
}

variable "aws_region" {
  type        = string
  description = "AWS region"
  default     = "us-east-1"
}

variable "domain_name" {
  type        = string
  description = "Public domain for the app (used in ingress / NEXTAUTH_URL)"
  default     = "app.example.com"
}

variable "vpc_cidr" {
  type    = string
  default = "10.0.0.0/16"
}

variable "db_username" {
  type      = string
  sensitive = true
  default   = "cuppa_admin"
}

variable "db_password" {
  type      = string
  sensitive = true
}

variable "auth_secret" {
  type        = string
  sensitive   = true
  description = "NextAuth AUTH_SECRET (min 32 chars)"
}

variable "smtp_host" {
  type    = string
  default = "email-smtp.us-east-1.amazonaws.com"
}

variable "smtp_port" {
  type    = string
  default = "587"
}

variable "smtp_user" {
  type      = string
  sensitive = true
}

variable "smtp_pass" {
  type      = string
  sensitive = true
}

variable "smtp_from" {
  type    = string
  default = "App <noreply@example.com>"
}

variable "github_org" {
  type        = string
  description = "GitHub org or user for OIDC deploy role"
  default     = "your-org"
}

variable "github_repo" {
  type        = string
  description = "GitHub repository name"
  default     = "cuppa"
}

# ── RDS ──────────────────────────────────────────────────────────────────────
variable "db_instance_class" {
  type    = string
  default = "db.r6g.large"
}

variable "db_allocated_storage_gb" {
  type    = number
  default = 100
}

variable "db_max_allocated_storage_gb" {
  type    = number
  default = 1000
}

# ── EKS ──────────────────────────────────────────────────────────────────────
variable "eks_cluster_version" {
  type    = string
  default = "1.29"
}

variable "web_node_instance_types" {
  type    = list(string)
  default = ["t3.large"]
}

variable "web_node_min_size" {
  type    = number
  default = 3
}

variable "web_node_max_size" {
  type    = number
  default = 100
}

variable "web_node_desired_size" {
  type    = number
  default = 3
}

variable "worker_node_instance_types" {
  type    = list(string)
  default = ["t3.medium"]
}

variable "worker_node_min_size" {
  type    = number
  default = 2
}

variable "worker_node_max_size" {
  type    = number
  default = 50
}

variable "worker_node_desired_size" {
  type    = number
  default = 2
}

# ── Redis ────────────────────────────────────────────────────────────────────
variable "redis_node_type" {
  type    = string
  default = "cache.r6g.large"
}

variable "redis_num_cache_nodes" {
  type    = number
  default = 2
}
