-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathsearch.middleware.js
More file actions
118 lines (108 loc) · 2.63 KB
/
search.middleware.js
File metadata and controls
118 lines (108 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
"use strict";
const Services = {
Search: require("../services/search.service")
};
const Middleware = {
Util: require("../middlewares/util.middleware")
}
/**
* @function parseQuery
* @param {JSON} req
* @param {JSON} res
* @param {JSON} next
* @description parses the json in the parameter
*/
function parseQuery(req, res, next) {
let query = req.body.q;
req.body.q = JSON.parse(query);
//Default page
if (!req.body.hasOwnProperty("page")) {
req.body.page = 0;
} else {
req.body.page = parseInt(req.body.page);
}
//Default limit
if (!req.body.hasOwnProperty("limit")) {
req.body.limit = 10000;
} else {
req.body.limit = parseInt(req.body.limit);
}
//Default sorting
if (!req.body.hasOwnProperty("sort")) {
req.body.sort = "";
req.body.sort_by = "";
}
if (!req.body.hasOwnProperty("expand")) {
req.body.expand = false;
}
return next();
}
/**
* Middleware that executes the query passed
* @param {{body: {model: string, q: Array, page: Integer, limit: Integer}}} req
* @param {*} res
* @param {(err?)=>void} next
* @returns {Promise.<void>}
*/
async function executeQuery(req, res, next) {
req.body.results = await Services.Search.executeQuery(req.body.model,
req.body.q,
req.body.page,
req.body.limit,
req.body.sort,
req.body.sort_by,
req.body.expand
);
return next();
}
/**
*
* @param {} req
* @param {*} res
* @param {*} next
*
* @returns
*/
async function executeStatusAction(req, res, next) {
req.body.results = await Services.Search.executeStatusAction(req.body.model,
req.body.q,
req.body.page,
req.body.limit,
req.body.sort,
req.body.sort_by,
req.body.update,
req.body.expand
);
return next();
}
/**
*
* @param {} req
* @param {*} res
* @param {*} next
*
* @returns
*/
async function executeEmailAction(req, res, next) {
req.body.results = await Services.Search.executeEmailAction(req.body.model,
req.body.q,
req.body.page,
req.body.limit,
req.body.sort,
req.body.sort_by,
req.body.status,
req.body.expand
);
return next();
}
function setExpandTrue(req, res, next) {
req.body.expand = true;
next();
}
module.exports = {
parseQuery: parseQuery,
executeQuery: Middleware.Util.asyncMiddleware(executeQuery),
executeStatusAction: Middleware.Util.asyncMiddleware(executeStatusAction),
executeEmailAction: Middleware.Util.asyncMiddleware(executeEmailAction),
setExpandTrue: setExpandTrue,
};