feat: Stores (Geschäfte) für Einkaufslisten (closes #52) #54
No reviewers
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp!54
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/stores-for-shopping-lists"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Schließt #52.
Was ändert sich
Neue Entity:
Store(Geschäft)Eigene User-owned Entity mit Name + erweiterb-arem JSONB-
details-Feld:Neue Eigenschaften (z.B.
openingHours,category) werden nur instoreDetailsSchemaergänzt — keine DB-Migration nötig.Backend
0004_volatile_odin.sql:stores-Tabelle +lists.store_id(nullable FK,ON DELETE SET NULL— löscht man ein Geschäft, bleibt die Liste erhalten undstoreIdwird aufnullgesetzt).GET/POST /stores,PATCH/DELETE /stores/:id. Ownership-Check identisch zu ListsModule (ownerSub).storeIdbeicreate/updatedurchreichen + Ownership-Prüfung (Store muss dem gleichen User gehören wie die Liste).shared-types
stores.tsneu:storeDetailsSchema,Store,CreateStoreDto,UpdateStoreDto.lists.ts:listSchema/createListDtoSchema/updateListDtoSchemaumstoreId?: string | nullerweitert.api-client
StoresResource(list/create/update/delete) neu.ApiClient.storesergänzt.feature-lists
StoresScreen: CRUD-Screen für Geschäfte — Name + Details (address/url/phone/notes) inline bearbeiten.ListsOverviewScreen: Store-Picker im Create-Formular (nur beitype === 'shopping'); Store-Name als Subtitle im Listeneintrag;onManageStores?-Prop.stores-hooks.ts:useStores,useCreateStore,useUpdateStore,useDeleteStore.feature-shopping-list
ShoppingList.storeId?undUpdateShoppingListDto.storeIdergänzt.toShoppingList()mapptstoreIdautomatisch durch (bestehender Spread).ShoppingListScreen:StoreBadgeim Header — zeigt Geschäft, erlaubt Wechsel und Zuweisung.adapters.test.ts:storeId-Fälle ergänzt, alle 16 Tests grün.Web + Mobile
/stores-Route + „Stores"-Link in der Navbar +onManageStoresin ListsRoute.app/stores/index.tsx+ Link auf Home-Screen.Test plan
pnpm -r typecheck— alle 10 Workspaces grünpnpm --filter feature-shopping-list test— 16 Tests grün/stores) — name + address + url befüllenstoreId: null)🤖 Generated with Claude Code
689c27065a8613a6c642