diff --git a/migrations/20160208031241-groups-add-table.js b/migrations/20160208031241-groups-add-table.js index 6f09e100e..55b335ed0 100644 --- a/migrations/20160208031241-groups-add-table.js +++ b/migrations/20160208031241-groups-add-table.js @@ -1,7 +1,7 @@ 'use strict'; exports.up = function(db, callback) { - var cmd = "CREATE TABLE groups(" + + var cmd = "CREATE TABLE userGroups(" + "id VARCHAR(128) NOT NULL UNIQUE," + "name VARCHAR(128) NOT NULL UNIQUE," + "PRIMARY KEY(id))"; @@ -13,7 +13,7 @@ exports.up = function(db, callback) { }; exports.down = function(db, callback) { - db.runSql('DROP TABLE groups', function (error) { + db.runSql('DROP TABLE userGroups', function (error) { if (error) console.error(error); callback(error); }); diff --git a/migrations/20160208100000-groupMembers-add-table.js b/migrations/20160208100000-groupMembers-add-table.js index 0e07bd99d..cdf0aef3f 100644 --- a/migrations/20160208100000-groupMembers-add-table.js +++ b/migrations/20160208100000-groupMembers-add-table.js @@ -4,7 +4,7 @@ exports.up = function(db, callback) { var cmd = "CREATE TABLE IF NOT EXISTS groupMembers(" + "groupId VARCHAR(128) NOT NULL," + "userId VARCHAR(128) NOT NULL," + - "FOREIGN KEY(groupId) REFERENCES groups(id)," + + "FOREIGN KEY(groupId) REFERENCES userGroups(id)," + "FOREIGN KEY(userId) REFERENCES users(id));"; db.runSql(cmd, function (error) { diff --git a/migrations/20160208164735-groups-add-admin.js b/migrations/20160208164735-groups-add-admin.js index 0986f4c16..83b4d2359 100644 --- a/migrations/20160208164735-groups-add-admin.js +++ b/migrations/20160208164735-groups-add-admin.js @@ -7,7 +7,7 @@ var ADMIN_GROUP_ID = 'admin'; // see constants.js exports.up = function(db, callback) { async.series([ db.runSql.bind(db, 'START TRANSACTION;'), - db.runSql.bind(db, 'INSERT INTO groups (id, name) VALUES (?, ?)', [ ADMIN_GROUP_ID, 'admin' ]), + db.runSql.bind(db, 'INSERT INTO userGroups (id, name) VALUES (?, ?)', [ ADMIN_GROUP_ID, 'admin' ]), function migrateAdminFlag(done) { db.all('SELECT * FROM users WHERE admin=1', function (error, results) { if (error) return done(error); diff --git a/migrations/20160921205726-mailboxes-add-ownerId.js b/migrations/20160921205726-mailboxes-add-ownerId.js index 261554308..7727c9f5e 100644 --- a/migrations/20160921205726-mailboxes-add-ownerId.js +++ b/migrations/20160921205726-mailboxes-add-ownerId.js @@ -10,7 +10,7 @@ exports.up = function(db, callback) { function addGroupMailboxes(done) { console.log('Importing group mailboxes'); - db.all('SELECT id, name FROM groups', function (error, results) { + db.all('SELECT id, name FROM userGroups', function (error, results) { if (error) return done(error); async.eachSeries(results, function (g, next) { diff --git a/migrations/20171118000000-ensure-collation-utf8_bin.js b/migrations/20171118000000-ensure-collation-utf8_bin.js index 105a6c4d8..3fbff5c43 100644 --- a/migrations/20171118000000-ensure-collation-utf8_bin.js +++ b/migrations/20171118000000-ensure-collation-utf8_bin.js @@ -16,7 +16,7 @@ exports.up = function(db, callback) { db.runSql.bind(db, 'ALTER TABLE clients CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), db.runSql.bind(db, 'ALTER TABLE eventlog CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), db.runSql.bind(db, 'ALTER TABLE groupMembers CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), - db.runSql.bind(db, 'ALTER TABLE groups CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), + db.runSql.bind(db, 'ALTER TABLE userGroups CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), db.runSql.bind(db, 'ALTER TABLE mailboxes CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), db.runSql.bind(db, 'ALTER TABLE migrations CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), db.runSql.bind(db, 'ALTER TABLE settings CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin'), diff --git a/migrations/20171118000001-apps-add-domain.js b/migrations/20171118000001-apps-add-domain.js index 2416836e3..e8489b33d 100644 --- a/migrations/20171118000001-apps-add-domain.js +++ b/migrations/20171118000001-apps-add-domain.js @@ -29,7 +29,7 @@ exports.up = function(db, callback) { // this will be finally created once we have a domain when we create the owner in user.js const ADMIN_GROUP_ID = 'admin'; // see constants.js - db.runSql('DELETE FROM groups WHERE id = ?', [ ADMIN_GROUP_ID ], function (error) { + db.runSql('DELETE FROM userGroups WHERE id = ?', [ ADMIN_GROUP_ID ], function (error) { if (error) return done(error); db.runSql('DELETE FROM mailboxes WHERE ownerId = ?', [ ADMIN_GROUP_ID ], done); diff --git a/migrations/20180405222626-mailboxes-add-members.js b/migrations/20180405222626-mailboxes-add-members.js index a13c758cd..e9184e523 100644 --- a/migrations/20180405222626-mailboxes-add-members.js +++ b/migrations/20180405222626-mailboxes-add-members.js @@ -19,8 +19,8 @@ exports.up = function(db, callback) { }, function getGroups(done) { db.all('SELECT id, name, GROUP_CONCAT(groupMembers.userId) AS userIds ' + - ' FROM groups LEFT OUTER JOIN groupMembers ON groups.id = groupMembers.groupId ' + - ' GROUP BY groups.id', [ ], function (error, results) { + ' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' + + ' GROUP BY userGroups.id', [ ], function (error, results) { if (error) return done(error); results.forEach(function (result) { diff --git a/migrations/20180726213634-users-add-admin.js b/migrations/20180726213634-users-add-admin.js index 26f22d978..4a7f5aed8 100644 --- a/migrations/20180726213634-users-add-admin.js +++ b/migrations/20180726213634-users-add-admin.js @@ -18,7 +18,7 @@ exports.up = function(db, callback) { async.series([ db.runSql.bind(db, 'DELETE FROM groupMembers WHERE groupId=?', [ 'admin' ]), - db.runSql.bind(db, 'DELETE FROM groups WHERE id=?', [ 'admin' ]) + db.runSql.bind(db, 'DELETE FROM userGroups WHERE id=?', [ 'admin' ]) ], callback); }); }); diff --git a/migrations/schema.sql b/migrations/schema.sql index 221e7bf0e..da0279887 100644 --- a/migrations/schema.sql +++ b/migrations/schema.sql @@ -29,7 +29,7 @@ CREATE TABLE IF NOT EXISTS users( PRIMARY KEY(id)); -CREATE TABLE IF NOT EXISTS groups( +CREATE TABLE IF NOT EXISTS userGroups( id VARCHAR(128) NOT NULL UNIQUE, name VARCHAR(254) NOT NULL UNIQUE, PRIMARY KEY(id)); @@ -37,7 +37,7 @@ CREATE TABLE IF NOT EXISTS groups( CREATE TABLE IF NOT EXISTS groupMembers( groupId VARCHAR(128) NOT NULL, userId VARCHAR(128) NOT NULL, - FOREIGN KEY(groupId) REFERENCES groups(id), + FOREIGN KEY(groupId) REFERENCES userGroups(id), FOREIGN KEY(userId) REFERENCES users(id)); CREATE TABLE IF NOT EXISTS tokens( diff --git a/src/groupdb.js b/src/groupdb.js index dac976071..3d7c261ae 100644 --- a/src/groupdb.js +++ b/src/groupdb.js @@ -34,7 +34,7 @@ function get(groupId, callback) { assert.strictEqual(typeof groupId, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('SELECT ' + GROUPS_FIELDS + ' FROM groups WHERE id = ? ORDER BY name', [ groupId ], function (error, result) { + database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups WHERE id = ? ORDER BY name', [ groupId ], function (error, result) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); @@ -47,9 +47,9 @@ function getWithMembers(groupId, callback) { assert.strictEqual(typeof callback, 'function'); database.query('SELECT ' + GROUPS_FIELDS + ',GROUP_CONCAT(groupMembers.userId) AS userIds ' + - ' FROM groups LEFT OUTER JOIN groupMembers ON groups.id = groupMembers.groupId ' + - ' WHERE groups.id = ? ' + - ' GROUP BY groups.id', [ groupId ], function (error, results) { + ' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' + + ' WHERE userGroups.id = ? ' + + ' GROUP BY userGroups.id', [ groupId ], function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); @@ -63,7 +63,7 @@ function getWithMembers(groupId, callback) { function getAll(callback) { assert.strictEqual(typeof callback, 'function'); - database.query('SELECT ' + GROUPS_FIELDS + ' FROM groups', function (error, results) { + database.query('SELECT ' + GROUPS_FIELDS + ' FROM userGroups', function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); callback(null, results); @@ -72,8 +72,8 @@ function getAll(callback) { function getAllWithMembers(callback) { database.query('SELECT ' + GROUPS_FIELDS + ',GROUP_CONCAT(groupMembers.userId) AS userIds ' + - ' FROM groups LEFT OUTER JOIN groupMembers ON groups.id = groupMembers.groupId ' + - ' GROUP BY groups.id', function (error, results) { + ' FROM userGroups LEFT OUTER JOIN groupMembers ON userGroups.id = groupMembers.groupId ' + + ' GROUP BY userGroups.id', function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (results.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); @@ -88,7 +88,7 @@ function add(id, name, callback) { assert.strictEqual(typeof name, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('INSERT INTO groups (id, name) VALUES (?, ?)', [ id, name ], function (error, result) { + database.query('INSERT INTO userGroups (id, name) VALUES (?, ?)', [ id, name ], function (error, result) { if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); if (error || result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); @@ -112,8 +112,8 @@ function update(id, data, callback) { } args.push(id); - database.query('UPDATE groups SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) { - if (error && error.code === 'ER_DUP_ENTRY' && error.sqlMessage.indexOf('groups_name') !== -1) return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, 'name already exists')); + database.query('UPDATE userGroups SET ' + fields.join(', ') + ' WHERE id = ?', args, function (error, result) { + if (error && error.code === 'ER_DUP_ENTRY' && error.sqlMessage.indexOf('userGroups_name') !== -1) return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, 'name already exists')); if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); @@ -128,7 +128,7 @@ function del(id, callback) { // also cleanup the groupMembers table var queries = []; queries.push({ query: 'DELETE FROM groupMembers WHERE groupId = ?', args: [ id ] }); - queries.push({ query: 'DELETE FROM groups WHERE id = ?', args: [ id ] }); + queries.push({ query: 'DELETE FROM userGroups WHERE id = ?', args: [ id ] }); database.transaction(queries, function (error, result) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); @@ -141,7 +141,7 @@ function del(id, callback) { function count(callback) { assert.strictEqual(typeof callback, 'function'); - database.query('SELECT COUNT(*) AS total FROM groups', function (error, result) { + database.query('SELECT COUNT(*) AS total FROM userGroups', function (error, result) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); return callback(null, result[0].total); @@ -152,7 +152,7 @@ function clear(callback) { database.query('DELETE FROM groupMembers', function (error) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); - database.query('DELETE FROM groups', function (error) { + database.query('DELETE FROM userGroups', function (error) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); callback(error); @@ -266,7 +266,7 @@ function getGroups(userId, callback) { assert.strictEqual(typeof callback, 'function'); database.query('SELECT ' + GROUPS_FIELDS + ' ' + - ' FROM groups INNER JOIN groupMembers ON groups.id = groupMembers.groupId AND groupMembers.userId = ?', [ userId ], function (error, results) { + ' FROM userGroups INNER JOIN groupMembers ON userGroups.id = groupMembers.groupId AND groupMembers.userId = ?', [ userId ], function (error, results) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); callback(null, results);