* Cleanup related to message area IDs / database -> JSON format and names

This commit is contained in:
Bryan Ashby 2015-08-20 17:00:35 -06:00
parent 35de0a2487
commit d69d00a14b
6 changed files with 22 additions and 160 deletions

View file

@ -124,7 +124,7 @@ function getDefaultConfig() {
messages : {
areas : [
{ name : "private_mail", desc : "Private Email", groups : [ "users" ] }
{ name : 'private_mail', desc : 'Private Email', groups : [ 'users' ] }
]
},

View file

@ -81,6 +81,7 @@ function createUserTables() {
function createMessageBaseTables() {
/*
dbs.message.run(
'CREATE TABLE IF NOT EXISTS message_area (' +
' area_id INTEGER PRIMARY KEY,' +
@ -95,11 +96,12 @@ function createMessageBaseTables() {
' group_id INTEGER NOT NULL' + // FK @ user.sqlite::user_group::group_id
');'
);
*/
dbs.message.run(
'CREATE TABLE IF NOT EXISTS message (' +
' message_id INTEGER PRIMARY KEY,' +
' area_id INTEGER NOT NULL,' +
' area_name VARCHAR NOT NULL,' +
' message_uuid VARCHAR(36) NOT NULL,' +
' reply_to_message_id INTEGER,' +
' to_user_name VARCHAR NOT NULL,' +
@ -109,7 +111,6 @@ function createMessageBaseTables() {
' modified_timestamp DATETIME NOT NULL,' +
' view_count INTEGER NOT NULL DEFAULT 0,' +
' UNIQUE(message_uuid),' +
' FOREIGN KEY(area_id) REFERENCES message_area(area_id)' +
');'
);
@ -165,13 +166,6 @@ function createMessageBaseTables() {
}
function createInitialMessageValues() {
//
// Area ID 1: Private / Local
//
dbs.message.run(
'INSERT OR IGNORE INTO message_area ' +
'VALUES(1, "Local Private Messages");'
);
}
function createInitialUserValues() {

View file

@ -13,7 +13,7 @@ module.exports = Message;
function Message(options) {
this.messageId = options.messageId || 0; // always generated @ persist
this.areaId = options.areaId || Message.WellKnownAreaIds.Invalid; // 0 = invalid; 1 = private; Everything else is user defined
this.areaName = options.areaName || Message.WellKnownAreaNames.Invalid;
this.uuid = uuid.v1();
this.replyToMsgId = options.replyToMsgId || 0;
this.toUserName = options.toUserName || '';
@ -73,9 +73,9 @@ function Message(options) {
*/
}
Message.WellKnownAreaIds = {
Invalid : 0,
Private : 1,
Message.WellKnownAreaNames = {
Invalid : '',
Private : 'private_mail'
};
Message.MetaCategories = {
@ -135,8 +135,8 @@ Message.prototype.persist = function(cb) {
},
function storeMessage(callback) {
msgDb.run(
'INSERT INTO message (area_id, message_uuid, reply_to_message_id, to_user_name, from_user_name, subject, message, modified_timestamp) ' +
'VALUES (?, ?, ?, ?, ?, ?, ?, ?);', [ self.areaId, self.uuid, self.replyToMsgId, self.toUserName, self.fromUserName, self.subject, self.message, self.getMessageTimestampString(self.modTimestamp) ],
'INSERT INTO message (area_name, message_uuid, reply_to_message_id, to_user_name, from_user_name, subject, message, modified_timestamp) ' +
'VALUES (?, ?, ?, ?, ?, ?, ?, ?);', [ self.areaName, self.uuid, self.replyToMsgId, self.toUserName, self.fromUserName, self.subject, self.message, self.getMessageTimestampString(self.modTimestamp) ],
function msgInsert(err) {
if(!err) {
self.messageId = this.lastID;

View file

@ -54,98 +54,3 @@ function changeMessageArea(client, areaName, cb) {
}
);
}
/*
function getAvailableMessageAreas(cb) {
var areas = []; // { areaId, name, groupIds[] }
async.series(
[
function getAreas(callback) {
msgDb.all(
'SELECT area_id, area_name ' +
'FROM message_area;',
function areaResults(err, areaRows) {
if(err) {
callback(err);
} else {
areaRows.forEach(function entry(ar) {
areas.push( {
areaId : ar.area_id,
name : ar.area_name,
});
});
callback(null);
}
}
);
},
function getAreaGroups(callback) {
var query = msgDb.prepare(
'SELECT group_id ' +
'FROM message_area_group ' +
'WHERE area_id=?;');
async.each(areas, function area(a, next) {
query.all( [ a.areaId ], function groupRows(err, groups) {
a.groupIds = groups;
next(err);
});
},
function complete(err) {
query.finalize(function finalized(err2) {
callback(err); // use orig err
});
});
}
],
function complete(err) {
cb(err, areas);
}
);
}
function changeCurrentArea(client, areaId, cb) {
async.series(
[
function validateAccess(callback) {
// :TODO: validate user has access to areaId -- must belong to group(s) specified
callback(null);
},
function changeArea(callback) {
client.user.persistProperty('message_area_id', areaId, function persisted(err) {
callback(err);
});
},
function cacheAreaName(callback) {
msgDb.get(
'SELECT area_name ' +
'FROM message_area ' +
'WHERE area_id=? ' +
'LIMIT 1;',
[ areaId ],
function got(err, row) {
// note: failures here are non-fatal
if(err) {
callback(null);
} else {
client.user.persistProperty('message_area_name', row.area_name, function persisted(err) {
callback(null);
});
}
}
);
}
],
function complete(err) {
if(!err) {
client.log.info( { areaId : areaId }, 'Current message area changed');
} else {
client.log.warn( { areaId : areaId, error : err.message }, 'Could not change message area');
}
cb(err);
}
);
}
*/