@balena/odata-to-abstract-sql 5.9.4 → 5.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,28 @@
1
+ - commits:
2
+ - subject: Improve typings
3
+ hash: 78d4a48022ac0465c5d2c48db53b8ddd08e6e1bf
4
+ body: |
5
+ Update @balena/abstract-sql-compiler from 8.4.0 to 8.4.1
6
+ footer:
7
+ Change-type: patch
8
+ change-type: patch
9
+ author: Pagan Gazzard
10
+ nested:
11
+ - commits:
12
+ - subject: Add much finer grained typings for abstract-sql-optimizer
13
+ hash: 92bc7e93ca1b17401d902d66c68e090e50f70d1a
14
+ body: ""
15
+ footer:
16
+ Change-type: patch
17
+ change-type: patch
18
+ author: Pagan Gazzard
19
+ nested: []
20
+ version: abstract-sql-compiler-8.4.1
21
+ title: ""
22
+ date: 2023-04-25T10:03:26.380Z
23
+ version: 5.9.5
24
+ title: ""
25
+ date: 2023-04-25T12:13:20.220Z
1
26
  - commits:
2
27
  - subject: Update dependencies
3
28
  hash: 5aa3c51cbbfc66cddedebd41dacba5eabbacf709
@@ -348,7 +373,7 @@
348
373
  date: 2023-02-23T16:14:13.013Z
349
374
  version: 5.9.4
350
375
  title: ""
351
- date: 2023-04-24T16:23:49.766Z
376
+ date: 2023-04-24T16:26:44.367Z
352
377
  - commits:
353
378
  - subject: Fixes ODataBindings imported types
354
379
  hash: 07224c40f6c11a849939dcca456d18677b159991
package/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## 5.9.5 - 2023-04-25
8
+
9
+
10
+ <details>
11
+ <summary> Improve typings [Pagan Gazzard] </summary>
12
+
13
+ > ### abstract-sql-compiler-8.4.1 - 2023-04-25
14
+ >
15
+ > * Add much finer grained typings for abstract-sql-optimizer [Pagan Gazzard]
16
+ >
17
+
18
+ </details>
19
+
7
20
  ## 5.9.4 - 2023-04-24
8
21
 
9
22
 
@@ -1,5 +1,5 @@
1
1
  import * as memoize from 'memoizee';
2
- import { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode, AbstractSqlType, SelectNode, FromNode, WhereNode, OrderByNode, LimitNode, OffsetNode, NumberTypeNodes, FieldsNode, ValuesNode, ReferencedFieldNode, AliasNode, BooleanTypeNodes, SelectQueryNode, BindNode, TableNode, Definition as ModernDefinition, ResourceNode, UnionQueryNode, FromTypeNodes, FieldNode, CountNode } from '@balena/abstract-sql-compiler';
2
+ import { AbstractSqlQuery, AbstractSqlModel, AbstractSqlTable, DurationNode, SelectNode, FromNode, WhereNode, OrderByNode, LimitNode, OffsetNode, NumberTypeNodes, FieldsNode, ValuesNode, ReferencedFieldNode, AliasNode, BooleanTypeNodes, SelectQueryNode, BindNode, TableNode, Definition as ModernDefinition, ResourceNode, UnionQueryNode, FromTypeNodes, FieldNode, CountNode, AddNode, InsertQueryNode, DeleteQueryNode, UpdateQueryNode, DurationTypeNodes, SubtractNode, MultiplyNode, DivideNode, NullNode, TextTypeNodes, AnyTypeNodes, StrictDateTypeNodes } from '@balena/abstract-sql-compiler';
3
3
  import type { ODataBinds, ODataQuery, SupportedMethod, ExpandPropertyPath, ResourceOptions, OrderByOption, OrderByPropertyPath, FilterOption, BindReference } from '@balena/odata-parser';
4
4
  export type { ODataBinds, ODataQuery, SupportedMethod };
5
5
  type RequiredAbstractSqlModelSubset = Pick<AbstractSqlModel, 'synonyms' | 'relationships' | 'tables'>;
@@ -41,7 +41,9 @@ declare class Query {
41
41
  bindVarsLength: number;
42
42
  }, bypassDefinition?: boolean, isModifyOperation?: boolean): void;
43
43
  compile(queryType: 'SelectQuery'): SelectQueryNode;
44
- compile(queryType: string): AbstractSqlQuery;
44
+ compile(queryType: 'InsertQuery'): InsertQueryNode;
45
+ compile(queryType: 'UpdateQuery'): UpdateQueryNode;
46
+ compile(queryType: 'DeleteQuery'): DeleteQueryNode;
45
47
  }
46
48
  export declare const sqlNameToODataName: ((sqlName: string) => string) & memoize.Memoized<(sqlName: string) => string>;
47
49
  export declare const odataNameToSqlName: ((odataName: string) => string) & memoize.Memoized<(odataName: string) => string>;
@@ -68,8 +70,8 @@ export declare class OData2AbstractSQL {
68
70
  };
69
71
  PathSegment(method: string, bodyKeys: string[], path: ODataQuery): Query;
70
72
  PathKey(method: string, path: ODataQuery, resource: AliasedResource, bodyKeys: string[]): BooleanTypeNodes | void;
71
- Bind(bind: BindReference, optional: true): AbstractSqlType | undefined;
72
- Bind(bind: BindReference, optional?: false): AbstractSqlType;
73
+ Bind(bind: BindReference, optional: true): BindNode | undefined;
74
+ Bind(bind: BindReference): BindNode;
73
75
  SelectFilter(filter: FilterOption, query: Query, resource: Resource): void;
74
76
  OrderBy(orderby: OrderByOption, query: Query, resource: Resource): void;
75
77
  OrderByProperties(orderings: OrderByPropertyPath[]): Array<OrderByNode[1]>;
@@ -84,10 +86,10 @@ export declare class OData2AbstractSQL {
84
86
  ReferencedField(resource: Resource, resourceField: string): ReferencedFieldNode;
85
87
  BooleanMatch(match: any, optional: true): BooleanTypeNodes | undefined;
86
88
  BooleanMatch(match: any): BooleanTypeNodes;
87
- AliasedFunction(odataName: string, sqlName: string, match: any): AbstractSqlType;
88
- FunctionMatch(name: string, match: any): AbstractSqlQuery;
89
- Operand(match: any): AbstractSqlType;
90
- Math(match: any): AbstractSqlType | undefined;
89
+ AliasedFunction<T extends string>(odataName: string, sqlName: T, match: any): [T, ...AnyTypeNodes[]];
90
+ FunctionMatch<T extends string>(name: T, match: any): [Capitalize<T>, ...AnyTypeNodes[]];
91
+ Operand(match: any): BindNode | NullNode | BooleanTypeNodes | NumberTypeNodes | TextTypeNodes | StrictDateTypeNodes | DurationTypeNodes;
92
+ Math(match: any): AddNode | SubtractNode | MultiplyNode | DivideNode | undefined;
91
93
  Lambda(resourceName: string, lambda: any): BooleanTypeNodes;
92
94
  ReferencedProperty(match: any): BooleanTypeNodes;
93
95
  Method(prop: unknown & {
@@ -105,12 +107,12 @@ export declare class OData2AbstractSQL {
105
107
  };
106
108
  NumberMatch(match: any, optional: true): NumberTypeNodes | undefined;
107
109
  NumberMatch(match: any): NumberTypeNodes;
108
- NullMatch(match: any, _optional?: true): AbstractSqlType | undefined;
109
- TextMatch(match: any, optional: true): AbstractSqlType | undefined;
110
- TextMatch(match: any): AbstractSqlType;
111
- DateMatch(match: any, optional: true): AbstractSqlType | undefined;
112
- DateMatch(match: any): AbstractSqlType;
113
- DurationMatch(match: DurationNode[1]): AbstractSqlType | undefined;
110
+ NullMatch(match: any): NullNode | undefined;
111
+ TextMatch(match: any, optional: true): TextTypeNodes | undefined;
112
+ TextMatch(match: any): TextTypeNodes;
113
+ DateMatch(match: any, optional: true): StrictDateTypeNodes | undefined;
114
+ DateMatch(match: any): StrictDateTypeNodes;
115
+ DurationMatch(match: DurationNode[1]): DurationTypeNodes | undefined;
114
116
  Expands(resource: Resource, query: Query, expands: ExpandPropertyPath[]): void;
115
117
  AddQueryOptions(resource: Resource, path: ResourceOptions, query: Query): void;
116
118
  NavigateResources(resource: Resource, navigation: string): {
@@ -405,10 +405,7 @@ class OData2AbstractSQL {
405
405
  whereQuery.where.push(pathKeyWhere);
406
406
  }
407
407
  subQuery.where.push(['Exists', whereQuery.compile('SelectQuery')]);
408
- query.extras.push([
409
- 'Values',
410
- subQuery.compile('SelectQuery'),
411
- ]);
408
+ query.extras.push(['Values', subQuery.compile('SelectQuery')]);
412
409
  }
413
410
  else {
414
411
  query.extras.push(['Values', bindVars.map((b) => b[1])]);
@@ -716,11 +713,7 @@ class OData2AbstractSQL {
716
713
  case 'le':
717
714
  const op1 = this.Operand(rest[0]);
718
715
  const op2 = this.Operand(rest[1]);
719
- return [
720
- comparison[type],
721
- op1,
722
- op2,
723
- ];
716
+ return [comparison[type], op1, op2];
724
717
  case 'and':
725
718
  case 'or':
726
719
  return [
@@ -772,8 +765,8 @@ class OData2AbstractSQL {
772
765
  }
773
766
  }
774
767
  AliasedFunction(odataName, sqlName, match) {
775
- const fn = this.FunctionMatch(odataName, match);
776
- return [sqlName, ...fn.slice(1)];
768
+ const [, ...args] = this.FunctionMatch(odataName, match);
769
+ return [sqlName, ...args];
777
770
  }
778
771
  FunctionMatch(name, match) {
779
772
  if (!Array.isArray(match) || match[0] !== 'call') {
@@ -837,10 +830,7 @@ class OData2AbstractSQL {
837
830
  }
838
831
  else if (lambda.method === 'all') {
839
832
  query.where.push(['Not', filter]);
840
- return [
841
- 'Not',
842
- ['Exists', query.compile('SelectQuery')],
843
- ];
833
+ return ['Not', ['Exists', query.compile('SelectQuery')]];
844
834
  }
845
835
  else {
846
836
  throw new SyntaxError(`Lambda method does not support ${lambda.method}`);
@@ -974,7 +964,7 @@ class OData2AbstractSQL {
974
964
  throw new SyntaxError('Failed to match a Number entry');
975
965
  }
976
966
  }
977
- NullMatch(match, _optional) {
967
+ NullMatch(match) {
978
968
  if (match === null) {
979
969
  return ['Null'];
980
970
  }
@@ -987,15 +977,14 @@ class OData2AbstractSQL {
987
977
  const { method } = match[1];
988
978
  switch (method) {
989
979
  case 'tolower':
980
+ return this.AliasedFunction('tolower', 'Lower', match);
990
981
  case 'toupper':
991
- case 'trim':
982
+ return this.AliasedFunction('toupper', 'Upper', match);
992
983
  case 'concat':
984
+ return this.AliasedFunction('concat', 'Concatenate', match);
985
+ case 'trim':
993
986
  case 'replace':
994
987
  return this.FunctionMatch(method, match);
995
- case 'date':
996
- return this.AliasedFunction('date', 'ToDate', match);
997
- case 'time':
998
- return this.AliasedFunction('time', 'ToTime', match);
999
988
  case 'substring':
1000
989
  const fn = this.FunctionMatch(method, match);
1001
990
  fn[2] = ['Add', fn[2], ['Number', 1]];
@@ -1022,9 +1011,14 @@ class OData2AbstractSQL {
1022
1011
  const { method } = match[1];
1023
1012
  switch (method) {
1024
1013
  case 'now':
1014
+ return this.AliasedFunction('now', 'CurrentTimestamp', match);
1025
1015
  case 'maxdatetime':
1026
1016
  case 'mindatetime':
1027
1017
  return this.FunctionMatch(method, match);
1018
+ case 'date':
1019
+ return this.AliasedFunction('date', 'ToDate', match);
1020
+ case 'time':
1021
+ return this.AliasedFunction('time', 'ToTime', match);
1028
1022
  default:
1029
1023
  if (optional) {
1030
1024
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"odata-to-abstract-sql.js","sourceRoot":"","sources":["../src/odata-to-abstract-sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odata-to-abstract-sql.js","sourceRoot":"","sources":["../src/odata-to-abstract-sql.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/odata-to-abstract-sql",
3
- "version": "5.9.4",
3
+ "version": "5.9.5",
4
4
  "description": "A consumer of the OData parser, written in OMeta",
5
5
  "main": "out/odata-to-abstract-sql.js",
6
6
  "scripts": {
@@ -15,7 +15,7 @@
15
15
  "author": "",
16
16
  "license": "BSD",
17
17
  "dependencies": {
18
- "@balena/abstract-sql-compiler": "^8.4.0",
18
+ "@balena/abstract-sql-compiler": "^8.4.1",
19
19
  "@balena/odata-parser": "^2.4.6",
20
20
  "@types/lodash": "^4.14.194",
21
21
  "@types/memoizee": "^0.4.8",
@@ -49,6 +49,6 @@
49
49
  "_": "test/*.js"
50
50
  },
51
51
  "versionist": {
52
- "publishedAt": "2023-04-24T16:23:50.970Z"
52
+ "publishedAt": "2023-04-25T12:13:21.643Z"
53
53
  }
54
54
  }
@@ -36,6 +36,37 @@ import {
36
36
  isTableNode,
37
37
  FieldNode,
38
38
  CountNode,
39
+ AddNode,
40
+ LowerNode,
41
+ UpperNode,
42
+ ConcatenateNode,
43
+ ReplaceNode,
44
+ TrimNode,
45
+ InsertQueryNode,
46
+ DeleteQueryNode,
47
+ UpdateQueryNode,
48
+ DurationTypeNodes,
49
+ CurrentTimestampNode,
50
+ SubtractNode,
51
+ MultiplyNode,
52
+ DivideNode,
53
+ NullNode,
54
+ TextTypeNodes,
55
+ AnyTypeNodes,
56
+ ToTimeNode,
57
+ ToDateNode,
58
+ SubstringNode,
59
+ StrictDateTypeNodes,
60
+ StrictBooleanTypeNodes,
61
+ AndNode,
62
+ OrNode,
63
+ GreaterThanNode,
64
+ GreaterThanOrEqualNode,
65
+ LessThanNode,
66
+ LessThanOrEqualNode,
67
+ IsNotDistinctFromNode,
68
+ IsDistinctFromNode,
69
+ UnknownTypeNodes,
39
70
  } from '@balena/abstract-sql-compiler';
40
71
  import type {
41
72
  ODataBinds,
@@ -107,7 +138,7 @@ const operations = {
107
138
  sub: 'Subtract',
108
139
  mul: 'Multiply',
109
140
  div: 'Divide',
110
- };
141
+ } as const;
111
142
 
112
143
  const rewriteComputed = (
113
144
  computed: NonNullable<AbstractSqlField['computed']>,
@@ -179,8 +210,12 @@ class Query {
179
210
  this.from.push(tableRef);
180
211
  }
181
212
  compile(queryType: 'SelectQuery'): SelectQueryNode;
182
- compile(queryType: string): AbstractSqlQuery;
183
- compile(queryType: string): AbstractSqlQuery {
213
+ compile(queryType: 'InsertQuery'): InsertQueryNode;
214
+ compile(queryType: 'UpdateQuery'): UpdateQueryNode;
215
+ compile(queryType: 'DeleteQuery'): DeleteQueryNode;
216
+ compile(
217
+ queryType: 'SelectQuery' | 'InsertQuery' | 'UpdateQuery' | 'DeleteQuery',
218
+ ): SelectQueryNode | InsertQueryNode | UpdateQueryNode | DeleteQueryNode {
184
219
  const compiled: AbstractSqlType[] = [];
185
220
  let where = this.where;
186
221
  if (queryType === 'SelectQuery') {
@@ -195,7 +230,11 @@ class Query {
195
230
  }
196
231
  compiled.push(['Where', ...where]);
197
232
  }
198
- return [queryType, ...compiled, ...this.extras] as AbstractSqlQuery;
233
+ return [queryType, ...compiled, ...this.extras] as
234
+ | SelectQueryNode
235
+ | InsertQueryNode
236
+ | UpdateQueryNode
237
+ | DeleteQueryNode;
199
238
  }
200
239
  }
201
240
 
@@ -630,10 +669,7 @@ export class OData2AbstractSQL {
630
669
  }
631
670
  subQuery.where.push(['Exists', whereQuery.compile('SelectQuery')]);
632
671
 
633
- query.extras.push([
634
- 'Values',
635
- subQuery.compile('SelectQuery') as SelectQueryNode,
636
- ]);
672
+ query.extras.push(['Values', subQuery.compile('SelectQuery')]);
637
673
  } else {
638
674
  query.extras.push(['Values', bindVars.map((b) => b[1])]);
639
675
  }
@@ -667,7 +703,7 @@ export class OData2AbstractSQL {
667
703
  query.where.push([
668
704
  'In',
669
705
  referencedIdField,
670
- subQuery.compile('SelectQuery') as SelectQueryNode,
706
+ subQuery.compile('SelectQuery'),
671
707
  ]);
672
708
  } else if (hasQueryOpts && method === 'GET') {
673
709
  this.AddQueryOptions(resource, path, query);
@@ -754,9 +790,9 @@ export class OData2AbstractSQL {
754
790
  return ['And', ...namedKeys];
755
791
  }
756
792
  }
757
- Bind(bind: BindReference, optional: true): AbstractSqlType | undefined;
758
- Bind(bind: BindReference, optional?: false): AbstractSqlType;
759
- Bind(bind: BindReference, optional = false): AbstractSqlType | undefined {
793
+ Bind(bind: BindReference, optional: true): BindNode | undefined;
794
+ Bind(bind: BindReference): BindNode;
795
+ Bind(bind: BindReference, optional = false): BindNode | undefined {
760
796
  if (isBindReference(bind)) {
761
797
  return ['Bind', bind.bind];
762
798
  }
@@ -1027,17 +1063,19 @@ export class OData2AbstractSQL {
1027
1063
  case 'le':
1028
1064
  const op1 = this.Operand(rest[0]);
1029
1065
  const op2 = this.Operand(rest[1]);
1030
- return [
1031
- comparison[type as keyof typeof comparison],
1032
- op1,
1033
- op2,
1034
- ] as BooleanTypeNodes;
1066
+ return [comparison[type as keyof typeof comparison], op1, op2] as
1067
+ | IsNotDistinctFromNode
1068
+ | IsDistinctFromNode
1069
+ | GreaterThanNode
1070
+ | GreaterThanOrEqualNode
1071
+ | LessThanNode
1072
+ | LessThanOrEqualNode;
1035
1073
  case 'and':
1036
1074
  case 'or':
1037
1075
  return [
1038
1076
  _.capitalize(type),
1039
1077
  ...rest.map((v) => this.BooleanMatch(v)),
1040
- ] as BooleanTypeNodes;
1078
+ ] as AndNode | OrNode;
1041
1079
  case 'not':
1042
1080
  const bool = this.BooleanMatch(rest[0]);
1043
1081
  return ['Not', bool];
@@ -1055,7 +1093,10 @@ export class OData2AbstractSQL {
1055
1093
  case 'startswith':
1056
1094
  case 'isof':
1057
1095
  case 'substringof':
1058
- return this.FunctionMatch(method, match) as BooleanTypeNodes;
1096
+ return this.FunctionMatch(
1097
+ method,
1098
+ match,
1099
+ ) as StrictBooleanTypeNodes;
1059
1100
  default:
1060
1101
  if (optional) {
1061
1102
  return;
@@ -1080,15 +1121,18 @@ export class OData2AbstractSQL {
1080
1121
  }
1081
1122
  }
1082
1123
  }
1083
- AliasedFunction(
1124
+ AliasedFunction<T extends string>(
1084
1125
  odataName: string,
1085
- sqlName: string,
1126
+ sqlName: T,
1086
1127
  match: any,
1087
- ): AbstractSqlType {
1088
- const fn = this.FunctionMatch(odataName, match);
1089
- return [sqlName, ...fn.slice(1)];
1128
+ ): [T, ...AnyTypeNodes[]] {
1129
+ const [, ...args] = this.FunctionMatch(odataName, match);
1130
+ return [sqlName, ...args];
1090
1131
  }
1091
- FunctionMatch(name: string, match: any): AbstractSqlQuery {
1132
+ FunctionMatch<T extends string>(
1133
+ name: T,
1134
+ match: any,
1135
+ ): [Capitalize<T>, ...AnyTypeNodes[]] {
1092
1136
  if (!Array.isArray(match) || match[0] !== 'call') {
1093
1137
  throw new SyntaxError('Not a function call');
1094
1138
  }
@@ -1097,9 +1141,18 @@ export class OData2AbstractSQL {
1097
1141
  throw new SyntaxError('Unexpected function name');
1098
1142
  }
1099
1143
  const args = properties.args.map((v: any) => this.Operand(v));
1100
- return [_.capitalize(name), ...args] as AbstractSqlQuery;
1144
+ return [_.capitalize(name) as Capitalize<T>, ...args];
1101
1145
  }
1102
- Operand(match: any): AbstractSqlType {
1146
+ Operand(
1147
+ match: any,
1148
+ ):
1149
+ | BindNode
1150
+ | NullNode
1151
+ | BooleanTypeNodes
1152
+ | NumberTypeNodes
1153
+ | TextTypeNodes
1154
+ | StrictDateTypeNodes
1155
+ | DurationTypeNodes {
1103
1156
  for (const matcher of [
1104
1157
  this.Bind,
1105
1158
  this.NullMatch,
@@ -1110,14 +1163,27 @@ export class OData2AbstractSQL {
1110
1163
  this.DurationMatch,
1111
1164
  this.Math,
1112
1165
  ]) {
1113
- const result = matcher.call(this, match, true);
1166
+ const result = matcher.call<
1167
+ OData2AbstractSQL,
1168
+ [matcher: any, optional: true],
1169
+ | BindNode
1170
+ | NullNode
1171
+ | BooleanTypeNodes
1172
+ | NumberTypeNodes
1173
+ | TextTypeNodes
1174
+ | StrictDateTypeNodes
1175
+ | DurationTypeNodes
1176
+ | undefined
1177
+ >(this, match, true);
1114
1178
  if (result) {
1115
1179
  return result;
1116
1180
  }
1117
1181
  }
1118
1182
  throw new SyntaxError('Could not match operand');
1119
1183
  }
1120
- Math(match: any): AbstractSqlType | undefined {
1184
+ Math(
1185
+ match: any,
1186
+ ): AddNode | SubtractNode | MultiplyNode | DivideNode | undefined {
1121
1187
  const [type, ...rest] = match;
1122
1188
  switch (type) {
1123
1189
  case 'add':
@@ -1128,7 +1194,7 @@ export class OData2AbstractSQL {
1128
1194
  operations[type as keyof typeof operations],
1129
1195
  this.Operand(rest[0]),
1130
1196
  this.Operand(rest[1]),
1131
- ];
1197
+ ] as AddNode | SubtractNode | MultiplyNode | DivideNode;
1132
1198
  default:
1133
1199
  return;
1134
1200
  }
@@ -1151,14 +1217,11 @@ export class OData2AbstractSQL {
1151
1217
  const filter = this.BooleanMatch(lambda.expression);
1152
1218
  if (lambda.method === 'any') {
1153
1219
  query.where.push(filter);
1154
- return ['Exists', query.compile('SelectQuery') as SelectQueryNode];
1220
+ return ['Exists', query.compile('SelectQuery')];
1155
1221
  } else if (lambda.method === 'all') {
1156
1222
  // We use `NOT EXISTS NOT ($filter)` to implement all, but we want to leave existing where components intact, as they are for joins
1157
1223
  query.where.push(['Not', filter]);
1158
- return [
1159
- 'Not',
1160
- ['Exists', query.compile('SelectQuery') as SelectQueryNode],
1161
- ];
1224
+ return ['Not', ['Exists', query.compile('SelectQuery')]];
1162
1225
  } else {
1163
1226
  throw new SyntaxError(
1164
1227
  `Lambda method does not support ${lambda.method}`,
@@ -1191,11 +1254,12 @@ export class OData2AbstractSQL {
1191
1254
  // when date time field from schema => hardcoded DateTrunc
1192
1255
  // following abstractsql to sql compiler have to check engine to translate to proper eninge based sql query
1193
1256
  if (fieldDefinition?.dataType === 'Date Time') {
1257
+ // TODO: If we know we're specifically looking for a boolean property then we should reject properties we know are not booleans, until then the case makes it rely on the odata query being correct
1194
1258
  return [
1195
1259
  'DateTrunc',
1196
1260
  ['EmbeddedText', 'milliseconds'],
1197
1261
  this.ReferencedField(prop.resource, prop.name),
1198
- ];
1262
+ ] as any as UnknownTypeNodes;
1199
1263
  }
1200
1264
  }
1201
1265
 
@@ -1318,31 +1382,34 @@ export class OData2AbstractSQL {
1318
1382
  throw new SyntaxError('Failed to match a Number entry');
1319
1383
  }
1320
1384
  }
1321
- NullMatch(match: any, _optional?: true): AbstractSqlType | undefined {
1385
+ NullMatch(match: any): NullNode | undefined {
1322
1386
  if (match === null) {
1323
1387
  return ['Null'];
1324
1388
  }
1325
1389
  }
1326
- TextMatch(match: any, optional: true): AbstractSqlType | undefined;
1327
- TextMatch(match: any): AbstractSqlType;
1328
- TextMatch(match: any, optional = false): AbstractSqlType | undefined {
1390
+ TextMatch(match: any, optional: true): TextTypeNodes | undefined;
1391
+ TextMatch(match: any): TextTypeNodes;
1392
+ TextMatch(match: any, optional = false): TextTypeNodes | undefined {
1329
1393
  if (typeof match === 'string') {
1330
1394
  return ['Text', match];
1331
1395
  } else if (Array.isArray(match) && match[0] === 'call') {
1332
1396
  const { method } = match[1];
1333
1397
  switch (method) {
1334
1398
  case 'tolower':
1399
+ return this.AliasedFunction('tolower', 'Lower', match) as LowerNode;
1335
1400
  case 'toupper':
1336
- case 'trim':
1401
+ return this.AliasedFunction('toupper', 'Upper', match) as UpperNode;
1337
1402
  case 'concat':
1403
+ return this.AliasedFunction(
1404
+ 'concat',
1405
+ 'Concatenate',
1406
+ match,
1407
+ ) as ConcatenateNode;
1408
+ case 'trim':
1338
1409
  case 'replace':
1339
- return this.FunctionMatch(method, match);
1340
- case 'date':
1341
- return this.AliasedFunction('date', 'ToDate', match);
1342
- case 'time':
1343
- return this.AliasedFunction('time', 'ToTime', match);
1410
+ return this.FunctionMatch(method, match) as TrimNode | ReplaceNode;
1344
1411
  case 'substring':
1345
- const fn = this.FunctionMatch(method, match);
1412
+ const fn = this.FunctionMatch(method, match) as SubstringNode;
1346
1413
  // First parameter needs to be increased by 1.
1347
1414
  fn[2] = ['Add', fn[2], ['Number', 1]];
1348
1415
  return fn;
@@ -1358,18 +1425,27 @@ export class OData2AbstractSQL {
1358
1425
  throw new SyntaxError('Failed to match a Text entry');
1359
1426
  }
1360
1427
  }
1361
- DateMatch(match: any, optional: true): AbstractSqlType | undefined;
1362
- DateMatch(match: any): AbstractSqlType;
1363
- DateMatch(match: any, optional = false): AbstractSqlType | undefined {
1428
+ DateMatch(match: any, optional: true): StrictDateTypeNodes | undefined;
1429
+ DateMatch(match: any): StrictDateTypeNodes;
1430
+ DateMatch(match: any, optional = false): StrictDateTypeNodes | undefined {
1364
1431
  if (_.isDate(match)) {
1365
1432
  return ['Date', match];
1366
1433
  } else if (Array.isArray(match) && match[0] === 'call') {
1367
1434
  const { method } = match[1];
1368
1435
  switch (method) {
1369
1436
  case 'now':
1437
+ return this.AliasedFunction(
1438
+ 'now',
1439
+ 'CurrentTimestamp',
1440
+ match,
1441
+ ) as CurrentTimestampNode;
1370
1442
  case 'maxdatetime':
1371
1443
  case 'mindatetime':
1372
- return this.FunctionMatch(method, match);
1444
+ return this.FunctionMatch(method, match) as StrictDateTypeNodes;
1445
+ case 'date':
1446
+ return this.AliasedFunction('date', 'ToDate', match) as ToDateNode;
1447
+ case 'time':
1448
+ return this.AliasedFunction('time', 'ToTime', match) as ToTimeNode;
1373
1449
  default:
1374
1450
  if (optional) {
1375
1451
  return;
@@ -1382,7 +1458,7 @@ export class OData2AbstractSQL {
1382
1458
  throw new SyntaxError('Failed to match a Date entry');
1383
1459
  }
1384
1460
  }
1385
- DurationMatch(match: DurationNode[1]): AbstractSqlType | undefined {
1461
+ DurationMatch(match: DurationNode[1]): DurationTypeNodes | undefined {
1386
1462
  if (match == null || typeof match !== 'object') {
1387
1463
  return;
1388
1464
  }
@@ -1439,7 +1515,7 @@ export class OData2AbstractSQL {
1439
1515
  ]);
1440
1516
  expandQuery.from.push([
1441
1517
  'Alias',
1442
- nestedExpandQuery.compile('SelectQuery') as SelectQueryNode,
1518
+ nestedExpandQuery.compile('SelectQuery'),
1443
1519
  expandResource.tableAlias,
1444
1520
  ]);
1445
1521
  query.select.push([
@@ -1655,7 +1731,7 @@ export class OData2AbstractSQL {
1655
1731
  rewriteBinds(rewrittenDefinition, extraBindVars, bindVarsLength);
1656
1732
  modifyAbstractSql(
1657
1733
  'Resource',
1658
- rewrittenDefinition.abstractSql as AbstractSqlQuery,
1734
+ rewrittenDefinition.abstractSql,
1659
1735
  (resource: ResourceNode) => {
1660
1736
  const resourceName = resource[1];
1661
1737
  const referencedResource = this.clientModel.tables[resourceName];
package/test/chai-sql.js CHANGED
@@ -41,9 +41,9 @@ chai.use(function ($chai, utils) {
41
41
  const select = (function () {
42
42
  const bodySelect = bodyClause('Select');
43
43
  const typeSelect = queryType('SelectQuery');
44
- return function () {
44
+ return function (...args) {
45
45
  typeSelect.call(this);
46
- return bodySelect.apply(this, arguments);
46
+ return bodySelect.apply(this, args);
47
47
  };
48
48
  })();
49
49
  utils.addMethod(assertionPrototype, 'select', select);
package/test/filterby.js CHANGED
@@ -56,6 +56,10 @@ const methodMaps = {
56
56
  length: 'CharacterLength',
57
57
  date: 'ToDate',
58
58
  time: 'ToTime',
59
+ tolower: 'Lower',
60
+ toupper: 'Upper',
61
+ concat: 'Concatenate',
62
+ now: 'CurrentTimestamp',
59
63
  };
60
64
 
61
65
  const createExpression = function (lhs, op, rhs) {
@@ -5,7 +5,13 @@ import { OData2AbstractSQL } from '../out/odata-to-abstract-sql';
5
5
  const translator = new OData2AbstractSQL(clientModel);
6
6
 
7
7
  const { skip } = describe;
8
- const runExpectation = function (describe, input, method, body, expectation) {
8
+ const runExpectation = function (
9
+ describe: Mocha.SuiteFunction,
10
+ input: any,
11
+ method: any,
12
+ body?: any,
13
+ expectation?: any,
14
+ ) {
9
15
  if (expectation == null) {
10
16
  if (body == null) {
11
17
  expectation = method;
@@ -42,7 +48,20 @@ const runExpectation = function (describe, input, method, body, expectation) {
42
48
  );
43
49
  };
44
50
 
45
- const test = runExpectation.bind(null, describe);
51
+ type TailParameters<T extends (...args: any) => any> = T extends (
52
+ arg,
53
+ ...args: infer P
54
+ ) => any
55
+ ? P
56
+ : never;
57
+ type TestFn = (
58
+ ...args: TailParameters<typeof runExpectation>
59
+ ) => ReturnType<typeof runExpectation>;
60
+ interface Test extends TestFn {
61
+ skip: TestFn;
62
+ only: TestFn;
63
+ }
64
+ const test = runExpectation.bind(null, describe) as Test;
46
65
  test.skip = runExpectation.bind(null, describe.skip);
47
66
  test.only = runExpectation.bind(null, describe.only);
48
67
 
package/tsconfig.js.json CHANGED
@@ -4,7 +4,6 @@
4
4
  "noImplicitAny": false,
5
5
  "noImplicitThis": false,
6
6
  "strictFunctionTypes": false,
7
- "strictBindCallApply": false,
8
7
  "checkJs": true
9
8
  },
10
9
  "include": [