chorus/backend/app/schemas.py
pyr0ball a90c3fc172 feat(backend): add FastAPI routes for items
Wraps the Task 2 CRUD layer in a FastAPI app (schemas.py + main.py) with
POST/GET/GET-by-id/PATCH routes for items, matching the exact paths and
status codes the Discord bot's HTTP client will depend on.

Also fixes a latent bug in db.get_engine: sqlite:///:memory: without a
StaticPool gives each new session a fresh, empty database, which broke
as soon as more than one session shared an engine (the API's per-request
session pattern). Tasks 1-2 never hit this because their tests used a
single session per engine.
2026-07-13 13:43:09 -07:00

35 lines
798 B
Python

from datetime import datetime, date
from pydantic import BaseModel, ConfigDict
class ItemCreate(BaseModel):
modality: str
raw_content: str
captured_at: datetime
discord_message_id: str | None = None
sender_id: str | None = None
class ItemUpdate(BaseModel):
sender_id: str | None = None
type: str | None = None
stage: str | None = None
notes: str | None = None
follow_up_date: date | None = None
class ItemOut(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
modality: str
raw_content: str
captured_at: datetime
sender_id: str | None
type: str | None
stage: str
notes: str | None
follow_up_date: date | None
discord_message_id: str | None
created_at: datetime
updated_at: datetime