/* jslint node: true */ 'use strict'; const userDb = require('./database.js').dbs.user; const async = require('async'); const _ = require('lodash'); exports.getGroupsForUser = getGroupsForUser; exports.addUserToGroup = addUserToGroup; exports.addUserToGroups = addUserToGroups; exports.removeUserFromGroup = removeUserFromGroup; function getGroupsForUser(userId, cb) { const sql = `SELECT group_name FROM user_group_member WHERE user_id=?;`; const groups = []; userDb.each( sql, [userId], (err, row) => { if (err) { return cb(err); } groups.push(row.group_name); }, () => { return cb(null, groups); } ); } function addUserToGroup(userId, groupName, transOrDb, cb) { if (!_.isFunction(cb) && _.isFunction(transOrDb)) { cb = transOrDb; transOrDb = userDb; } transOrDb.run( `REPLACE INTO user_group_member (group_name, user_id) VALUES(?, ?);`, [groupName, userId], err => { return cb(err); } ); } function addUserToGroups(userId, groups, transOrDb, cb) { async.each( groups, (groupName, nextGroupName) => { return addUserToGroup(userId, groupName, transOrDb, nextGroupName); }, err => { return cb(err); } ); } function removeUserFromGroup(userId, groupName, cb) { userDb.run( `DELETE FROM user_group_member WHERE group_name=? AND user_id=?;`, [groupName, userId], err => { return cb(err); } ); }