fix(inkop+recept): delvis-kop, radera-vara, bort med plattformen-taggen
- Inkopslista /complete: kopte (markerade) varor laggs i lagret OCH tas bort ur listan; OMARKERADE varor blir kvar (handla i flera butiker). Listan arkiveras forst nar den ar tom. Tidigare markerades HELA listan completed sa allt forsvann. - Ny radera-knapp (x) per vara med bekraftelse - ta bort nagot man angrat utan att kopa det (DELETE-endpointen fanns redan). - Bort med '✓ plattformen'-taggen pa recept + bladdra (satt pa nastan alla editorial-recept och sag efterblivet ut). Namn visas fortfarande bara for anvandarskapade recept (creatorDisplayName). Typecheck: api + mobil gron.
This commit is contained in:
@@ -258,10 +258,29 @@ export async function shoppingRoutes(app: FastifyInstance) {
|
||||
}
|
||||
}
|
||||
|
||||
// Ta bort de köpta (markerade) varorna – de ligger nu i lagret. OMARKERADE
|
||||
// varor blir kvar i listan (man kan handla i flera butiker och radera själv).
|
||||
await app.db
|
||||
.update(schema.shoppingLists)
|
||||
.set({ status: "completed", updatedAt: new Date() })
|
||||
.where(eq(schema.shoppingLists.id, id));
|
||||
.delete(schema.shoppingListItems)
|
||||
.where(
|
||||
and(
|
||||
eq(schema.shoppingListItems.shoppingListId, id),
|
||||
eq(schema.shoppingListItems.checked, true),
|
||||
),
|
||||
);
|
||||
|
||||
// Markera hela listan som klar först när den är tömd; annars aktiv för fortsatt handling.
|
||||
const remainingItems = await app.db
|
||||
.select({ id: schema.shoppingListItems.id })
|
||||
.from(schema.shoppingListItems)
|
||||
.where(eq(schema.shoppingListItems.shoppingListId, id));
|
||||
const remaining = remainingItems.length;
|
||||
if (remaining === 0) {
|
||||
await app.db
|
||||
.update(schema.shoppingLists)
|
||||
.set({ status: "completed", updatedAt: new Date() })
|
||||
.where(eq(schema.shoppingLists.id, id));
|
||||
}
|
||||
|
||||
await emitEvent(app.db, {
|
||||
type: "SHOPPING_COMPLETED",
|
||||
@@ -270,7 +289,7 @@ export async function shoppingRoutes(app: FastifyInstance) {
|
||||
householdId: list.householdId,
|
||||
correlationId: req.correlationId,
|
||||
});
|
||||
return { ok: true, itemsAddedToInventory: added };
|
||||
return { ok: true, itemsAddedToInventory: added, remaining };
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user