import os
import json
import boto3
import logging

logger = logging.getLogger()
logger.setLevel(getattr(logging, os.environ.get("LOG_LEVEL", "INFO").upper()))

class Sqs:
    def __init__(self, queue_url=os.environ['ASSETS_TO_ASSOCIATE_QUEUE_URL'], batch_size=int(os.environ.get("BATCH_SIZE", 10)), aws_region=os.environ.get("AWS_REGION")):
        self.queue_url =queue_url
        self.batch_size =batch_size
        self.aws_region = aws_region
        self.sqs_client = boto3.client('sqs', region_name=self.aws_region)

    def send_messages(self, messages):
        for i in range(0, len(messages), self.batch_size):
            messages_chunk = list(messages)[i:i + self.batch_size]   
            entries = [{'Id': str(idx), 'MessageBody': json.dumps(msg), 'MessageGroupId': 'lifecycle_events'} for idx,msg in enumerate(messages_chunk)] 

            response = self.sqs_client.send_message_batch(
                QueueUrl=self.queue_url,
                Entries=entries
            )

            logger.info(f"Successfully {response}")