94 lines
1.6 KiB
JavaScript
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();
|