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

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

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

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

variable "team" {
  description = "Datadog team slug"
  default     = "abacus"
}

variable "lambda_provisioned_concurrent_executions" {
  default = 1
}

variable "managed_airflow_role_name" {
  default = "uat-abacus-managed-airflow-airflow-execution-role"
}

variable "test_group_name" {
  default = "cucumber-tests"
}

variable "sales_files_bucket_arn" {
  default = "arn:aws:s3:::uat-royalties-sales-files"
}

variable "sales_files_bucket_name" {
  default = "uat-royalties-sales-files"
}

variable "abacus_adjustments_bucket_name" {
  default = "uat-abacus-adjustments"
}

variable "json_contract_file_import_bucket_name" {
  default = "abacus-json-contract-file-import"
}

variable "sap_env" {
  default     = "6000"
  description = "Port for SAP API"
}

variable "sap_api" {
  default     = "https://connect-tsme.sonymusic.com"
  description = "URL root for SAP API"
}

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     = "UAT"
}

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

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

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

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

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

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

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

variable "sync_contract_sap_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for sync_contract_sap lambda"
  type        = list(string)
  default = [
    "sap_auth_username",
    "sap_auth_password",
    "MYSQL_DB_PASS"
  ]
}

variable "schedule_auto_add_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for sync_contract_sap lambda"
  type        = list(string)
  default = [
    "ORCHARD_PROFILE_UUID",
    "ORCHARD_PROFILE_ID",
    "ORCHARD_IDENTITY_ID"
  ]
}

variable "sync_account_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for sync_account lambda"
  type        = list(string)
  default = [
    "ORCHARD_PROFILE_UUID",
    "ORCHARD_PROFILE_ID",
    "ORCHARD_IDENTITY_ID"
  ]
}

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

variable "accounting_run_balance_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for ledger_accounting_run_balance lambda"
  type        = list(string)
  default = [
    "ORCHARD_PROFILE_UUID",
    "ORCHARD_PROFILE_ID",
    "ORCHARD_IDENTITY_ID",
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
  ]
}

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

variable "lambda_abacus_reserves_take_secret_names" {
  description = "List of secrets manager secrets for reserves_take lambda"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
  ]
}

variable "generate_flowthrough_adjustments_secret_names" {
  description = "List of secrets manager secrets for generate_flowthrough_adjustments lambda"
  type        = list(string)
  default = [
    "SNOWFLAKE_KEY_PASSPHRASE",
    "SNOWFLAKE_PRIVATE_KEY",
  ]
}

variable "av_scan_lambda_function_name" {
  default = "lambda-av-scan-containerized"
}

variable "kafka_bootstrap_servers_cdc" {
  description = "Kafka bootstrap servers for CDC cluster."
  default = [
    "b-1.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-2.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-3.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-4.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-5.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-6.uatmanagedkafkacdcdest.dhuccy.c6.kafka.us-east-1.amazonaws.com:9094",
  ]
}

variable "kafka_bootstrap_servers_artist_diy" {
  description = "Kafka bootstrap servers for artist-diy cluster."
  default = [
    "b-1.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-2.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-3.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-4.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-5.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
    "b-6.uatmanagedkafkaartistd.kq5j3y.c6.kafka.us-east-1.amazonaws.com:9094",
  ]
}

variable "contribution_metadata_topic" {
  description = "Topic that the auto-add-contribution lambda will subscribe to"
  default     = "event.nr.contribution.metadata"
}

variable "accounts_topic" {
  description = "MSK topic that triggers the sync_account lambda"
  default     = "event.accounts"
}

variable "graphql_url" {
  description = "graphql url to query against"
  default     = "https://uat-graphql-router.theorchard.io/graphql"
}

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     = "UAT_ROYALTY_ACCOUNTING_ROYALTY_ACCOUNTING"
# }

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

variable "escalation_notification_endpoints" {
  description = "Endpoints for escalation alerts. Can be email, slack, pagerduty, etc"
  type        = string
  default     = "@slack-The_Orchard-accounting-outage"
}

variable "pagerduty_alert_channel" {
  type    = string
  default = "@oncall-abacus"
}

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     = "uat-royalty-accounting-db.qa-accounting.theorchard.io"
}

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

variable "lambda_abacus_ar_mysql_database" {
  description = "Database name"
  type        = string
  default     = "art_relations"
}

variable "lambda_abacus_ar_mysql_host" {
  description = "art_relations database host url"
  type        = string
  default     = "qadb01.qaorch.com"
}

variable "lambda_abacus_ar_mysql_user" {
  description = "art_relations database username"
  type        = string
  default     = "lambda-abacus-art-relations"
}

variable "lambda_abacus_s3_account_id" {
  description = "S3 Buckets owner account id."
  type        = string
  default     = "989790945997"
}

variable "datadog_invocation_error_monitor_threshold" {
  default = 0
}

variable "datadog_invocation_recovery_monitor_threshold" {
  default = 0.9
}

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

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

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

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

variable "territory_backfill_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for royalty_collection_territory_backfill lambda"
  type        = list(string)
  default = [
    "ART_RELATIONS_MYSQL_DB_PASS",
    "ROYALTY_ACCOUNTING_MYSQL_DB_PASS",
    "SLACK_BOT_TOKEN",
    "CHANNEL_ID"
  ]
}

variable "payment_allocation_secret_names" {
  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"
  ]
}

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