diff --git a/package.json b/package.json index 5424d34..f6f7de1 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,8 @@ "author": "", "license": "BSD", "dependencies": { - "@balena/abstract-sql-compiler": "^10.0.1", - "@balena/odata-parser": "^3.1.0", + "@balena/abstract-sql-compiler": "^10.2.0", + "@balena/odata-parser": "4.1.0-build-bind-null-be4c53827082b1917a7de0174635d2c91cefb64e-1", "@types/lodash": "^4.17.10", "@types/memoizee": "^0.4.11", "@types/string-hash": "^1.1.3", diff --git a/src/odata-to-abstract-sql.ts b/src/odata-to-abstract-sql.ts index 64c7d01..1f09e84 100644 --- a/src/odata-to-abstract-sql.ts +++ b/src/odata-to-abstract-sql.ts @@ -72,6 +72,7 @@ import type { IsDistinctFromNode, UnknownTypeNodes, FromTypeNode, + EqualsAnyNode, } from '@balena/abstract-sql-compiler'; import type { ODataBinds, @@ -136,6 +137,7 @@ export type ResourceFunction = ( const comparison = { eq: 'IsNotDistinctFrom', + eqany: 'EqualsAny', ne: 'IsDistinctFrom', gt: 'GreaterThan', ge: 'GreaterThanOrEqual', @@ -1142,6 +1144,7 @@ export class OData2AbstractSQL { const [type, ...rest] = match; switch (type) { case 'eq': + case 'eqany': case 'ne': case 'gt': case 'ge': @@ -1155,7 +1158,8 @@ export class OData2AbstractSQL { | GreaterThanNode | GreaterThanOrEqualNode | LessThanNode - | LessThanOrEqualNode; + | LessThanOrEqualNode + | EqualsAnyNode; } case 'and': case 'or': diff --git a/test/filterby.js b/test/filterby.js index 5bd5e3c..16e5dae 100644 --- a/test/filterby.js +++ b/test/filterby.js @@ -50,6 +50,7 @@ const sqlOps = { mul: 'Multiply', div: 'Divide', in: 'In', + eqany: 'EqualsAny', }; const methodMaps = { @@ -73,9 +74,7 @@ const createExpression = function (lhs, op, rhs) { if (op === 'in') { return { odata: operandToOData(lhs) + ' ' + op + ' ' + operandToOData(rhs), - abstractsql: [sqlOps[op], operandToAbstractSQL(lhs)].concat( - operandToAbstractSQL(rhs), - ), + abstractsql: [sqlOps['eqany'], operandToAbstractSQL(lhs), ['Bind', 0]], }; } if (rhs == null) {