"""Message deduplication service"""
from datetime import datetime, timedelta
from typing import Dict
from app.core.logging import get_logger

logger = get_logger(__name__)


class MessageDeduplicator:
    """Prevent duplicate message processing"""
    
    def __init__(self, ttl: int = 300):
        self.ttl = ttl
        self.processed: Dict[str, datetime] = {}
    
    def is_duplicate(self, message_id: str) -> bool:
        """Check if message was already processed"""
        now = datetime.now()
        
        # Clean expired entries
        self.processed = {
            mid: ts for mid, ts in self.processed.items()
            if now - ts < timedelta(seconds=self.ttl)
        }
        
        # Check if processed
        if message_id in self.processed:
            logger.debug(f"Duplicate message detected: {message_id}")
            return True
        
        # Mark as processed
        self.processed[message_id] = now
        return False
    
    def mark_processed(self, message_id: str) -> None:
        """Explicitly mark message as processed"""
        self.processed[message_id] = datetime.now()
    
    def clear(self) -> None:
        """Clear all processed messages"""
        self.processed.clear()
        logger.info("Deduplicator cleared")
