---
AWSTemplateFormatVersion: '2010-09-09'
Description: Handel-created SQS queue

Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      {{#if fifoQueue}}
      FifoQueue: true
      ContentBasedDeduplication: {{contentBasedDeduplication}}
      {{/if}}
      DelaySeconds: {{delaySeconds}}
      MaximumMessageSize: {{maxMessageSize}}
      MessageRetentionPeriod: {{messageRetentionPeriod}}
      QueueName: {{queueName}}
      ReceiveMessageWaitTimeSeconds: {{receiveMessageWaitTimeSeconds}}
      VisibilityTimeout: {{visibilityTimeout}}
  {{#if redrivePolicy}}
      RedrivePolicy:
        deadLetterTargetArn: !GetAtt deadLetterQueue.Arn
        maxReceiveCount: {{deadLetterMaxReceiveCount}}
  deadLetterQueue:
    Type: AWS::SQS::Queue
    Properties:
      {{#if fifoQueue}}
      FifoQueue: true
      ContentBasedDeduplication: {{contentBasedDeduplication}}
      {{/if}}
      DelaySeconds: {{deadLetterDelaySeconds}}
      MaximumMessageSize: {{deadLetterMaxMessageSize}}
      MessageRetentionPeriod: {{deadLetterMessageRetentionPeriod}}
      QueueName: {{deadLetterQueueName}}
      ReceiveMessageWaitTimeSeconds: {{deadLetterReceiveMessageWaitTimeSeconds}}
      VisibilityTimeout: {{deadLetterVisibilityTimeout}}
  {{/if}}

Outputs:
  QueueUrl:
    Description: The URL of the queue
    Value: !Ref Queue
  QueueArn:
    Description: The ARN of the queue
    Value:
      Fn::GetAtt:
        - "Queue"
        - "Arn"
  QueueName:
    Description: The name of the queue
    Value:
      Fn::GetAtt:
        - "Queue"
        - "QueueName"
  {{#if redrivePolicy}}
  DeadLetterQueueUrl:
    Description: The URL of the dead letter queue
    Value: !Ref deadLetterQueue
  DeadLetterQueueArn:
    Description: The ARN of the dead letter queue
    Value:
      Fn::GetAtt:
        - "deadLetterQueue"
        - "Arn"
  DeadLetterQueueName:
    Description: The name of the dead letter queue
    Value:
      Fn::GetAtt:
        - "deadLetterQueue"
        - "QueueName"
  {{/if}}
