Files
whowhat/backend/src/utils/households.js
Kacper ae3b435b51 v1.0.3
add multi lang
2026-07-11 20:03:15 +02:00

52 lines
1.4 KiB
JavaScript

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: 'household_not_selected' });
}
if (!isMember(householdId, req.userId)) {
return res.status(403).json({ error: 'not_a_household_member' });
}
const household = getHouseholdById(householdId);
if (!household) {
return res.status(404).json({ error: 'household_not_found' });
}
req.household = household;
next();
}
module.exports = { getHouseholdsForUser, getHouseholdById, isMember, getMembers, requireHousehold };