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_provisioned_concurrent_executions" {
  default = 1
}

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

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

variable "abacus_adjustments_bucket_arn" {
  default = "arn:aws:s3:::qa-abacus-adjustments"
}

variable "abacus_adjustments_bucket_name" {
  default = "qa-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     = "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 "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 "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 "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"
  ]
}

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 "file_upload_complete_secrets_manager_secret_names" {
  description = "List of secrets manager secrets for file_upload_complete_secrets_manager_secret_names lambda"
  type        = list(string)
  default     = []
}

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

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


variable "trigger_msk_cluster_name" {
  description = "MSK cluster name"
  default     = "qa-managed-kafka-cdc-destination"
}

variable "trigger_msk_cluster_uuid" {
  description = "MSK cluster uuid"
  default     = "9d840e30-6e78-4bf7-8ab2-8d788cff806d-6"
}

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

variable "trigger_msk_artist_diy_cluster_name" {
  description = "MSK artist_diy cluster name"
  default     = "qa-managed-kafka-artist-diy"
}

variable "trigger_msk_artist_diy_cluster_uuid" {
  description = "MSK artist_diy cluster uuid"
  default     = "992c3c6c-419a-4c89-a3f4-0d83eadce2db-6"
}

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://qa-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     = "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 "escalation_notification_endpoints" {
  description = "Endpoints for escalation alerts. Can be email, slack, pagerduty, etc"
  type        = string
  default     = "@slack-accounting-outage"
}

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 "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 "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 "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"
  ]
}
