module "lambda_spotify_api_create_sentry_project" {
  source = "git@github.com:theorchard/terraform-sentry.git?ref=2.0.1"

  application_family = var.application_family
  environment        = var.environment
  platform           = "python"
  service_name       = var.lambda_spotify_api_name
  team               = var.environment
}


module "lambda_spotify_api" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=2.4.4"

  application_family       = var.application_family
  datadog_enabled          = true
  datadog_advanced_enabled = true
  environment              = var.environment
  lambda_name              = var.lambda_spotify_api_name
  lambda_description       = "Lambda for executing Spotify API requests."
  use_container_image      = true
  vpc_id                   = var.vpc_id
  vpc_subnet_ids           = var.vpc_subnet_ids

  // The lambda will be triggered by a MSK event
  msk_event_enabled                                   = true
  event_source_mapping_batch_size                     = 50
  msk_topics                                          = ["stream.storeAPIRequest.spotify.split"]
  event_source_mapping_bisect_batch_on_function_error = true
  event_source_mapping_msk_cluster_name               = var.trigger_msk_cluster_name
  event_source_mapping_msk_cluster_uuid               = var.trigger_msk_cluster_uuid
  event_source_mapping_starting_position              = "LATEST"
  lambda_function_reserved_concurrent_executions      = "3"
  datadog_function_destination_lambda_name            = "DatadogLambdaFunction"

  lambda_function_environment_variables = {
    Environment   = var.environment
    KAFKA_BROKERS = var.kafka_brokers
  }
}

module "lambda_spotify_api_secrets" {
  source = "git@github.com:theorchard/terraform-secrets-manager.git//?ref=1.0.4"
  for_each = toset([
    "SPOTIFY_CLIENT_ID",
    "SPOTIFY_CLIENT_SECRET"
  ])

  application_family = var.application_family
  environment        = var.environment
  service_name       = var.lambda_spotify_api_name
  secret_name        = each.value
}
