module "lambda-nr-ownership-ingest-ar-rules-writer" {
  source                          = "git@github.com:theorchard/terraform-lambda.git//?ref=3.1.9"
  environment                     = var.environment
  lambda_name                     = var.ar_rules_writer_lambda_name
  lambda_description              = "Consumes cdc art relation rights data."
  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_queue_name = module.sqs_sync_rights_queue.queue_name
  event_source_mapping_batch_size = 10
  sqs_event_enabled               = var.sqs_event_enabled

  lambda_function_environment_variables = {
    Environment        = var.environment
    DD_LAMBDA_HANDLER  = "app.handler"
    SENTRY_DSN         = module.lambda_nr_ownership_ingest_ar_rules_writer_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"
    KAFKA_BROKERS      = var.kafka_brokers
    LOGGER_LEVEL                 = "info"
    SQS_URL                      = module.sqs_sync_rights_queue.queue_url
    SQS_PRODUCT_TRANSFER_URL     = module.sqs_product_transfer_queue.queue_url
  }

  lambda_function_reserved_concurrent_executions = 1

  iam_managed_policy_attachments = [
    data.aws_iam_policy.ownership_ingestion_bucket_rw_policy.arn,
    module.sqs_product_transfer_queue.sqs_minimal_policy_arn_output
  ]
}

resource "aws_lambda_event_source_mapping" "ar_rules_writer_product_transfer_sqs" {
  event_source_arn        = module.sqs_product_transfer_queue.queue_arn
  function_name           = module.lambda-nr-ownership-ingest-ar-rules-writer.lambda_arn
  batch_size              = 10
  enabled                 = var.sqs_event_enabled
  function_response_types = ["ReportBatchItemFailures"]
}

module "lambda_nr_ownership_ingest_ar_rules_writer_sentry_project" {
  source                       = "git@github.com:theorchard/terraform-sentry.git//?ref=4.1.2"
  service_name                 = var.ar_rules_writer_lambda_name
  secrets_manager_service_name = var.ar_rules_writer_lambda_name
  environment                  = var.environment
  platform                     = "node"
  application_family           = var.application_family
}

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