use JSON type (nice for querying)

This commit is contained in:
Girish Ramakrishnan
2016-04-30 09:51:23 -07:00
parent 7673ecde2f
commit c1df22f079
2 changed files with 7 additions and 8 deletions

View File

@@ -14,13 +14,11 @@ var assert = require('assert'),
DatabaseError = require('./databaseerror'),
safe = require('safetydance');
var EVENTLOGS_FIELDS = [ 'id', 'action', 'dataJson', 'creationTime' ].join(',');
var EVENTLOGS_FIELDS = [ 'id', 'action', 'data', 'creationTime' ].join(',');
// until mysql module supports automatic type coercion
function postProcess(eventLog) {
eventLog.data = safe.JSON.parse(eventLog.dataJson);
delete eventLog.dataJson;
eventLog.data = safe.JSON.parse(eventLog.data);
return eventLog;
}
@@ -41,7 +39,7 @@ function getAllPaged(page, perPage, callback) {
assert.strictEqual(typeof perPage, 'number');
assert.strictEqual(typeof callback, 'function');
database.query('SELECT ' + EVENTLOGS_FIELDS + 'FROM eventlog ORDER BY creationTime DESC LIMIT ?,?', [ (page-1)*perPage, perPage ], function (error, results) {
database.query('SELECT ' + EVENTLOGS_FIELDS + ' FROM eventlog ORDER BY creationTime DESC LIMIT ?,?', [ (page-1)*perPage, perPage ], function (error, results) {
if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error));
results.forEach(postProcess);
@@ -56,7 +54,7 @@ function add(id, action, data, callback) {
assert.strictEqual(typeof data, 'object');
assert.strictEqual(typeof callback, 'function');
database.query('INSERT INTO eventlog (id, action, dataJson) VALUES (?, ?, ?)', [ id, action, JSON.stringify(data) ], function (error, result) {
database.query('INSERT INTO eventlog (id, action, data) VALUES (?, ?, ?)', [ id, action, JSON.stringify(data) ], 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));
@@ -81,3 +79,4 @@ function clear(callback) {
callback(error);
});
}