Files
PantryHub/repositories/FavoriteRepository.js

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();