mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 09:31:30 +00:00
Changed searching to be simplier since I don't think we'll need much more
This commit is contained in:
parent
40edbc3b64
commit
73bd88dc62
@ -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);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -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 = {
|
||||||
|
|||||||
@ -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,100 +207,46 @@ 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 ?, ?';
|
||||||
|
args.push(req.body['start']);
|
||||||
|
args.push(req.body['length']);
|
||||||
|
|
||||||
first = true;
|
|
||||||
for(idx in req.body['order']) {
|
|
||||||
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 obj = { };
|
||||||
var result = results[result_idx];
|
|
||||||
if(req.body['search'].value && req.body['search'].value.length > 0) {
|
for(var i in result) {
|
||||||
var found = false;
|
var value = result[i];
|
||||||
|
obj[i] = value;
|
||||||
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 = { };
|
|
||||||
|
|
||||||
for(var i in result) {
|
|
||||||
var value = result[i];
|
|
||||||
obj[i] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.data.push(obj);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var obj = { };
|
|
||||||
|
|
||||||
for(var i in result) {
|
|
||||||
var value = result[i];
|
|
||||||
obj[i] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.data.push(obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret.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);
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user