remove list filtering for performance reasons
This commit is contained in:
@@ -14,13 +14,7 @@ function computeQueryParam(
|
|||||||
queryParam: string,
|
queryParam: string,
|
||||||
comparison: string | number
|
comparison: string | number
|
||||||
): boolean {
|
): boolean {
|
||||||
const params = queryParam.split(',')
|
return queryParam.startsWith('!') ? queryParam.substring(1) != comparison : queryParam == comparison
|
||||||
const blacklist = params.filter((e) => e.startsWith('!')).map(e => e.substring(1))
|
|
||||||
const whitelist = params.filter((e) => !e.startsWith('!'))
|
|
||||||
|
|
||||||
const blackPass = blacklist.reduce((acc, element) => element != comparison && acc, true)
|
|
||||||
const whitePass = whitelist.length == 0 ? true : whitelist.reduce((acc, element) => element == comparison || acc, false)
|
|
||||||
return blackPass && whitePass
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function filters(e: typeof allData[0], query: any) {
|
function filters(e: typeof allData[0], query: any) {
|
||||||
@@ -92,6 +86,7 @@ router.get(
|
|||||||
default:
|
default:
|
||||||
return res.status(400).send()
|
return res.status(400).send()
|
||||||
}
|
}
|
||||||
|
const timeStart = new Date()
|
||||||
allData
|
allData
|
||||||
.filter((e) => filters(e, req.query))
|
.filter((e) => filters(e, req.query))
|
||||||
.forEach((e) => {
|
.forEach((e) => {
|
||||||
@@ -127,6 +122,11 @@ router.get(
|
|||||||
Number(e.max_distance)
|
Number(e.max_distance)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
console.log(
|
||||||
|
'Data calculation finished. Took + ' +
|
||||||
|
Math.abs(new Date().getTime() - timeStart.getTime()) / 1000 +
|
||||||
|
' seconds'
|
||||||
|
)
|
||||||
res.status(200).send(data)
|
res.status(200).send(data)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user