from typing import Dict, Any
from ...core.kafka_client import kafka_client
from ...core.config import settings
import logging

logger = logging.getLogger(__name__)

class SearchTaskProducer:
    
    def __init__(self):
        self.topic_mapping = {
            "google": settings.GOOGLE_QUEUE_TOPIC,
            "youtube": settings.YOUTUBE_QUEUE_TOPIC,
            "rss": settings.RSS_QUEUE_TOPIC,
            "bing": settings.BING_QUEUE_TOPIC,
            "duckduckgo": settings.DUCKDUCKGO_QUEUE_TOPIC,
            "reddit": settings.REDDIT_QUEUE_TOPIC,
            "instagram": settings.SOCIAL_MEDIA_QUEUE_TOPIC,
            "linkedin": settings.SOCIAL_MEDIA_QUEUE_TOPIC,
            "twitter": settings.SOCIAL_MEDIA_QUEUE_TOPIC,
            "facebook": settings.SOCIAL_MEDIA_QUEUE_TOPIC,
        }
    
    async def send_search_task(self, platform: str, task_data: Dict[str, Any]):
        """Send search task to appropriate queue"""
        try:
            topic = self.topic_mapping.get(platform.lower())
            if not topic:
                raise ValueError(f"Unknown platform: {platform}")
            
            await kafka_client.send_message(
                topic=topic,
                message=task_data,
                key=task_data.get("id")
            )
            
            logger.info(f"Search task sent to {platform} queue: {task_data.get('id')}")
            
        except Exception as e:
            logger.error(f"Error sending search task to {platform}: {e}")
            raise

search_task_producer = SearchTaskProducer()
