Favorieten toegevoegd aan de navigatiebalk en sidebar.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
const db = require("../config/database");
|
||||
|
||||
class FavoriteRepository {
|
||||
getByHousehold(householdId) {
|
||||
return db.prepare(`
|
||||
SELECT products.id,
|
||||
products.name,
|
||||
products.category_id,
|
||||
products.barcode,
|
||||
categories.name AS category_name,
|
||||
categories.icon AS category_icon
|
||||
FROM product_favorites
|
||||
JOIN products ON products.id = product_favorites.product_id
|
||||
LEFT JOIN categories ON categories.id = products.category_id
|
||||
WHERE product_favorites.household_id = ?
|
||||
AND products.household_id = ?
|
||||
ORDER BY products.name ASC
|
||||
`).all(householdId, householdId);
|
||||
}
|
||||
|
||||
getIdsByHousehold(householdId) {
|
||||
return new Set(
|
||||
db.prepare(`
|
||||
SELECT product_favorites.product_id
|
||||
FROM product_favorites
|
||||
JOIN products ON products.id = product_favorites.product_id
|
||||
WHERE product_favorites.household_id = ?
|
||||
AND products.household_id = ?
|
||||
`).all(householdId, householdId).map(row => row.product_id)
|
||||
);
|
||||
}
|
||||
|
||||
find(householdId, productId) {
|
||||
return db.prepare(`
|
||||
SELECT * FROM product_favorites
|
||||
WHERE household_id = ? AND product_id = ?
|
||||
`).get(householdId, productId);
|
||||
}
|
||||
|
||||
add(householdId, productId) {
|
||||
return db.prepare(`
|
||||
INSERT OR IGNORE INTO product_favorites (household_id, product_id)
|
||||
VALUES (?, ?)
|
||||
`).run(householdId, productId);
|
||||
}
|
||||
|
||||
remove(householdId, productId) {
|
||||
return db.prepare(`
|
||||
DELETE FROM product_favorites
|
||||
WHERE household_id = ? AND product_id = ?
|
||||
`).run(householdId, productId);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new FavoriteRepository();
|
||||
@@ -72,6 +72,37 @@ class ShoppingListRepository {
|
||||
`).run(listId);
|
||||
}
|
||||
|
||||
clearItems(listId) {
|
||||
return db.prepare(`
|
||||
DELETE FROM shopping_list_items
|
||||
WHERE list_id = ?
|
||||
`).run(listId);
|
||||
}
|
||||
|
||||
addItems(listId, items) {
|
||||
if (!items.length) return 0;
|
||||
|
||||
const insert = db.prepare(`
|
||||
INSERT INTO shopping_list_items (list_id, product_id, amount, checked, sort_order)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`);
|
||||
|
||||
const transaction = db.transaction(() => {
|
||||
for (const item of items) {
|
||||
insert.run(
|
||||
listId,
|
||||
item.product_id,
|
||||
item.amount ?? 1,
|
||||
item.checked ?? 0,
|
||||
item.sort_order ?? 0
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
transaction();
|
||||
return items.length;
|
||||
}
|
||||
|
||||
deleteItem(listId, itemId) {
|
||||
return db.prepare(`
|
||||
DELETE FROM shopping_list_items WHERE id = ? AND list_id = ?
|
||||
|
||||
Reference in New Issue
Block a user