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

  application_family = var.application_family
  environment        = var.environment
  platform           = "python"
  service_name       = var.lambda_spotify_api_name
  teams              = [var.environment]
}


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

  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
  container_image_custom_uri = "086679231553.dkr.ecr.us-east-1.amazonaws.com/lambda-spotify-api:latest"
  vpc_id                     = module.vpc_info.vpc_id
  vpc_subnet_ids             = module.vpc_info.default_private_subnet_ids
  dlq_type                   = "sqs"

  // The lambda will be triggered by a MSK event
  msk_event_enabled                      = true
  event_source_mapping_batch_size        = 10
  kafka_topics                           = ["stream.storeAPIRequest.spotify.split"]
  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 = "1"
  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.5.1"
  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
}
