Sprint 15: Suche, Ausweis, Teilen, Widget
- Volltext-Suche im Tagebuch (LIKE über Titel/Text/Tags, Debounce 350ms)
- Digitaler Heimtierausweis als druckbare HTML-Seite (/ausweis/{dog_id})
Enthält Impfungen, Medikamente, Allergien, Tierärzte, Chip-Nr.
- Hund teilen: Einladungslink-System (dog_shares-Tabelle, /teilen/{token})
Geteilte Hunde erscheinen in der Hundeliste, Tagebuch/Gesundheit lesbar
- Widget-Seite /#widget: zufälliges Tagebuchbild + nächste Erinnerung
Als PWA-Shortcut im Manifest verankert
- SW-Cache by-v144, APP_VER 117
This commit is contained in:
parent
d5f09cd16b
commit
34f29f9d0a
16 changed files with 917 additions and 35 deletions
|
|
@ -38,10 +38,19 @@ class DogUpdate(BaseModel):
|
|||
@router.get("")
|
||||
async def list_dogs(user=Depends(get_current_user)):
|
||||
with db() as conn:
|
||||
rows = conn.execute(
|
||||
"SELECT * FROM dogs WHERE user_id=? ORDER BY id", (user["id"],)
|
||||
own = conn.execute(
|
||||
"SELECT *, NULL AS shared_by, NULL AS share_role FROM dogs WHERE user_id=? ORDER BY id",
|
||||
(user["id"],)
|
||||
).fetchall()
|
||||
return [dict(r) for r in rows]
|
||||
shared = conn.execute(
|
||||
"""SELECT d.*, u.name AS shared_by, ds.role AS share_role
|
||||
FROM dog_shares ds
|
||||
JOIN dogs d ON d.id = ds.dog_id
|
||||
JOIN users u ON u.id = ds.owner_id
|
||||
WHERE ds.shared_with_id = ? AND ds.accepted_at IS NOT NULL""",
|
||||
(user["id"],)
|
||||
).fetchall()
|
||||
return [dict(r) for r in own] + [dict(r) for r in shared]
|
||||
|
||||
|
||||
@router.post("")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue