from .base_agent import BaseAgent
from ..aws_connector import AWSConnector

class SQSAgent(BaseAgent):
    """
    An agent specialized in handling AWS Simple Queue Service (SQS) tasks.
    """

    def execute(self, command: str, **kwargs):
        """
        Executes a given command related to SQS.
        """
        if command == 'smart_create_queue':
            queue_name = kwargs.get('queue_name', '')
            region = kwargs.get('region', '')
            print(f"You are about to smart-create an SQS queue '{queue_name}' in {region}.")
            confirm = input("Are you sure you want to proceed? (yes/no): ")
            if confirm.lower() == 'yes':
                return self._smart_create_queue(**kwargs)
            else:
                return {"status": "cancelled", "message": "Smart Create SQS queue command cancelled by user."}
        else:
            raise NotImplementedError(f"Command '{command}' is not supported by SQSAgent.")

    def _smart_create_queue(self, region: str, queue_name: str, message_retention_period: int = 345600, visibility_timeout: int = 30):
        """
        Creates a standard SQS queue with basic attributes.
        """
        print(f"SQSAgent: Smart creating queue '{queue_name}' in region {region}...")
        try:
            sqs_client = AWSConnector.get_client('sqs', region_name=region)

            response = sqs_client.create_queue(
                QueueName=queue_name,
                Attributes={
                    'MessageRetentionPeriod': str(message_retention_period), # 4 days
                    'VisibilityTimeout': str(visibility_timeout) # 30 seconds
                }
            )
            queue_url = response['QueueUrl']

            return {"status": "success", "message": f"SQS queue '{queue_name}' created successfully. URL: {queue_url}", "queue_url": queue_url}
        except Exception as e:
            print(f"Error during smart SQS queue creation: {e}")
            return {"status": "error", "message": str(e)}
