# models/schemas.py

from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from datetime import datetime

# --- Core AI Schemas ---

class QueryRequest(BaseModel):
    """Schema for the simple, one-off /ask-ai endpoint."""
    question: str

class AIResponse(BaseModel):
    """Standard response schema for the simple /ask-ai endpoint."""
    answer: str
    query_type: str
    company_id: Optional[str] = None
    execution_time_ms: float
    from_cache: bool = False
    download_token: Optional[str] = None
    download_filename: Optional[str] = None
    download_url: Optional[str] = None


# --- NEW: Conversation Schemas ---

class ConversationCreateRequest(BaseModel):
    """Request to create a new conversation, optionally with a title."""
    title: Optional[str] = None

class ConversationResponse(BaseModel):
    """Represents a single conversation in a list."""
    id: int
    title: str
    company_id: int
    created_at: datetime
    updated_at: datetime

    class Config:
        orm_mode = True

class MessagePair(BaseModel):
    """Represents a single question-and-answer pair in a conversation."""
    id: int
    question: str
    answer: str
    metadata: Optional[Dict[str, Any]]
    created_at: datetime

    class Config:
        orm_mode = True

class ConversationHistoryResponse(BaseModel):
    """Full history of a conversation, including all messages."""
    id: int
    title: str
    messages: List[MessagePair]

class AskConversationRequest(BaseModel):
    """Schema for asking a new question within an existing conversation."""
    question: str


# --- Health Check Schema ---

class HealthResponse(BaseModel):
    """Schema for the health check endpoint."""
    status: str
    service: str
    version: str