feat: add Pydantic API models with envelope helpers
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user