Files
PantryHub/repositories/CategoryRepository.js

94 lines
1.6 KiB
JavaScript

const db = require("../config/database");
class CategoryRepository {
getAll(householdId) {
return db.prepare(`
SELECT categories.*, COUNT(products.id) AS product_count
FROM categories
LEFT JOIN products ON products.category_id = categories.id
AND products.household_id = categories.household_id
WHERE categories.household_id = ?
GROUP BY categories.id
ORDER BY categories.name
`).all(householdId);
}
findById(id, householdId) {
return db.prepare(`
SELECT * FROM categories WHERE id = ? AND household_id = ?
`).get(id, householdId);
}
create(data) {
return db.prepare(`
INSERT INTO categories (name, icon, household_id)
VALUES (?, ?, ?)
`).run(data.name, data.icon || null, data.household_id);
}
update(id, householdId, data) {
return db.prepare(`
UPDATE categories
SET name = ?, icon = ?
WHERE id = ? AND household_id = ?
`).run(data.name, data.icon || null, id, householdId);
}
hasProducts(id, householdId) {
return db.prepare(`
SELECT 1 FROM products WHERE category_id = ? AND household_id = ? LIMIT 1
`).get(id, householdId) !== undefined;
}
delete(id, householdId) {
return db.prepare(`
DELETE FROM categories WHERE id = ? AND household_id = ?
`).run(id, householdId);
}
}
module.exports = new CategoryRepository();