* A bit of experimental work on Message obj
This commit is contained in:
parent
1bb997133f
commit
ab12974430
|
@ -1,6 +1,93 @@
|
||||||
/* jslint node: true */
|
/* jslint node: true */
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var msgDb = require('./database.js').dbs.message;
|
||||||
|
|
||||||
|
var uuid = require('node-uuid');
|
||||||
|
var async = require('async');
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
function Message(options) {
|
function Message(options) {
|
||||||
|
|
||||||
}
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.fromExisting = function(opts) {
|
||||||
|
self.messageId = opts.messageId;
|
||||||
|
self.areaId = opts.areaId;
|
||||||
|
self.uuid = opts.uuid;
|
||||||
|
self.replyToMsgId = opts.replyToMsgId;
|
||||||
|
self.toUserName = opts.toUserName;
|
||||||
|
self.fromUserName = opts.fromUserName;
|
||||||
|
self.subject = opts.subject;
|
||||||
|
self.message = opts.message;
|
||||||
|
self.modTimestamp = opts.modTimestamp;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.isValid = function() {
|
||||||
|
// :TODO: validate as much as possible
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.createMessageTimestamp = function() {
|
||||||
|
return new Date().toISOString();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Message.prototype.persist = function(cb) {
|
||||||
|
|
||||||
|
if(!this.isValid()) {
|
||||||
|
cb(new Error('Cannot persist invalid message!'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
async.series(
|
||||||
|
[
|
||||||
|
function beginTransaction(callback) {
|
||||||
|
msgDb.run('BEGIN;', function transBegin(err) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
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.createMessageTimestamp() ],
|
||||||
|
function msgInsert(err) {
|
||||||
|
if(!err) {
|
||||||
|
self.messageId = this.lastID;
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function storeMeta(callback) {
|
||||||
|
if(!self.meta) {
|
||||||
|
callback(null);
|
||||||
|
} else {
|
||||||
|
// :TODO: this should be it's own method such that meta can be updated
|
||||||
|
var metaStmt = msgDb.prepare(
|
||||||
|
'INSERT INTO message_meta (message_id, meta_name, meta_value) ' +
|
||||||
|
'VALUES (?, ?, ?);');
|
||||||
|
|
||||||
|
async.each(Object.keys(self.meta), function meta(metaName, next) {
|
||||||
|
metaStmt.run(self.messageId, metaName, self.meta[metaName], function insRan(err) {
|
||||||
|
next(err);
|
||||||
|
});
|
||||||
|
}, function complete(err) {
|
||||||
|
if(!err) {
|
||||||
|
metaStmt.finalize(function finalized() {
|
||||||
|
callback(null);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
callback(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
};
|
|
@ -367,15 +367,13 @@ function FullScreenEditorModule(options) {
|
||||||
},
|
},
|
||||||
editModeMenuSave : function(formData, extraArgs) {
|
editModeMenuSave : function(formData, extraArgs) {
|
||||||
|
|
||||||
|
},
|
||||||
|
editModeMenuQuote : function(formData, extraArgs) {
|
||||||
|
|
||||||
},
|
},
|
||||||
editModeMenuHelp : function(formData, extraArgs) {
|
editModeMenuHelp : function(formData, extraArgs) {
|
||||||
self.viewControllers.footerEditMenu.setFocus(false);
|
self.viewControllers.footerEditMenu.setFocus(false);
|
||||||
self.displayHelp();
|
self.displayHelp();
|
||||||
},
|
|
||||||
editModeMenu : function(formData, extraArgs) {
|
|
||||||
console.log('menu ' + formData.value['1'])
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -576,14 +576,15 @@
|
||||||
"HM1" : {
|
"HM1" : {
|
||||||
"mci" : {
|
"mci" : {
|
||||||
"HM1" : {
|
"HM1" : {
|
||||||
"items" : [ "Save", "Discard", "Menu 3", "Help" ]
|
// :TODO: Continue, Save, Discard, Clear, Quote, Help
|
||||||
|
"items" : [ "Save", "Discard", "Quote", "Help" ]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"submit" : {
|
"submit" : {
|
||||||
"*" : [
|
"*" : [
|
||||||
{
|
{
|
||||||
"value" : { "1" : 0 },
|
"value" : { "1" : 0 },
|
||||||
"action" : "@method:editModeMenu"
|
"action" : "@method:editModeMenuSave"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value" : { "1" : 1 },
|
"value" : { "1" : 1 },
|
||||||
|
@ -591,7 +592,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value" : { "1" : 2 },
|
"value" : { "1" : 2 },
|
||||||
"action" : "@method:editModeMenu"
|
"action" : "@method:editModeMenuQuote"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value" : { "1" : 3 },
|
"value" : { "1" : 3 },
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
"sqlite3" : "3.0.x",
|
"sqlite3" : "3.0.x",
|
||||||
"ssh2" : "0.4.x",
|
"ssh2" : "0.4.x",
|
||||||
"strip-json-comments" : "1.0.x",
|
"strip-json-comments" : "1.0.x",
|
||||||
"gapbuffer" : "0.0.2"
|
"gapbuffer" : "0.0.2",
|
||||||
|
"node-uuid" : "1.4.x"
|
||||||
},
|
},
|
||||||
"engine" : "node >= 0.12.2"
|
"engine" : "node >= 0.12.2"
|
||||||
}
|
}
|
Loading…
Reference in New Issue