fix natural sorting

This commit is contained in:
jomo 2022-08-06 02:38:47 +02:00
parent c2133771eb
commit 93d6063c52
2 changed files with 5 additions and 1 deletions

View file

@ -3,6 +3,7 @@ from fastapi.staticfiles import StaticFiles
from sqlalchemy import event
from sqlalchemy.orm import Session
from sqlalchemy.engine import Engine
import re
import crud
from database import SessionLocal, engine
@ -29,7 +30,10 @@ def _set_sqlite_pragma(conn, _):
@app.get("/api/items", response_model=dict[str, Item])
async def list_items(db: Session = Depends(get_db)):
# sort by type, id (natural)
natsort = lambda s: (s.type, [int(t) if t.isdigit() else t.lower() for t in re.split('(\d+)', s.id)])
items = crud.get_items(db)
items = sorted(items, key=natsort)
return {i.id:i for i in items}