module "youtube_audit_queue" {
  source = "git@github.com:theorchard/terraform-sqs.git//?ref=2.5.0"

  environment        = var.environment
  application_family = var.application_family
  queue_name         = var.sqs_queue_name

  sqs_delay_seconds              = 0
  sqs_max_message_size           = 262144
  sqs_message_retention_seconds  = 86400
  sqs_receive_wait_time_seconds  = 10
  sqs_visibility_timeout_seconds = 60

  sqs_deadletter_enabled = "true"

  deadletter_max_receive_count         = 100
  deadletter_delay_seconds             = 5
  deadletter_max_message_size          = 262144
  deadletter_message_retention_seconds = 86400
  deadletter_receive_wait_time_seconds = 10
}

data "aws_iam_policy_document" "sqs_access_policy_document" {
  statement {
    sid = "producer"

    effect = "Allow"

    actions = [
      "sqs:GetQueueAttributes",
      "sqs:GetQueueUrl",
      "sqs:SendMessage*",
    ]

    resources = [
      module.youtube_audit_queue.queue_arn,
    ]
  }

  statement {
    sid = "consumer"

    effect = "Allow"

    actions = [
      "sqs:ChangeMessageVisibility*",
      "sqs:DeleteMessage*",
      "sqs:GetQueueAttributes",
      "sqs:GetQueueUrl",
      "sqs:ReceiveMessage",
    ]

    resources = [
      module.youtube_audit_queue.queue_arn,
    ]
  }

  statement {
    effect = "Allow"

    actions = [
      "sqs:ListQueues",
    ]

    resources = [
      "*"
    ]
  }
}

resource "aws_iam_policy" "sqs_access_policy" {
  name   = "SQS-${var.environment}-${var.service_name}-full-access"
  policy = data.aws_iam_policy_document.sqs_access_policy_document.json
}
