Changed searching to be simplier since I don't think we'll need much more

This commit is contained in:
KimLS 2017-01-23 00:16:29 -08:00
parent 40edbc3b64
commit 73bd88dc62
3 changed files with 28 additions and 97 deletions

View File

@ -1,7 +1,7 @@
var auth = require('../../core/jwt_auth.js').auth; var auth = require('../../core/jwt_auth.js').auth;
var sql = require('./sql.js'); var sql = require('./sql.js');
var RegisterEndpoint = function(app, api, single_name, plural_name, pkey) { var RegisterEndpoint = function(app, api, single_name, plural_name, pkey, skeys) {
app.get('/api/data/' + single_name + '/:' + pkey, auth, function (req, res) { app.get('/api/data/' + single_name + '/:' + pkey, auth, function (req, res) {
sql.Retrieve(req, res, plural_name, pkey); sql.Retrieve(req, res, plural_name, pkey);
}); });
@ -15,7 +15,7 @@ var RegisterEndpoint = function(app, api, single_name, plural_name, pkey) {
}); });
app.post('/api/data/' + single_name + '/search', auth, function (req, res) { app.post('/api/data/' + single_name + '/search', auth, function (req, res) {
sql.Search(req, res, plural_name, pkey, res); sql.Search(req, res, plural_name, pkey, skeys);
}); });
}; };

View File

@ -1,7 +1,7 @@
var endpoint = require('./endpoint.js'); var endpoint = require('./endpoint.js');
var RegisterAPI = function(app, api) { var RegisterAPI = function(app, api) {
endpoint.Register(app, api, 'item', 'items', 'id'); endpoint.Register(app, api, 'item', 'items', 'id', ['name']);
}; };
module.exports = { module.exports = {

View File

@ -181,13 +181,8 @@ function Delete(req, res, table, pkey) {
}); });
} }
function Search(req, res, table, pkey) { function Search(req, res, table, pkey, skeys) {
//Verify incoming model //Verify incoming model
if(!req.body.hasOwnProperty('draw')) {
res.sendStatus(400);
return;
}
if(!req.body.hasOwnProperty('start')) { if(!req.body.hasOwnProperty('start')) {
res.sendStatus(400); res.sendStatus(400);
return; return;
@ -203,16 +198,6 @@ function Search(req, res, table, pkey) {
return; return;
} }
if(!req.body.hasOwnProperty('columns')) {
res.sendStatus(400);
return;
}
if(!req.body.hasOwnProperty('order')) {
res.sendStatus(400);
return;
}
req.mysql.getConnection(function(err, connection) { req.mysql.getConnection(function(err, connection) {
try { try {
if(err) { if(err) {
@ -222,76 +207,36 @@ function Search(req, res, table, pkey) {
return; return;
} }
var ret = { }; var query = 'SELECT * FROM ' + table;
ret.draw = req.body['draw']; var first = true;
ret.data = [];
var query = 'SELECT ';
var idx; var idx;
var args = []; var args = [];
var first = true; var searchTerm = '%' + req.body['search'] + '%';
for(idx in req.body['columns']) { for(idx in skeys) {
var column = req.body['columns'][idx]; var skey = skeys[idx];
if(first) { if(first) {
first = false; first = false;
query += ' WHERE ';
} else { } else {
query += ', '; query += ' OR ';
} }
query += connection.escapeId(column.data); query += skey;
query += ' LIKE ?';
args.push(searchTerm);
} }
query += ' FROM ' + table; query += ' ORDER BY ' + pkey + ' ASC';
query += ' LIMIT ?, ?';
first = true; args.push(req.body['start']);
for(idx in req.body['order']) { args.push(req.body['length']);
var order = req.body['order'][idx];
if(first) {
query += ' ORDER BY ';
first = false;
} else {
query += ', ';
}
var column = req.body['columns'][order.column];
query += connection.escapeId(column.data);
if(order.dir === 'asc') {
query += ' ASC';
} else {
query += ' DESC';
}
}
connection.query(query, args, function (error, results, fields) { connection.query(query, args, function (error, results, fields) {
try { try {
if(error) { var ret = [];
console.log(error);
connection.release();
res.sendStatus(400);
return;
}
ret.recordsTotal = results.length; for(idx in results) {
var result = results[idx];
for(var result_idx in results) {
var result = results[result_idx];
if(req.body['search'].value && req.body['search'].value.length > 0) {
var found = false;
for(idx in req.body['columns']) {
var column = req.body['columns'][idx];
if(column.searchable) {
if(String(result[column.data]).toLowerCase().includes(String(req.body['search'].value).toLowerCase())) {
found = true;
break;
}
}
}
if(found) {
var obj = { }; var obj = { };
for(var i in result) { for(var i in result) {
@ -299,22 +244,8 @@ function Search(req, res, table, pkey) {
obj[i] = value; obj[i] = value;
} }
ret.data.push(obj); ret.push(obj);
} }
} else {
var obj = { };
for(var i in result) {
var value = result[i];
obj[i] = value;
}
ret.data.push(obj);
}
}
ret.recordsFiltered = ret.data.length;
ret.data = ret.data.slice(req.body['start'], req.body['start'] + req.body['length']);
connection.release(); connection.release();
res.json(ret); res.json(ret);