Feature: Gasthund-Zugang für Sitter
- sitting_subscriptions Tabelle (dog_id, owner_id, sitter_id, valid_until) - POST/DELETE/GET /api/sitting-access — Zugang gewähren/widerrufen/auflisten - GET /api/dogs gibt Gasthunde zurück (is_guest=True, sitting_until, owner_name) - Diary POST erlaubt Sitter-Schreibzugang; PATCH/DELETE nur für Besitzer - Dog-Switcher: GAST-Badge bei fremden Hunden - Dog-Profil: Sitter-Zugang-Sektion (nur für Besitzer), Freund auswählen + Datum - Diary Detail-View: Bearbeiten-Button für Gasthunde ausgeblendet
This commit is contained in:
parent
eef787cc72
commit
289158b2cd
10 changed files with 327 additions and 18 deletions
|
|
@ -50,7 +50,30 @@ async def list_dogs(user=Depends(get_current_user)):
|
|||
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]
|
||||
guest_rows = conn.execute("""
|
||||
SELECT d.*, ss.id AS sub_id, ss.valid_until AS sitting_until,
|
||||
u.name AS owner_name, NULL AS shared_by, NULL AS share_role
|
||||
FROM sitting_subscriptions ss
|
||||
JOIN dogs d ON d.id = ss.dog_id
|
||||
JOIN users u ON u.id = ss.owner_id
|
||||
WHERE ss.sitter_id = ?
|
||||
AND ss.valid_until >= date('now')
|
||||
""", (user["id"],)).fetchall()
|
||||
|
||||
result = []
|
||||
for r in own:
|
||||
d = dict(r)
|
||||
d["is_guest"] = False
|
||||
result.append(d)
|
||||
for r in shared:
|
||||
d = dict(r)
|
||||
d["is_guest"] = False
|
||||
result.append(d)
|
||||
for r in guest_rows:
|
||||
d = dict(r)
|
||||
d["is_guest"] = True
|
||||
result.append(d)
|
||||
return result
|
||||
|
||||
|
||||
@router.post("")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue