mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-10 14:44:40 +02:00
* Cleanup related to message area IDs / database -> JSON format and names
This commit is contained in:
parent
35de0a2487
commit
d69d00a14b
6 changed files with 22 additions and 160 deletions
|
@ -124,7 +124,7 @@ function getDefaultConfig() {
|
|||
|
||||
messages : {
|
||||
areas : [
|
||||
{ name : "private_mail", desc : "Private Email", groups : [ "users" ] }
|
||||
{ name : 'private_mail', desc : 'Private Email', groups : [ 'users' ] }
|
||||
]
|
||||
},
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
);
|
||||
}
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue