get the longer string filters working
This commit is contained in:
@@ -49,7 +49,9 @@ app.post('/api/game', jsonParser, async (req, res) => {
|
||||
order: orderBy,
|
||||
where: filter
|
||||
})
|
||||
const pageCount = Math.ceil((await Character.count()) / count)
|
||||
const pageCount = Math.ceil((await Game.count({
|
||||
where: filter
|
||||
})) / count)
|
||||
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.send({ gameData, pageCount })
|
||||
|
||||
@@ -50,7 +50,8 @@ export class OrderByParser {
|
||||
const openGroupRegex = /\(/
|
||||
const closeGroupRegex = /\)/
|
||||
const conjunctinoRegex = /AND|OR/
|
||||
const equalityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?([a-zA-Z\d"']+)/
|
||||
const equalityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?([a-zA-Z\d]+)/
|
||||
const stringEqualityRegex = /([a-zA-Z]+)\s?(=|!=|<|>|<=|>=|:)\s?\"([a-zA-Z\d\s]*)\"/
|
||||
const spacerRegex = /\s/
|
||||
|
||||
const opperatorMap = {
|
||||
@@ -89,6 +90,12 @@ export class FilterParser {
|
||||
ctx.accept('value', m[3])
|
||||
})
|
||||
|
||||
this.lexer.rule(stringEqualityRegex, (ctx, m) => {
|
||||
ctx.accept('column', m[1])
|
||||
ctx.accept('opperator', m[2])
|
||||
ctx.accept('value', m[3])
|
||||
})
|
||||
|
||||
this.lexer.rule(spacerRegex, (ctx, m) => {
|
||||
ctx.ignore()
|
||||
})
|
||||
@@ -141,13 +148,13 @@ export class FilterParser {
|
||||
let opperatorToken = this.lexer.consume('opperator')
|
||||
let valueToken = this.lexer.consume('value')
|
||||
|
||||
if (opperatorToken.value === ":") {
|
||||
|
||||
if (opperatorToken.value === ':') {
|
||||
return {
|
||||
[columnToken.value]: { [opperatorMap[opperatorToken.value]]: `%${valueToken.value.toString()}%` }
|
||||
[columnToken.value]: {
|
||||
[opperatorMap[opperatorToken.value]]: `%${valueToken.value.toString()}%`
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
return {
|
||||
[columnToken.value]: { [opperatorMap[opperatorToken.value]]: valueToken.value.toString() }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user