Files
PantryHub/repositories/CategoryRepository.js
T
2026-08-09 19:03:26 +02:00

91 lines
1.2 KiB
JavaScript

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