@balena/abstract-sql-compiler 7.17.0 → 7.18.0

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,14 @@ 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
+ ## 7.18.0 - 2022-02-16
8
+
9
+ * Add reference property type [Harald Fischer]
10
+
11
+ ## 7.17.1 - 2022-01-24
12
+
13
+ * Avoid the operation type optimization for HAVING clauses [Pagan Gazzard]
14
+
7
15
  ## 7.17.0 - 2021-12-14
8
16
 
9
17
  * Add support for `Count` nodes in rule referenced fields [Pagan Gazzard]
@@ -134,6 +134,7 @@ export interface AbstractSqlField {
134
134
  references?: {
135
135
  resourceName: string;
136
136
  fieldName: string;
137
+ type?: string;
137
138
  };
138
139
  defaultValue?: string;
139
140
  computed?: AbstractSqlQuery;
@@ -204,7 +204,9 @@ END;
204
204
  $$;`);
205
205
  }
206
206
  else {
207
- foreignKeys.push(fkDefinition);
207
+ if (references.type !== 'informative') {
208
+ foreignKeys.push(fkDefinition);
209
+ }
208
210
  depends.push(references.resourceName);
209
211
  hasDependants[references.resourceName] = true;
210
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSQLCompiler.js","sourceRoot":"","sources":["../src/AbstractSQLCompiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractSQLCompiler.js","sourceRoot":"","sources":["../src/AbstractSQLCompiler.ts"],"names":[],"mappings":"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"}
@@ -120,6 +120,18 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
120
120
  });
121
121
  });
122
122
  return;
123
+ case 'Having':
124
+ scope = { ...scope };
125
+ for (const key of Object.keys(scope)) {
126
+ scope[key] = { ...scope[key], isSafe: IsSafe.Unknown };
127
+ }
128
+ rulePart.forEach((node) => {
129
+ $getRuleReferencedFields(referencedFields, node, isSafe, {
130
+ scope,
131
+ currentlyScopedAliases,
132
+ });
133
+ });
134
+ return;
123
135
  case 'Count':
124
136
  if (rulePart[1] !== '*') {
125
137
  throw new Error('Only COUNT(*) is supported for rule referenced fields');
@@ -1 +1 @@
1
- {"version":3,"file":"referenced-fields.js","sourceRoot":"","sources":["../src/referenced-fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"referenced-fields.js","sourceRoot":"","sources":["../src/referenced-fields.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/abstract-sql-compiler",
3
- "version": "7.17.0",
3
+ "version": "7.18.0",
4
4
  "description": "A translator for abstract sql into sql.",
5
5
  "main": "out/AbstractSQLCompiler.js",
6
6
  "types": "out/AbstractSQLCompiler.d.ts",
@@ -22,10 +22,10 @@
22
22
  "lodash": "^4.17.21"
23
23
  },
24
24
  "devDependencies": {
25
- "@balena/lf-to-abstract-sql": "^4.3.0",
25
+ "@balena/lf-to-abstract-sql": "^4.5.0",
26
26
  "@balena/lint": "^6.1.1",
27
27
  "@balena/odata-parser": "^2.2.8",
28
- "@balena/sbvr-parser": "^1.2.5",
28
+ "@balena/sbvr-parser": "^1.4.0",
29
29
  "@resin/odata-to-abstract-sql": "^3.3.0",
30
30
  "@types/chai": "^4.2.21",
31
31
  "@types/common-tags": "^1.8.1",
@@ -63,6 +63,6 @@
63
63
  ]
64
64
  },
65
65
  "versionist": {
66
- "publishedAt": "2021-12-14T18:06:07.917Z"
66
+ "publishedAt": "2022-02-16T14:22:40.769Z"
67
67
  }
68
68
  }
@@ -248,6 +248,7 @@ export interface AbstractSqlField {
248
248
  references?: {
249
249
  resourceName: string;
250
250
  fieldName: string;
251
+ type?: string;
251
252
  };
252
253
  defaultValue?: string;
253
254
  computed?: AbstractSqlQuery;
@@ -648,7 +649,9 @@ BEGIN
648
649
  END;
649
650
  $$;`);
650
651
  } else {
651
- foreignKeys.push(fkDefinition);
652
+ if (references.type !== 'informative') {
653
+ foreignKeys.push(fkDefinition);
654
+ }
652
655
  depends.push(references.resourceName);
653
656
  hasDependants[references.resourceName] = true;
654
657
  }
@@ -174,6 +174,20 @@ const $getRuleReferencedFields = (
174
174
  });
175
175
  });
176
176
  return;
177
+ case 'Having':
178
+ scope = { ...scope };
179
+ for (const key of Object.keys(scope)) {
180
+ // Treat all entries under a `HAVING` as unknown since it can include counts in such a way
181
+ // that our expectations of safety do not hold
182
+ scope[key] = { ...scope[key], isSafe: IsSafe.Unknown };
183
+ }
184
+ rulePart.forEach((node: AbstractSqlQuery) => {
185
+ $getRuleReferencedFields(referencedFields, node, isSafe, {
186
+ scope,
187
+ currentlyScopedAliases,
188
+ });
189
+ });
190
+ return;
177
191
  case 'Count':
178
192
  if (rulePart[1] !== '*') {
179
193
  throw new Error(
@@ -287,4 +287,25 @@ describe('getRuleReferencedFields', () => {
287
287
  },
288
288
  });
289
289
  });
290
+
291
+ it('HAVING clauses should not be subject to the operation typecheck optimization', () => {
292
+ expect(
293
+ AbstractSqlCompiler.postgres.getRuleReferencedFields([
294
+ 'NotExists',
295
+ [
296
+ 'SelectQuery',
297
+ ['Select', []],
298
+ ['From', ['Table', 'test']],
299
+ ['GroupBy', [['ReferencedField', 'test', 'field']]],
300
+ ['Having', ['GreaterThanOrEqual', ['Count', '*'], ['Number', 2]]],
301
+ ],
302
+ ] as AbstractSqlCompiler.AbstractSqlQuery),
303
+ ).to.deep.equal({
304
+ test: {
305
+ create: ['field', ''],
306
+ update: ['field', ''],
307
+ delete: [''],
308
+ },
309
+ });
310
+ });
290
311
  });
@@ -0,0 +1,416 @@
1
+ import * as AbstractSQLCompiler from '../..';
2
+ import { expect } from 'chai';
3
+
4
+ describe('generate informative reference schema', () => {
5
+ it('reference type informative produces just a column without foreign key / constraint', () => {
6
+ expect(
7
+ AbstractSQLCompiler.postgres.compileSchema({
8
+ tables: {
9
+ term: {
10
+ fields: [
11
+ {
12
+ dataType: 'Date Time',
13
+ fieldName: 'created at',
14
+ required: true,
15
+ defaultValue: 'CURRENT_TIMESTAMP',
16
+ },
17
+ {
18
+ dataType: 'Date Time',
19
+ fieldName: 'modified at',
20
+ required: true,
21
+ defaultValue: 'CURRENT_TIMESTAMP',
22
+ },
23
+ {
24
+ dataType: 'Serial',
25
+ fieldName: 'id',
26
+ required: true,
27
+ index: 'PRIMARY KEY',
28
+ },
29
+ ],
30
+ primitive: false,
31
+ name: 'term',
32
+ indexes: [],
33
+ idField: 'id',
34
+ resourceName: 'term',
35
+ },
36
+ 'term history': {
37
+ fields: [
38
+ {
39
+ dataType: 'Date Time',
40
+ fieldName: 'created at',
41
+ required: true,
42
+ defaultValue: 'CURRENT_TIMESTAMP',
43
+ },
44
+ {
45
+ dataType: 'Date Time',
46
+ fieldName: 'modified at',
47
+ required: true,
48
+ defaultValue: 'CURRENT_TIMESTAMP',
49
+ },
50
+ {
51
+ dataType: 'Serial',
52
+ fieldName: 'id',
53
+ required: true,
54
+ index: 'PRIMARY KEY',
55
+ },
56
+ {
57
+ dataType: 'ForeignKey',
58
+ fieldName: 'references-term',
59
+ required: true,
60
+ references: {
61
+ resourceName: 'term',
62
+ fieldName: 'id',
63
+ type: 'informative',
64
+ },
65
+ },
66
+ ],
67
+ primitive: false,
68
+ name: 'term history',
69
+ indexes: [],
70
+ idField: 'id',
71
+ resourceName: 'term history',
72
+ },
73
+ },
74
+ relationships: {},
75
+ rules: [],
76
+ synonyms: {},
77
+ }),
78
+ )
79
+ .to.have.property('createSchema')
80
+ .that.deep.equals([
81
+ `\
82
+ CREATE TABLE IF NOT EXISTS "term" (
83
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
84
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
85
+ , "id" SERIAL NOT NULL PRIMARY KEY
86
+ );`,
87
+ `\
88
+ CREATE TABLE IF NOT EXISTS "term history" (
89
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
90
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
91
+ , "id" SERIAL NOT NULL PRIMARY KEY
92
+ , "references-term" INTEGER NOT NULL
93
+ );`,
94
+ ]);
95
+ });
96
+
97
+ it('reference type informative produces just a column without foreign key / constraint - mixed mode', () => {
98
+ expect(
99
+ AbstractSQLCompiler.postgres.compileSchema({
100
+ tables: {
101
+ term: {
102
+ fields: [
103
+ {
104
+ dataType: 'Date Time',
105
+ fieldName: 'created at',
106
+ required: true,
107
+ defaultValue: 'CURRENT_TIMESTAMP',
108
+ },
109
+ {
110
+ dataType: 'Date Time',
111
+ fieldName: 'modified at',
112
+ required: true,
113
+ defaultValue: 'CURRENT_TIMESTAMP',
114
+ },
115
+ {
116
+ dataType: 'Serial',
117
+ fieldName: 'id',
118
+ required: true,
119
+ index: 'PRIMARY KEY',
120
+ },
121
+ ],
122
+ primitive: false,
123
+ name: 'term',
124
+ indexes: [],
125
+ idField: 'id',
126
+ resourceName: 'term',
127
+ },
128
+ termterm: {
129
+ fields: [
130
+ {
131
+ dataType: 'Date Time',
132
+ fieldName: 'created at',
133
+ required: true,
134
+ defaultValue: 'CURRENT_TIMESTAMP',
135
+ },
136
+ {
137
+ dataType: 'Date Time',
138
+ fieldName: 'modified at',
139
+ required: true,
140
+ defaultValue: 'CURRENT_TIMESTAMP',
141
+ },
142
+ {
143
+ dataType: 'Serial',
144
+ fieldName: 'id',
145
+ required: true,
146
+ index: 'PRIMARY KEY',
147
+ },
148
+ ],
149
+ primitive: false,
150
+ name: 'termterm',
151
+ indexes: [],
152
+ idField: 'id',
153
+ resourceName: 'termterm',
154
+ },
155
+ 'term history': {
156
+ fields: [
157
+ {
158
+ dataType: 'Date Time',
159
+ fieldName: 'created at',
160
+ required: true,
161
+ defaultValue: 'CURRENT_TIMESTAMP',
162
+ },
163
+ {
164
+ dataType: 'Date Time',
165
+ fieldName: 'modified at',
166
+ required: true,
167
+ defaultValue: 'CURRENT_TIMESTAMP',
168
+ },
169
+ {
170
+ dataType: 'Serial',
171
+ fieldName: 'id',
172
+ required: true,
173
+ index: 'PRIMARY KEY',
174
+ },
175
+ {
176
+ dataType: 'ForeignKey',
177
+ fieldName: 'references-term',
178
+ required: true,
179
+ references: {
180
+ resourceName: 'term',
181
+ fieldName: 'id',
182
+ type: 'informative',
183
+ },
184
+ },
185
+ {
186
+ dataType: 'ForeignKey',
187
+ fieldName: 'references-termterm',
188
+ required: true,
189
+ references: {
190
+ resourceName: 'termterm',
191
+ fieldName: 'id',
192
+ },
193
+ },
194
+ ],
195
+ primitive: false,
196
+ name: 'term history',
197
+ indexes: [],
198
+ idField: 'id',
199
+ resourceName: 'term history',
200
+ },
201
+ },
202
+ relationships: {},
203
+ rules: [],
204
+ synonyms: {},
205
+ }),
206
+ )
207
+ .to.have.property('createSchema')
208
+ .that.deep.equals([
209
+ `\
210
+ CREATE TABLE IF NOT EXISTS "term" (
211
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
212
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
213
+ , "id" SERIAL NOT NULL PRIMARY KEY
214
+ );`,
215
+ `\
216
+ CREATE TABLE IF NOT EXISTS "termterm" (
217
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
218
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
219
+ , "id" SERIAL NOT NULL PRIMARY KEY
220
+ );`,
221
+ `\
222
+ CREATE TABLE IF NOT EXISTS "term history" (
223
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
224
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
225
+ , "id" SERIAL NOT NULL PRIMARY KEY
226
+ , "references-term" INTEGER NOT NULL
227
+ , "references-termterm" INTEGER NOT NULL
228
+ , FOREIGN KEY ("references-termterm") REFERENCES "termterm" ("id")
229
+ );`,
230
+ ]);
231
+ });
232
+ it('reference type strict produces a column foreign key / constraint', () => {
233
+ expect(
234
+ AbstractSQLCompiler.postgres.compileSchema({
235
+ tables: {
236
+ term: {
237
+ fields: [
238
+ {
239
+ dataType: 'Date Time',
240
+ fieldName: 'created at',
241
+ required: true,
242
+ defaultValue: 'CURRENT_TIMESTAMP',
243
+ },
244
+ {
245
+ dataType: 'Date Time',
246
+ fieldName: 'modified at',
247
+ required: true,
248
+ defaultValue: 'CURRENT_TIMESTAMP',
249
+ },
250
+ {
251
+ dataType: 'Serial',
252
+ fieldName: 'id',
253
+ required: true,
254
+ index: 'PRIMARY KEY',
255
+ },
256
+ ],
257
+ primitive: false,
258
+ name: 'term',
259
+ indexes: [],
260
+ idField: 'id',
261
+ resourceName: 'term',
262
+ },
263
+ 'term history': {
264
+ fields: [
265
+ {
266
+ dataType: 'Date Time',
267
+ fieldName: 'created at',
268
+ required: true,
269
+ defaultValue: 'CURRENT_TIMESTAMP',
270
+ },
271
+ {
272
+ dataType: 'Date Time',
273
+ fieldName: 'modified at',
274
+ required: true,
275
+ defaultValue: 'CURRENT_TIMESTAMP',
276
+ },
277
+ {
278
+ dataType: 'Serial',
279
+ fieldName: 'id',
280
+ required: true,
281
+ index: 'PRIMARY KEY',
282
+ },
283
+ {
284
+ dataType: 'ForeignKey',
285
+ fieldName: 'references-term',
286
+ required: true,
287
+ references: {
288
+ resourceName: 'term',
289
+ fieldName: 'id',
290
+ type: 'strict',
291
+ },
292
+ },
293
+ ],
294
+ primitive: false,
295
+ name: 'term history',
296
+ indexes: [],
297
+ idField: 'id',
298
+ resourceName: 'term history',
299
+ },
300
+ },
301
+ relationships: {},
302
+ rules: [],
303
+ synonyms: {},
304
+ }),
305
+ )
306
+ .to.have.property('createSchema')
307
+ .that.deep.equals([
308
+ `\
309
+ CREATE TABLE IF NOT EXISTS "term" (
310
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
311
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
312
+ , "id" SERIAL NOT NULL PRIMARY KEY
313
+ );`,
314
+ `\
315
+ CREATE TABLE IF NOT EXISTS "term history" (
316
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
317
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
318
+ , "id" SERIAL NOT NULL PRIMARY KEY
319
+ , "references-term" INTEGER NOT NULL
320
+ , FOREIGN KEY ("references-term") REFERENCES "term" ("id")
321
+ );`,
322
+ ]);
323
+ });
324
+
325
+ it('reference type undefined produces a column foreign key / constraint', () => {
326
+ expect(
327
+ AbstractSQLCompiler.postgres.compileSchema({
328
+ tables: {
329
+ term: {
330
+ fields: [
331
+ {
332
+ dataType: 'Date Time',
333
+ fieldName: 'created at',
334
+ required: true,
335
+ defaultValue: 'CURRENT_TIMESTAMP',
336
+ },
337
+ {
338
+ dataType: 'Date Time',
339
+ fieldName: 'modified at',
340
+ required: true,
341
+ defaultValue: 'CURRENT_TIMESTAMP',
342
+ },
343
+ {
344
+ dataType: 'Serial',
345
+ fieldName: 'id',
346
+ required: true,
347
+ index: 'PRIMARY KEY',
348
+ },
349
+ ],
350
+ primitive: false,
351
+ name: 'term',
352
+ indexes: [],
353
+ idField: 'id',
354
+ resourceName: 'term',
355
+ },
356
+ 'term history': {
357
+ fields: [
358
+ {
359
+ dataType: 'Date Time',
360
+ fieldName: 'created at',
361
+ required: true,
362
+ defaultValue: 'CURRENT_TIMESTAMP',
363
+ },
364
+ {
365
+ dataType: 'Date Time',
366
+ fieldName: 'modified at',
367
+ required: true,
368
+ defaultValue: 'CURRENT_TIMESTAMP',
369
+ },
370
+ {
371
+ dataType: 'Serial',
372
+ fieldName: 'id',
373
+ required: true,
374
+ index: 'PRIMARY KEY',
375
+ },
376
+ {
377
+ dataType: 'ForeignKey',
378
+ fieldName: 'references-term',
379
+ required: true,
380
+ references: {
381
+ resourceName: 'term',
382
+ fieldName: 'id',
383
+ },
384
+ },
385
+ ],
386
+ primitive: false,
387
+ name: 'term history',
388
+ indexes: [],
389
+ idField: 'id',
390
+ resourceName: 'term history',
391
+ },
392
+ },
393
+ relationships: {},
394
+ rules: [],
395
+ synonyms: {},
396
+ }),
397
+ )
398
+ .to.have.property('createSchema')
399
+ .that.deep.equals([
400
+ `\
401
+ CREATE TABLE IF NOT EXISTS "term" (
402
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
403
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
404
+ , "id" SERIAL NOT NULL PRIMARY KEY
405
+ );`,
406
+ `\
407
+ CREATE TABLE IF NOT EXISTS "term history" (
408
+ "created at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
409
+ , "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
410
+ , "id" SERIAL NOT NULL PRIMARY KEY
411
+ , "references-term" INTEGER NOT NULL
412
+ , FOREIGN KEY ("references-term") REFERENCES "term" ("id")
413
+ );`,
414
+ ]);
415
+ });
416
+ });