diff --git a/app/navigator_routes.py b/app/navigator_routes.py index e86ab66..6a5f84d 100644 --- a/app/navigator_routes.py +++ b/app/navigator_routes.py @@ -81,6 +81,23 @@ async def rack_detail(rack_id: int, ident=Depends(require_token), db=Depends(get return {"ok": True, "rack": dict(rack), "crates": crates, "levels": levels} +class RackEditIn(BaseModel): + name: str | None = None + + +@router.post("/rack/{rack_id}") +async def rack_edit(rack_id: int, body: RackEditIn, ident=Depends(require_token), db=Depends(get_db)): + fields = {k: v for k, v in body.model_dump().items() if v is not None} + if not fields: + return {"ok": True, "unchanged": True} + sets = ", ".join(f"{k} = :{k}" for k in fields) + ", updated_at = now()" + r = await db.execute(text(f"UPDATE virtual_rack SET {sets} WHERE id = :i"), {**fields, "i": rack_id}) + await db.commit() + if not r.rowcount: + raise HTTPException(404, "rack not found") + return {"ok": True} + + @router.get("/crate/{crate_id}") async def crate_contents(crate_id: int, ident=Depends(require_token), db=Depends(get_db)): """A crate's records, in slot order โ€” the Crate Contents list.""" diff --git a/site/search.html b/site/search.html index 64b67a5..b44f612 100644 --- a/site/search.html +++ b/site/search.html @@ -100,6 +100,8 @@ Store map + +