@carbonorm/carbonnode 6.0.20 → 6.1.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/README.md +46 -1
- package/dist/constants/C6Constants.d.ts +342 -338
- package/dist/executors/SqlExecutor.d.ts +1 -0
- package/dist/index.cjs.js +538 -254
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +531 -255
- package/dist/index.esm.js.map +1 -1
- package/dist/orm/builders/AggregateBuilder.d.ts +5 -1
- package/dist/orm/builders/ConditionBuilder.d.ts +2 -3
- package/dist/orm/builders/ExpressionSerializer.d.ts +22 -0
- package/dist/orm/builders/PaginationBuilder.d.ts +4 -6
- package/dist/orm/queryHelpers.d.ts +12 -1
- package/dist/types/mysqlTypes.d.ts +6 -1
- package/dist/types/ormInterfaces.d.ts +6 -5
- package/package.json +2 -2
- package/scripts/assets/handlebars/C6.test.ts.handlebars +4 -4
- package/src/__tests__/expressServer.e2e.test.ts +26 -17
- package/src/__tests__/httpExecutorSingular.e2e.test.ts +53 -14
- package/src/__tests__/normalizeSingularRequest.test.ts +26 -8
- package/src/__tests__/sakila-db/C6.js +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.json +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.sql +1 -1
- package/src/__tests__/sakila-db/C6.sqlAllowList.json +1 -1
- package/src/__tests__/sakila-db/C6.test.ts +4 -4
- package/src/__tests__/sakila-db/C6.ts +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.json +6 -6
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +19 -12
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +10 -10
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +4 -4
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.join.json +10 -10
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +6 -6
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
- package/src/__tests__/sqlBuilders.complex.test.ts +62 -74
- package/src/__tests__/sqlBuilders.expressions.test.ts +58 -30
- package/src/__tests__/sqlBuilders.test.ts +68 -4
- package/src/constants/C6Constants.ts +3 -1
- package/src/executors/HttpExecutor.ts +2 -1
- package/src/executors/SqlExecutor.ts +25 -1
- package/src/index.ts +1 -0
- package/src/orm/builders/AggregateBuilder.ts +67 -106
- package/src/orm/builders/ConditionBuilder.ts +69 -93
- package/src/orm/builders/ExpressionSerializer.ts +275 -0
- package/src/orm/builders/PaginationBuilder.ts +24 -34
- package/src/orm/queryHelpers.ts +29 -0
- package/src/types/mysqlTypes.ts +130 -9
- package/src/types/ormInterfaces.ts +6 -7
- package/src/utils/normalizeSingularRequest.ts +11 -4
package/README.md
CHANGED
|
@@ -264,7 +264,7 @@ const actors = await Actor.Get({
|
|
|
264
264
|
Actor.LAST_NAME,
|
|
265
265
|
],
|
|
266
266
|
[C6.WHERE]: {
|
|
267
|
-
[Actor.LAST_NAME]:
|
|
267
|
+
[Actor.LAST_NAME]: [C6.LIKE, [C6.LIT, "%PITT%"]],
|
|
268
268
|
},
|
|
269
269
|
[C6.PAGINATION]: { [C6.LIMIT]: 10 },
|
|
270
270
|
});
|
|
@@ -287,6 +287,51 @@ await Actor.Delete({
|
|
|
287
287
|
});
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
+
### SQL Expression Grammar
|
|
291
|
+
|
|
292
|
+
CarbonNode 6.1.0 uses one tuple-based grammar for SQL expressions.
|
|
293
|
+
|
|
294
|
+
| Purpose | Canonical syntax |
|
|
295
|
+
| --- | --- |
|
|
296
|
+
| Known function | `[C6.FUNCTION_NAME, ...args]` |
|
|
297
|
+
| Custom function | `[C6.CALL, 'FUNCTION_NAME', ...args]` |
|
|
298
|
+
| Alias | `[C6.AS, expression, 'alias']` |
|
|
299
|
+
| DISTINCT modifier | `[C6.DISTINCT, expression]` |
|
|
300
|
+
| String / scalar literal binding | `[C6.LIT, value]` |
|
|
301
|
+
| ORDER term | `[expression, 'ASC' | 'DESC']` |
|
|
302
|
+
|
|
303
|
+
Rules:
|
|
304
|
+
|
|
305
|
+
- Bare strings are treated as references only (for example `actor.first_name` or a SELECT alias).
|
|
306
|
+
- Non-reference strings must be wrapped with `[C6.LIT, ...]`.
|
|
307
|
+
- Legacy positional alias tuples are removed. Use `[C6.AS, expression, alias]`.
|
|
308
|
+
- Object-rooted function expressions are removed. Use tuple syntax.
|
|
309
|
+
|
|
310
|
+
Migration examples:
|
|
311
|
+
|
|
312
|
+
```typescript
|
|
313
|
+
// Before (removed)
|
|
314
|
+
[C6.COUNT, Actor.ACTOR_ID, C6.AS, "cnt"]
|
|
315
|
+
|
|
316
|
+
// After
|
|
317
|
+
[C6.AS, [C6.COUNT, Actor.ACTOR_ID], "cnt"]
|
|
318
|
+
|
|
319
|
+
// Before (removed)
|
|
320
|
+
[C6.ST_GEOMFROMTEXT, ["POINT(-104.89 39.39)", 4326]]
|
|
321
|
+
|
|
322
|
+
// After
|
|
323
|
+
[C6.ST_GEOMFROMTEXT, [C6.LIT, "POINT(-104.89 39.39)"], 4326]
|
|
324
|
+
|
|
325
|
+
// ORDER BY example
|
|
326
|
+
[C6.PAGINATION]: {
|
|
327
|
+
[C6.ORDER]: [
|
|
328
|
+
[[C6.ST_DISTANCE_SPHERE, Property_Units.LOCATION, targetPoint], "ASC"],
|
|
329
|
+
[Actor.LAST_NAME, "DESC"],
|
|
330
|
+
],
|
|
331
|
+
[C6.LIMIT]: 25,
|
|
332
|
+
}
|
|
333
|
+
```
|
|
334
|
+
|
|
290
335
|
Example response payloads (HTTP executor):
|
|
291
336
|
|
|
292
337
|
GET
|