Expenses: GET /api/expenses/categories liefert die Kategorien
KATEGORIE_META als Dict mit id → {label, color} (preserved Order).
KATEGORIEN bleibt als Set für Validierung. Neuer Endpunkt liefert
[{id, label, color}, …] als Single Source of Truth für PWA und mobile
Clients — bisher war die Liste in JS und Python dupliziert.
Mobile-Client (banyaro-ios) holt die Liste jetzt dynamisch.
This commit is contained in:
parent
7b3041fc94
commit
9b0c286aa3
1 changed files with 21 additions and 1 deletions
|
|
@ -12,7 +12,15 @@ from auth import get_current_user
|
|||
router = APIRouter()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
KATEGORIEN = {"tierarzt", "futter", "zubehoer", "versicherung", "sitter", "sonstiges"}
|
||||
KATEGORIE_META = {
|
||||
"futter": {"label": "Futter", "color": "#f59e0b"},
|
||||
"tierarzt": {"label": "Tierarzt", "color": "#ef4444"},
|
||||
"zubehoer": {"label": "Zubehör", "color": "#8b5cf6"},
|
||||
"versicherung": {"label": "Versicherung", "color": "#3b82f6"},
|
||||
"sitter": {"label": "Sitter", "color": "#10b981"},
|
||||
"sonstiges": {"label": "Sonstiges", "color": "#6b7280"},
|
||||
}
|
||||
KATEGORIEN = set(KATEGORIE_META.keys())
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
|
@ -75,6 +83,18 @@ def _serialize(row) -> dict:
|
|||
return dict(row)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# GET /api/expenses/categories — gültige Kategorien (id + label + color)
|
||||
# Single source of truth für PWA und mobile Clients.
|
||||
# ------------------------------------------------------------------
|
||||
@router.get("/categories")
|
||||
async def list_categories():
|
||||
return [
|
||||
{"id": key, **meta}
|
||||
for key, meta in KATEGORIE_META.items()
|
||||
]
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# GET /api/expenses/summary — Monats- und Jahressummen
|
||||
# WICHTIG: Diese Route muss VOR /{id} stehen!
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue