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

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

variable "service_name" {
  default = "lambda-abacus"
}

variable "application_family" {
  default     = "accounting"
  description = "Application family to which abacus belongs"
}

variable "lambda_snowflake_account" {
  description = "Snowflake account"
  default     = "delphi.us-east-1"
}

variable "lambda_snowflake_database" {
  description = "Snowflake database"
  default     = "ROYALTY_ACCOUNTING"
}

variable "lambda_snowflake_schema" {
  description = "Snowflake schema"
  default     = "QA"
}

variable "lambda_snowflake_warehouse" {
  description = "Snowflake warehouse"
  default     = "QA_ABACUS_WH"
}

variable "lambda_snowflake_role" {
  description = "Snowflake role"
  default     = "ROYALTYACCOUNTING_DB_QA_SCHEMA_READWRITE"
}

variable "lambda_snowflake_user" {
  description = "User used to log in to Snowflake"
  default     = "LAMBDA_ROYALTY_ACCOUNTING"
}

variable "lambda_dbt_warehouse" {
  description = "Snowflake dbt warehouse"
  default     = "QA_ACCOUNTING_DBT_WAREHOUSE"
}

variable "lambda_dbt_role" {
  description = "Snowflake dbt role"
  default     = "QA_ACCOUNTING_DBT_SCHEDULER"
}

variable "adjustment_file_complete_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for adjustment_file_complete_secrets_manager_secret_names lambda"
  type        = list(string)
  default     = ["MYSQL_DB_PASS"]
}

variable "adjustment_file_initialize_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for adjustment_file_initialize_secrets_manager_secret_names lambda"
  type        = list(string)
  default = [
    "SPLITIO_API_KEY",
    "MYSQL_DB_PASS",
    "ORCHARD_IDENTITY_ID"
  ]
}

variable "payment_allocation_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for payment_allocation lambda"
  type        = list(string)
  default = [
    "SPLITIO_API_KEY",
    "MYSQL_DB_PASS",
    "ORCHARD_IDENTITY_ID"
  ]
}

variable "adjustment_file_prepare_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for adjustment_file_prepare_secrets_manager_secret_names lambda"
  type        = list(string)
  default     = ["MYSQL_DB_PASS"]
}

variable "adjustment_file_process_batch_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for adjustment_file_process_batch_secrets_manager_secret_names lambda"
  type        = list(string)
  default     = ["MYSQL_DB_PASS"]
}

variable "outbox_process_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for outbox_process_secrets_manager_secret_names lambda"
  type        = list(string)
  default     = ["MYSQL_DB_PASS"]
}

variable "outbox_process_schedule_expression" {
  description = "EventBridge schedule expression for outbox process polling"
  type        = string
  default     = "cron(* * * * ? *)" # disable for now by setting year to 2199
}

variable "lambda_snowflake_orchard_app_database" {
  description = "Snowflake ORCHARD_APP_REPORTING_V2 database"
  default     = "ORCHARD_APP_REPORTING_V2"
}

variable "fivetran_schema" {
  description = "Replicated royalty_accounting database in snowflake"
  default     = "QA_ROYALTY_ACCOUNTING_ROYALTY_ACCOUNTING"
}

variable "notification_endpoints" {
  description = "Endpoints for alerts. Can be email, slack, pagerduty, etc"
  type        = string
  default     = "@slack-abacus-monitoring-qa"
}

variable "lambda_abacus_mysql_database" {
  description = "Abacus database name"
  type        = string
  default     = "royalty_accounting"
}

variable "lambda_abacus_mysql_host" {
  description = "Abacus database host url"
  type        = string
  default     = "qa-royalty-accounting-db.theorchard.io"
}

variable "lambda_abacus_mysql_user" {
  description = "Abacus database username"
  type        = string
  default     = "lambda-abacus"
}

variable "datadog_invocation_error_monitor_threshold" {
  default = 0
}

variable "datadog_invocation_recovery_monitor_threshold" {
  default = 0.9
}

variable "splitio_api_key_ro_policy_name" {
  type        = string
  description = "IAM policy to read SplitIO key."
  default     = "secretsmanager-qa-python-orchard-features-SPLITIO_API_KEY-ro"
}

variable "lambda_provisioned_concurrent_executions" {
  default = 1
}

variable "abacus_adjustments_bucket_name" {
  description = "S3 bucket name for abacus adjustments files"
  type        = string
  default     = "qa-abacus-adjustments"
}

variable "teams" {
  type        = set(string)
  description = "A set of Datadog Teams to associate the resources with"
  default     = ["abacus"]
}

variable "team_name" {
  type        = string
  description = "Datadog team to associate the resources with"
  default     = "abacus"
}

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 "secrets_manager_secret_names" {
  description = "List of secrets manager secrets to create"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
    "MYSQL_DB_PASS",
    "INTEGRATION_TEST_SNOWFLAKE_KEY_PASSPHRASE", # QA only
    "INTEGRATION_TEST_SNOWFLAKE_PRIVATE_KEY"     # QA only
  ]
}

variable "snowflake_secret_names" {
  description = "List of snowflake secrets to create"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
  ]
}

variable "integration_tests_secrets" {
  type        = list(string)
  description = "A set of secrets that are used in the integration tests Jenkins job."
  default = [
    "MYSQL_PASS",
    "TEST_USER_AWS_ACCESS_KEY_ID",
    "TEST_USER_AWS_SECRET_ACCESS_KEY",
    "SAP_AUTH_PASSWORD"
  ]
}

variable "adjustments_json_import_secrets" {
  description = "List of secrets manager secrets to create"
  type        = list(string)
  default = [
    "MYSQL_DB_PASS"
  ]
}

variable "adjustments_json_validation_secrets" {
  description = "List of secrets manager secrets to create"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
    "INTEGRATION_TEST_SNOWFLAKE_KEY_PASSPHRASE", # QA only
    "INTEGRATION_TEST_SNOWFLAKE_PRIVATE_KEY"     # QA only
  ]
}

variable "s3_bucket_adjustments_snowflake_stage" {
  description = "Snowflake stage for qa-abacus-adjustments s3 bucket"
  type        = string
  default     = "qa-abacus-adjustments-s3-stage"
}

variable "generate_flowthrough_adjustments_secrets" {
  description = "List of secrets manager secrets to create"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
    "INTEGRATION_TEST_SNOWFLAKE_KEY_PASSPHRASE", # QA only
    "INTEGRATION_TEST_SNOWFLAKE_PRIVATE_KEY"     # QA only
  ]
}
