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

  environment                = var.environment
  application_family         = var.application_family
  lambda_name                = var.lambda_name
  lambda_description         = "Aggregates data from Snowflake into MySQL"
  use_container_image        = true
  container_image_custom_uri = "${data.aws_ecr_repository.lambda.repository_url}:develop" # Tag will be updated during the deployment
  lambda_function_timeout    = "900"
  splitio_enabled            = false

  vpc_enabled             = true
  vpc_id                  = data.aws_vpc.main.id
  vpc_subnet_ids          = data.aws_subnets.private.ids
  vpc_security_group_name = data.aws_security_group.lambda.name

  datadog_advanced_enabled            = true
  datadog_advanced_api_key_secret_arn = data.aws_secretsmanager_secret.datadog_secret.arn

  dlq_enabled                    = false
  ows_machine_to_machine_enabled = false

  iam_managed_policy_attachments = [
    data.aws_iam_policy.secrets_services_ro.arn,
    data.aws_iam_policy.logging_policy.arn,
    module.load_playlists_tracks_history_rw.policy.arn,
  ]
  lambda_function_reserved_concurrent_executions = "3"
  lambda_function_environment_variables = {
    ENVIRONMENT                         = var.environment
    SENTRY_DSN                          = "${var.environment}/${var.lambda_name}/SENTRY_DSN"
    MYSQL_DATABASE                      = "dbSony_dbo"
    MYSQL_HOST                          = module.domains[var.environment]["main-db-rw"]
    MYSQL_PASSWORD                      = module.secrets["MYSQL_PASSWORD"].secret_name
    MYSQL_USER                          = "apollo_utph_usr"
    S3_BUCKET                           = data.aws_s3_bucket.load_playlists_tracks_history.bucket
    SNOWFLAKE_ACCOUNT                   = "DELPHI"
    SNOWFLAKE_EXPLORATION_DATABASE      = "DELPHI_EXPLORATION"
    SNOWFLAKE_INTEGRATION               = "PROD_APOLLO"
    SNOWFLAKE_PASSWORD                  = module.secrets["SNOWFLAKE_PASSWORD"].secret_name
    SNOWFLAKE_PUBLIC_DATA_MAIN_DATABASE = "DELPHI_PUBLIC_DATA_MAIN"
    SNOWFLAKE_USER                      = "APOLLO"
    SNOWFLAKE_WAREHOUSE                 = "APOLLO_${upper(var.environment)}_JOBS_WH"

    DD_API_KEY_SECRET_ARN = data.aws_secretsmanager_secret.datadog_secret.arn
    DD_TRACE_ENABLED      = "true"
    DD_SITE               = "datadoghq.com"
    DD_LAMBDA_HANDLER     = "src.lambda_handler"
  }

  additional_tags = {
    "plat_env_project_service" = "${local.aggregated_tag}_PRL_LMB"
  }
}
