From 8080d7cda1b3ea55f6c90828cdb3c86c31e16e00 Mon Sep 17 00:00:00 2001 From: rene Date: Thu, 14 May 2026 12:48:05 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20no=20such=20column=20d.user=5Fid=20?= =?UTF-8?q?=E2=80=94=20diary=20hat=20kein=20user=5Fid,=20Dog-Check=20reich?= =?UTF-8?q?t=20(SW=20by-v939)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/main.py | 2 +- backend/routes/dogs.py | 10 +++++----- backend/static/js/app.js | 2 +- backend/static/sw.js | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/main.py b/backend/main.py index 4d66590..bed3d6f 100644 --- a/backend/main.py +++ b/backend/main.py @@ -406,7 +406,7 @@ async def serve_media(path: str, request: _Request): raise _HE(404, "Nicht gefunden.") return _media_response(filepath) -APP_VER = "938" # muss mit APP_VER in app.js übereinstimmen +APP_VER = "939" # muss mit APP_VER in app.js übereinstimmen @app.get("/.well-known/assetlinks.json") async def assetlinks(): diff --git a/backend/routes/dogs.py b/backend/routes/dogs.py index 7ec90f5..832e777 100644 --- a/backend/routes/dogs.py +++ b/backend/routes/dogs.py @@ -191,24 +191,24 @@ async def get_welcome_dashboard(dog_id: int, user=Depends(get_current_user)): raise HTTPException(404, "Hund nicht gefunden.") # Hintergrundfoto: Querformat-Bilder bevorzugt, tagesweise rotierend - # user_id-Filter als zweite Sicherungsebene (dog_id-Ownership bereits oben geprüft) + # Ownership bereits durch Dog-Check oben gesichert (dog gehört user) photos = conn.execute( """SELECT dm.url FROM diary_media dm JOIN diary d ON d.id = dm.diary_id - WHERE d.dog_id=? AND d.user_id=? AND dm.media_type='image' + WHERE d.dog_id=? AND dm.media_type='image' AND dm.img_width IS NOT NULL AND dm.img_width > dm.img_height ORDER BY d.datum DESC, d.id DESC, dm.id ASC""", - (dog_id, user["id"]) + (dog_id,) ).fetchall() # Fallback: Bilder ohne Dimensionsdaten (vor dem Backfill hochgeladen) if not photos: photos = conn.execute( """SELECT dm.url FROM diary_media dm JOIN diary d ON d.id = dm.diary_id - WHERE d.dog_id=? AND d.user_id=? AND dm.media_type='image' + WHERE d.dog_id=? AND dm.media_type='image' AND dm.img_width IS NULL ORDER BY d.datum DESC, d.id DESC, dm.id ASC""", - (dog_id, user["id"]) + (dog_id,) ).fetchall() random_photo = None if photos: diff --git a/backend/static/js/app.js b/backend/static/js/app.js index f7dde7c..cd79577 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '938'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '939'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.5.1'; // ← semantische Version, wird bei make release gesetzt const IS_STAGING = location.hostname === 'staging.banyaro.app'; // Cache-Bust-Parameter nach Update-Reload sofort entfernen diff --git a/backend/static/sw.js b/backend/static/sw.js index 5be62bd..cf6d85e 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v938'; +const CACHE_VERSION = 'by-v939'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache