# app/models/schemas.py
from pydantic import BaseModel, Field
from typing import Literal, Optional

class ChatRequest(BaseModel):
    message:    str = Field(..., min_length=1, max_length=500)
    session_id: str = Field(default="default", max_length=100)
    username:   Optional[str] = None

class ChatResponse(BaseModel):
    reply:      str
    source:     Literal["llm", "validator", "error"]
    session_id: str
    client:     str

class ResetRequest(BaseModel):
    session_id: str = "default"


class CreateKeyRequest(BaseModel):
    client_name: str = Field(..., min_length=1, max_length=100)

class CreateKeyResponse(BaseModel):
    api_key:     str
    client_name: str
    message:     str

class KeyInfo(BaseModel):
    key:         str
    client_name: str
    active:      int
    created_at:  str

class HealthResponse(BaseModel):
    status: str
    ollama: str
    model:  str
    models: list[str] = []
