56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
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();
|