#!/bin/bash

# A script to demonstrate basic SQS message operations (create, send, receive, delete)
# on a Standard SQS queue using AWS CLI.

# --- Configuration ---
REGION="us-east-1"
QUEUE_NAME="MyCLISQSQueue"

# --- 1. Create SQS Queue ---
echo "--- Creating SQS Queue: $QUEUE_NAME ---"
QUEUE_URL=$(aws sqs create-queue \
  --queue-name $QUEUE_NAME \
  --region $REGION \
  --query 'QueueUrl' --output text)

echo "Queue created with URL: $QUEUE_URL"
echo "Waiting for queue to be ready..."
sleep 5 # Give SQS a moment to provision the queue

# --- 2. Send Message ---
echo -e "\n--- Sending a message to the queue ---"
MESSAGE_BODY="Hello from AWS CLI SQS!"
aws sqs send-message \
  --queue-url $QUEUE_URL \
  --message-body "$MESSAGE_BODY" \
  --region $REGION

echo "Message sent: '$MESSAGE_BODY'"

# --- 3. Receive Message ---
echo -e "\n--- Receiving messages from the queue (using long polling) ---"
# Use --wait-time-seconds for long polling
RECEIVE_RESPONSE=$(aws sqs receive-message \
  --queue-url $QUEUE_URL \
  --max-number-of-messages 1 \
  --wait-time-seconds 10 \
  --region $REGION \
  --output json)

MESSAGE_BODY_RECEIVED=$(echo $RECEIVE_RESPONSE | jq -r '.Messages[0].Body')
RECEIPT_HANDLE=$(echo $RECEIVE_RESPONSE | jq -r '.Messages[0].ReceiptHandle')

if [ -n "$MESSAGE_BODY_RECEIVED" ]; then
  echo "Received message: '$MESSAGE_BODY_RECEIVED'"
  echo "Receipt Handle: '$RECEIPT_HANDLE'"

  # --- 4. Delete Message ---
  echo -e "\n--- Deleting the received message ---"
  aws sqs delete-message \
    --queue-url $QUEUE_URL \
    --receipt-handle "$RECEIPT_HANDLE" \
    --region $REGION
  echo "Message deleted."
else
  echo "No messages received within the wait time."
fi

# --- 5. Delete SQS Queue ---
echo -e "\n--- Deleting SQS Queue: $QUEUE_NAME ---"
aws sqs delete-queue \
  --queue-url $QUEUE_URL \
  --region $REGION

echo "Queue $QUEUE_NAME deleted successfully."

echo -e "\n--- SQS message operations demonstration complete ---"
