feat: add Pydantic API models with envelope helpers

This commit is contained in:
2026-05-25 18:42:04 +02:00
parent f3281883be
commit ffbfecffc5
+59
View File
@@ -0,0 +1,59 @@
from pydantic import BaseModel, field_validator
from typing import Any
class ApiError(BaseModel):
code: str
message: str
class ApiResponse(BaseModel):
success: bool
data: Any | None = None
error: ApiError | None = None
def ok(data: Any) -> dict:
return {"success": True, "data": data, "error": None}
def fail(code: str, message: str) -> dict:
return {
"success": False,
"data": None,
"error": {"code": code, "message": message},
}
def _validate_model(v: str | None) -> str | None:
if v is not None and not v.startswith("claude-"):
raise ValueError("Model must start with 'claude-' or be null")
return v
class TopicCreate(BaseModel):
name: str
system_prompt: str
summary: str = ""
model: str | None = None
validate_model = field_validator("model")(_validate_model)
class TopicUpdate(BaseModel):
name: str | None = None
system_prompt: str | None = None
summary: str | None = None
model: str | None = None
validate_model = field_validator("model")(_validate_model)
class RequestCreate(BaseModel):
prompt: str
topic_id: str
session_id: str | None = None
model: str | None = None
summarize: bool = False
validate_model = field_validator("model")(_validate_model)