Run 047: Backend Favorites
Dokončeno
user_favorite tabulka + 3 routes + ?include=isFavorited flag
Od: 2026-05-07 Do: 2026-05-07 Vytvořeno 7. 5. 2026
5/5
100%
Tasky v runu
Otevřít kanban →| ID | Název | Status | Priorita | Vytvořeno |
|---|---|---|---|---|
| 40 | Tabulka oblíbených spotů v databázi Vytvořena migration 0007 + Drizzle schema pro user_favorite tabulku — relation many-to-many (user, spot) s unique(userId, spotId), cascade delete + 2 indexy pro listFavorites a include batch lookup. Před prvním deployem fronend musí proběhnout 'wrangler d1 migrations apply hammocknook-prod --remote'. | Hotovo | Střední | 7. 5. 2026 |
| 41 | Datové modely pro oblíbené (Effect Schema) Přidán Effect Schema FavoriteResponse (id, userId, spotId, createdAt) v libs/api-models/src/favorite.ts + isFavorited optional Boolean field na SpotResponse. Reuse SpotListResponse pro GET /api/favorites — žádný extra DTO. | Hotovo | Střední | 7. 5. 2026 |
| 42 | API rozhraní pro oblíbené (3 endpointy) FavoritesApi HttpApiGroup s 3 endpointy v libs/api-models/src/api/favorites.ts: POST/DELETE /api/spots/:spotId/favorite + GET /api/favorites (auth, vrací plný SpotListResponse). Wired do HammocknookApi. | Hotovo | Střední | 7. 5. 2026 |
| 43 | Implementace handlerů pro oblíbené Handlery v api/src/api-groups/favorites.ts: idempotent POST přes onConflictDoNothing+SELECT fallback, idempotent DELETE bez existence check, listFavorites s INNER JOIN spot + cursor pagination + privacy filter (ADMIN vidí vše, jinak isPrivate=false OR createdBy=me). | Hotovo | Střední | 7. 5. 2026 |
| 44 | Příznak ?include=isFavorited v list + detail spotu ?include=isFavorited query flag: listSpots batch lookup přes inArray() na page IDs (1 query pro celou stránku), getSpot single SELECT row check. Pro neauth user se flag tiše ignoruje, isFavorited se neobjeví v response. | Hotovo | Střední | 7. 5. 2026 |
Screenshoty
0
Žádné screenshoty. Nahraj první.