data "aws_caller_identity" "current" {
}

resource "aws_sns_topic" "topic" {
  name              = var.is_fifo_topic ? "${var.environment}-${var.sns_topic_name}.fifo" : "${var.environment}-${var.sns_topic_name}"
  kms_master_key_id = var.sns_kms_master_key_id

  fifo_topic                  = var.is_fifo_topic
  content_based_deduplication = var.enable_content_based_deduplication

  tags = merge(
    {
      environment        = var.environment
      service_name       = var.sns_topic_name
      terraformed        = true
      application_family = var.application_family
    },
    var.additional_tags
  )
}

resource "aws_sns_topic_subscription" "subscription" {
  count                  = var.sns_subscription_enabled ? 1 : 0
  endpoint               = var.sns_subscription_endpoint
  protocol               = var.sns_subscription_protocol
  endpoint_auto_confirms = var.sns_subscription_protocol == "email" ? false : true
  topic_arn              = aws_sns_topic.topic.arn
}
