odata-v4-sql icon indicating copy to clipboard operation
odata-v4-sql copied to clipboard

Missing VisitNotExpression method

Open michael-zaytsev opened this issue 4 years ago • 1 comments

Good day to you all!

Trying to create query from not contains(property/path, 'value'), I get the following log entry:

Unhandled node type: NotExpression Token {
  position: 20,
  next: 56,
  value: Token {
    position: 24,
    next: 56,
    value: { method: 'contains', parameters: [Array] },
    type: 'MethodCallExpression',
    raw: "contains(property/path, 'value')"
  },
  type: 'NotExpression',
  raw: "not contains(property/path, 'value')"
}

I found out that its reason is missing VisitNotExpression method in /src/visitor.ts. As a result, I don't get expected query.

Package version: 0.1.2

michael-zaytsev avatar Nov 24 '21 07:11 michael-zaytsev

How I see the solution...

Within VisitNotExpression method, populating metadata property of Lexer.Token with negation property can be added at least for MethodCallExpression token. Then node.metadata?.negation can be used in VisitMethodCallExpression method.

I think this solution is quite suitable because the question is just whether NOT token should be inserted into a query of one of a few already processed method expressions or not.

michael-zaytsev avatar Nov 24 '21 08:11 michael-zaytsev