module "lambda-nr-ownership-ingest-reporter" {
  source                      = "git@github.com:theorchard/terraform-lambda.git//?ref=4.0.1"
  environment                 = var.environment
  lambda_name                 = var.reporter_lambda_name
  lambda_description          = "Compiles ingest errors, writes to S3."
  lambda_function_timeout     = "900"
  use_container_image         = true
  vpc_subnet_ids              = module.vpc_info.default_private_subnet_ids
  vpc_enabled                 = true
  vpc_id                      = module.vpc_info.vpc_id
  datadog_advanced_enabled    = true
  application_family          = var.application_family
  lambda_function_memory_size = var.lambda_memory_size
  splitio_enabled             = true

  event_source_mapping_enabled                 = true
  event_source_mapping_batch_size              = 1
  event_source_mapping_parallelization_factor  = 1
  event_source_mapping_resource_type           = "dynamodb"
  event_source_mapping_stream_name             = var.stream_label
  event_source_mapping_table_name              = "${var.environment}_${var.dynamodb_table_name}"
  event_source_mapping_starting_position       = "LATEST"
  event_source_mapping_filter_criteria_pattern = jsonencode({ "dynamodb" = { "NewImage" : { "type" : { "S" : ["finished"] } } } })

  lambda_function_environment_variables = {
    Environment           = var.environment
    DD_LAMBDA_HANDLER     = "app.handler"
    SENTRY_DSN            = module.lambda_nr_ownership_ingest_reporter_sentry_project.sentry_key_dsn_public_output
    SPLIT_API_KEY_PATH    = "${var.environment}/split/API_KEY"
    BUCKET_NAME           = data.aws_s3_bucket.s3_bucket.bucket
    KAFKAJS_LOG_LEVEL     = "nothing"
    DDB_TABLE_NAME        = "${var.environment}_${var.dynamodb_table_name}"
    KAFKA_BROKERS         = var.kafka_brokers
    REPORTING_KAFKA_TOPIC = var.ownership_ingest_reporting_topic
  }

  lambda_function_reserved_concurrent_executions = 1

  iam_managed_policy_attachments = [
    data.aws_iam_policy.ownership_ingestion_bucket_rw_policy.arn,
    aws_iam_policy.dynamodb_read_policy_basic.arn
  ]
}

module "lambda_nr_ownership_ingest_reporter_sentry_project" {
  source                       = "git@github.com:theorchard/terraform-sentry//?ref=4.1.2"
  service_name                 = "lambda-nr-ownership-reporter"
  secrets_manager_service_name = var.reporter_lambda_name
  environment                  = var.environment
  platform                     = "node"
  application_family           = var.application_family
}

module "datadog_lambda_nr_ownership_ingest_reporter_dashboards" {
  source                 = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=6.13.4"
  service_name           = var.reporter_lambda_name
  environment            = var.environment
  notification_endpoints = var.notification_endpoints
  teams                  = [var.team_name]
}
