from fastapi import Depends
from app.core.database import get_database
# from app.repos.mongodb_repo import NewsRepository
from typing import Dict, Any
from pydantic import BaseModel
from datetime import datetime
from pydantic import HttpUrl
from app.core.config import settings


# def get_search_repository():
#     return NewsRepository(mongo_url=settings.MONGODB_URL, db_name=settings.DATABASE_NAME)


def pydantic_to_mongo_dict(model: BaseModel) -> Dict[str, Any]:
    """Convert Pydantic model to MongoDB-compatible dict"""
    data = model.dict()
    
    # Convert special types to MongoDB-compatible formats
    for key, value in data.items():
        if isinstance(value, datetime):
            data[key] = value.isoformat()
        elif isinstance(value, str) and value.startswith("http"):
            data[key] = str(value)
        elif isinstance(value, list):
            # Handle lists of nested models
            new_list = []
            for item in value:
                if isinstance(item, BaseModel):
                    new_list.append(pydantic_to_mongo_dict(item))
                elif isinstance(value, str) and value.startswith("http"):
                    new_list.append(str(item))
                else:
                    new_list.append(item)
            data[key] = new_list
        elif isinstance(value, dict):
            # Handle nested dictionaries
            data[key] = {k: str(v) if isinstance(v, str) else v for k, v in value.items()}
    
    return data

