resource "aws_ssm_parameter" "cdn_strategy" {
  name  = "/common/cdn/strategy"
  type  = "SecureString"
  value = "cloudfront"

  lifecycle {
    ignore_changes = [value] # Must be changed manually fron AWS
  }
}

# TODO: migrate this constant value to a .env file
resource "aws_ssm_parameter" "cdn_bunny_url" {
  name  = "/common/cdn/bunny/url"
  type  = "SecureString"
  value = "https://humand-${local.env_config.env}.b-cdn.net"

  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "cdn_bunny_securitykey" {
  name  = "/common/cdn/bunny/securitykey"
  type  = "SecureString"
  value = "placeholder" # must be manualy set in Parameter Store

  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_auth_type" {
  name  = "/common/monolith-cdc/kafka/auth-type"
  type  = "SecureString"
  value = "aws-msk-iam"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_groups_group_id" {
  name  = "/common/monolith-cdc/kafka/groups/group-id"
  type  = "SecureString"
  value = "monolith.groups"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_users_search_group_id" {
  name  = "/common/monolith-cdc/kafka/users-search/group-id"
  type  = "SecureString"
  value = "monolith.users-search"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_departments_group_id" {
  name  = "/common/monolith-cdc/kafka/departments/group-id"
  type  = "SecureString"
  value = "monolith.departments"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_user_gatherings_group_id" {
  name  = "/common/monolith-cdc/kafka/user-gatherings/group-id"
  type  = "SecureString"
  value = "monolith.user-gatherings"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_job_positions_group_id" {
  name  = "/common/monolith-cdc/kafka/job-positions/group-id"
  type  = "SecureString"
  value = "monolith.job-positions"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_acknowledgements_group_id" {
  name  = "/common/monolith-cdc/kafka/acknowledgements/group-id"
  type  = "SecureString"
  value = "monolith.acknowledgements"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_firebase_group_id" {
  name  = "/common/monolith-cdc/kafka/firebase/group-id"
  type  = "SecureString"
  value = "monolith.firebase"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_performance_reviews_group_id" {
  name  = "/common/monolith-cdc/kafka/performance-reviews/group-id"
  type  = "SecureString"
  value = "monolith.performance-reviews"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_goals_group_id" {
  name  = "/common/monolith-cdc/kafka/goals/group-id"
  type  = "SecureString"
  value = "monolith.goals"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_regions_group_id" {
  name  = "/common/monolith-cdc/kafka/regions/group-id"
  type  = "SecureString"
  value = "monolith.regions"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_time_tracking_group_id" {
  name  = "/common/monolith-cdc/kafka/time-tracking/group-id"
  type  = "SecureString"
  value = "monolith.time-tracking"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_events_group_id" {
  name  = "/common/monolith-cdc/kafka/events/group-id"
  type  = "String"
  value = "monolith.events"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_livestream_group_id" {
  name  = "/common/monolith-cdc/kafka/livestream/group-id"
  type  = "String"
  value = "monolith.livestream"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_feed_group_id" {
  name  = "/common/monolith-cdc/kafka/feed/group-id"
  type  = "String"
  value = "monolith.feed"
}

resource "aws_ssm_parameter" "monolith_cdc_kafka_marketplace_group_id" {
  name  = "/common/monolith-cdc/kafka/marketplace/group-id"
  type  = "String"
  value = "monolith.marketplace"
}

resource "aws_ssm_parameter" "rate_limit_public_api_shadow_mode" {
  name  = "/common/rate-limit/public-api-shadow-mode"
  type  = "String"
  value = "true"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "throttle_enabled" {
  name  = "/be/throttle/enabled"
  type  = "String"
  value = "true"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "throttle_shadow_mode" {
  name  = "/be/throttle/shadow-mode"
  type  = "String"
  value = "true"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "rate_limit_red_bubbles" {
  name  = "/be/rate-limit/red-bubbles"
  type  = "SecureString"
  value = "300"
  lifecycle {
    ignore_changes = [value]
  }
}

# Insights DB Connection timeouts
resource "aws_ssm_parameter" "insights_db_connection_timeout_millis" {
  name  = "/common/insights-db/connection-timeout-millis"
  type  = "String"
  value = "10000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_query_timeout_millis" {
  name  = "/common/insights-db/query-timeout-millis"
  type  = "String"
  value = "16000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_statement_timeout_millis" {
  name  = "/common/insights-db/statement-timeout-millis"
  type  = "String"
  value = "15000"
  lifecycle {
    ignore_changes = [value]
  }
}

# Insights DB Pool config
resource "aws_ssm_parameter" "insights_db_pool_acquire_timeout_millis" {
  name  = "/common/insights-db/pool/acquire-timeout-millis"
  type  = "String"
  value = "20000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_create_retry_interval_millis" {
  name  = "/common/insights-db/pool/create-retry-interval-millis"
  type  = "String"
  value = "200"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_create_timeout_millis" {
  name  = "/common/insights-db/pool/create-timeout-millis"
  type  = "String"
  value = "10000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_destroy_timeout_millis" {
  name  = "/common/insights-db/pool/destroy-timeout-millis"
  type  = "String"
  value = "5000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_idle_timeout_millis" {
  name  = "/common/insights-db/pool/idle-timeout-millis"
  type  = "String"
  value = "30000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_max" {
  name  = "/common/insights-db/pool/max"
  type  = "String"
  value = "10"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_min" {
  name  = "/common/insights-db/pool/min"
  type  = "String"
  value = "2"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "insights_db_pool_reap_interval_millis" {
  name  = "/common/insights-db/pool/reap-interval-millis"
  type  = "String"
  value = "1000"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "send_push_notifications_to_ns" {
  name  = "/be/notifications/send-push-notifications-to-ns"
  type  = "String"
  value = "false"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "notification_grouping_enabled" {
  name  = "/be/notification-grouping-enabled"
  type  = "String"
  value = "true"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "feature_flags_cache_ttl" {
  name  = "/common/app/feature-flags/cache-ttl"
  type  = "String"
  value = "60"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "service_configs_cache_ttl" {
  name  = "/common/app/service-configs/cache-ttl"
  type  = "String"
  value = "60"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "community_features_cache_ttl" {
  name  = "/common/app/community-features/cache-ttl"
  type  = "String"
  value = "300"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "desert_eagle_service_address" {
  name  = "/common/urls/desert-eagle/grpc"
  type  = "String"
  value = "humand-grpc-internal.dev.humand.co:50051"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "cerberus_service_address" {
  name  = "/common/urls/cerberus/grpc"
  type  = "String"
  value = "humand-grpc-internal.dev.humand.co:50051"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "meeseeks_base_url" {
  name  = "/common/urls/meeseeks/http"
  type  = "String"
  value = "https://api.dev.humand.co/api/v1/meeseeks"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "cors_allowed_origins" {
  name  = "/common/cors/allowed-origins"
  type  = "String"
  value = "*"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "cors_allowed_headers" {
  name  = "/common/cors/allowed-headers"
  type  = "String"
  value = "*"
  lifecycle {
    ignore_changes = [value]
  }
}

resource "aws_ssm_parameter" "file_assets_guest_session_signing_key" {
  name  = "/be/file-assets/guest-session-signing-key"
  type  = "SecureString"
  value = "placeholder"
  lifecycle {
    ignore_changes = [value]
  }
}
