This commit is contained in:
2026-07-10 22:57:16 +02:00
commit c4a692b5d2
66 changed files with 4666 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
const { db } = require('../db/db');
function getHouseholdsForUser(userId) {
return db
.prepare(
`SELECT h.* FROM households h
JOIN household_members hm ON hm.household_id = h.id
WHERE hm.user_id = ?
ORDER BY h.created_at`
)
.all(userId);
}
function getHouseholdById(householdId) {
return db.prepare('SELECT * FROM households WHERE id = ?').get(householdId);
}
function isMember(householdId, userId) {
return !!db
.prepare('SELECT 1 FROM household_members WHERE household_id = ? AND user_id = ?')
.get(householdId, userId);
}
function getMembers(householdId) {
return db
.prepare(
`SELECT u.id, u.name, u.email, u.avatar_emoji FROM users u
JOIN household_members hm ON hm.user_id = u.id
WHERE hm.household_id = ?
ORDER BY hm.joined_at`
)
.all(householdId);
}
function requireHousehold(req, res, next) {
const householdId = req.headers['x-household-id'];
if (!householdId) {
return res.status(400).json({ error: 'Nie wybrano gospodarstwa (brak nagłówka X-Household-Id)' });
}
if (!isMember(householdId, req.userId)) {
return res.status(403).json({ error: 'Nie jesteś członkiem tego gospodarstwa' });
}
const household = getHouseholdById(householdId);
if (!household) {
return res.status(404).json({ error: 'Gospodarstwo nie znalezione' });
}
req.household = household;
next();
}
module.exports = { getHouseholdsForUser, getHouseholdById, isMember, getMembers, requireHousehold };