nexus-rag / models.py
sadidft's picture
Create models.py
b14b12e verified
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class QueryRequest(BaseModel):
query: str = Field(..., min_length=1, max_length=2000)
collection: Optional[str] = Field(default="all")
top_k: Optional[int] = Field(default=5, ge=1, le=20)
use_reranking: Optional[bool] = Field(default=True)
filters: Optional[dict] = Field(default=None)
class SourceResult(BaseModel):
text: str
score: float
doc_id: str
parent_id: str
filename: str
collection: str
metadata: Optional[dict] = None
class QueryResponse(BaseModel):
success: bool
query: str
context: str
sources: list[SourceResult]
processing_time_ms: float
cached: bool
engine: str = "nexus"
class UploadResponse(BaseModel):
success: bool
doc_id: str
filename: str
file_size_mb: float
parents_created: int
children_created: int
processing_time_ms: float
collection: str
class HealthResponse(BaseModel):
status: str
timestamp: str
uptime_seconds: float
qdrant_connection: str
cache_entries: int
version: str = "1.0.0"
class StatsResponse(BaseModel):
storage: dict
documents: dict
queries: dict
top_queries: list[dict]
rate_limits: dict
class DeleteResponse(BaseModel):
success: bool
doc_id: str
parents_deleted: int
children_deleted: int
class CollectionsResponse(BaseModel):
success: bool
collections: list[str]
total: int
class ErrorResponse(BaseModel):
success: bool = False
error: str
detail: Optional[str] = None