76 lines
1.3 KiB
JavaScript
76 lines
1.3 KiB
JavaScript
const db = require("../config/database");
|
|
|
|
|
|
class HouseholdService {
|
|
|
|
findByInviteCode(code) {
|
|
const match = /^HOUSEHOLD_(\d+)$/.exec((code || "").trim().toUpperCase());
|
|
if (!match) return null;
|
|
|
|
return db.prepare(
|
|
"SELECT id FROM households WHERE id = ?"
|
|
).get(Number.parseInt(match[1], 10));
|
|
}
|
|
|
|
|
|
addMember(householdId, userId) {
|
|
return db.prepare(`
|
|
INSERT INTO household_members (household_id, user_id, role)
|
|
VALUES (?, ?, 'MEMBER')
|
|
`).run(householdId, userId);
|
|
}
|
|
|
|
|
|
createForUser(userId, name) {
|
|
|
|
|
|
const create =
|
|
db.transaction(() => {
|
|
|
|
|
|
const household =
|
|
db.prepare(`
|
|
|
|
INSERT INTO households
|
|
(name)
|
|
|
|
VALUES (?)
|
|
|
|
`).run(name);
|
|
|
|
|
|
|
|
db.prepare(`
|
|
|
|
INSERT INTO household_members
|
|
|
|
(
|
|
household_id,
|
|
user_id,
|
|
role
|
|
)
|
|
|
|
VALUES (?, ?, ?)
|
|
|
|
`).run(
|
|
household.lastInsertRowid,
|
|
userId,
|
|
"OWNER"
|
|
);
|
|
|
|
|
|
return household.lastInsertRowid;
|
|
|
|
|
|
});
|
|
|
|
|
|
return create();
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
module.exports = new HouseholdService(); |