# --- Mongo Models --- from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, Field class ExecutorPayload(BaseModel): mongo_uri: str = Field(..., description="MongoDB connection string") db_name: str = Field(..., description="Target Database Name") collection_name: str = Field(..., description="Target Collection Name") generated_query: Union[Dict, List, str] = Field(..., description="The query to execute (Find dict or Aggregation list)") user_query: Optional[str] = Field(None, description="Original user question for logging context") limited: bool = False limit_rows: int = 20 class ExecutorResponse(BaseModel): status: str count: int data: Any duration_seconds: float request_id: str