import { db, id, now } from '../db.js'; import { camelGroup } from './mappers.js'; export function listGroups() { return db.prepare(` SELECT g.*, COUNT(ug.user_id) AS member_count FROM groups g LEFT JOIN user_groups ug ON ug.group_id = g.id GROUP BY g.id ORDER BY g.name `).all().map((group) => ({ ...camelGroup(group), memberCount: group.member_count })); } export function createGroup(payload) { const groupId = id('grp'); db.prepare('INSERT INTO groups (id, name, description, created_at) VALUES (?, ?, ?, ?)').run( groupId, payload.name, payload.description || '', now() ); const stmt = db.prepare('INSERT OR IGNORE INTO user_groups (user_id, group_id) VALUES (?, ?)'); for (const userId of payload.userIds) stmt.run(userId, groupId); return camelGroup(db.prepare('SELECT * FROM groups WHERE id = ?').get(groupId)); }