vyvoj-dash

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í.