-
Notifications
You must be signed in to change notification settings - Fork 0
/
queryHandler.js
48 lines (44 loc) · 1.61 KB
/
queryHandler.js
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
/*
Query Handler transforms the input query into a SQL statement that is passed
to the database through app.js
*/
const queryHandler = (street=null, label=null) => {
let streetQuery;
let labelQuery;
if (street) {
streetQuery = street.toLowerCase().trim();
} else {
streetQuery = "s";
}
if (label) {
labelQuery = ` AND LOWER(labela) LIKE '${label.toLowerCase().trim()}%'`;
} else {
labelQuery = "";
}
return `SELECT ul_ime, labela, na_ime,
ob_ime, pt_ime, pt_idx, cen_n, cen_e FROM fulldata WHERE LOWER(ul_ime) LIKE '%${streetQuery}%'${labelQuery};`
}
/*
Reponse handler arranges the database response in a more legible
and usable arrays that is later displayed as a response to initial request
fullAddress variable represents the standardized address
*/
const responseHandler = (dbResponse) => {
resArray = {}
for (i = 0; i < dbResponse.length; i++) {
let rawObj = dbResponse[i];
let fullAddress = `${rawObj.ul_ime.trim()} ${rawObj.labela.trim()}, ${rawObj.pt_idx} ${rawObj.ob_ime.trim()}, Slovenia`
let resObj = {
thoroughfareName : `${rawObj.ul_ime.trim()}`,
objectLabel : `${rawObj.labela.trim()}`,
localityName : `${rawObj.na_ime.trim()}`,
municipalityName : `${rawObj.ob_ime.trim()}`,
postalCode : `${rawObj.pt_idx}`,
coordinates : `${rawObj.cen_e}, ${rawObj.cen_n}`,
}
resArray[fullAddress] = resObj;
}
return resArray;
}
module.exports.queryHandler = queryHandler;
module.exports.responseHandler = responseHandler;