remove list filtering for performance reasons

This commit is contained in:
2023-04-21 10:09:23 +02:00
parent 83aea19826
commit 99085c9863
+7 -7
View File
@@ -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)
} }
) )