typesql-cli 0.18.4 → 0.18.6

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.
Files changed (37) hide show
  1. package/code-generator2.d.ts.map +1 -1
  2. package/code-generator2.js +2 -1
  3. package/code-generator2.js.map +1 -1
  4. package/dialects/postgres.d.ts +2 -1
  5. package/dialects/postgres.d.ts.map +1 -1
  6. package/dialects/postgres.js +13 -1
  7. package/dialects/postgres.js.map +1 -1
  8. package/drivers/postgres.d.ts +2 -1
  9. package/drivers/postgres.d.ts.map +1 -1
  10. package/drivers/postgres.js.map +1 -1
  11. package/drivers/types.d.ts +2 -2
  12. package/drivers/types.d.ts.map +1 -1
  13. package/package.json +1 -1
  14. package/postgres-query-analyzer/case-nullability-checker.d.ts +3 -0
  15. package/postgres-query-analyzer/case-nullability-checker.d.ts.map +1 -0
  16. package/postgres-query-analyzer/case-nullability-checker.js +110 -0
  17. package/postgres-query-analyzer/case-nullability-checker.js.map +1 -0
  18. package/postgres-query-analyzer/describe.d.ts.map +1 -1
  19. package/postgres-query-analyzer/describe.js +4 -4
  20. package/postgres-query-analyzer/describe.js.map +1 -1
  21. package/postgres-query-analyzer/enum-parser.d.ts +2 -1
  22. package/postgres-query-analyzer/enum-parser.d.ts.map +1 -1
  23. package/postgres-query-analyzer/enum-parser.js.map +1 -1
  24. package/postgres-query-analyzer/nullability-checker.d.ts +3 -0
  25. package/postgres-query-analyzer/nullability-checker.d.ts.map +1 -0
  26. package/postgres-query-analyzer/nullability-checker.js +110 -0
  27. package/postgres-query-analyzer/nullability-checker.js.map +1 -0
  28. package/postgres-query-analyzer/traverse.d.ts +2 -2
  29. package/postgres-query-analyzer/traverse.d.ts.map +1 -1
  30. package/postgres-query-analyzer/traverse.js +266 -85
  31. package/postgres-query-analyzer/traverse.js.map +1 -1
  32. package/sqlite-query-analyzer/replace-list-params.d.ts +0 -1
  33. package/sqlite-query-analyzer/replace-list-params.d.ts.map +1 -1
  34. package/sqlite-query-analyzer/replace-list-params.js +0 -57
  35. package/sqlite-query-analyzer/replace-list-params.js.map +1 -1
  36. package/sqlite-query-analyzer/types.d.ts +3 -1
  37. package/sqlite-query-analyzer/types.d.ts.map +1 -1
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluatesTrueIfNull = evaluatesTrueIfNull;
4
+ const PostgreSQLParser_1 = require("@wsporto/typesql-parser/postgres/PostgreSQLParser");
5
+ const select_columns_1 = require("../mysql-query-analyzer/select-columns");
6
+ const typesql_parser_1 = require("@wsporto/typesql-parser");
7
+ function getSingleColumnRefOrNull(elseExpr) {
8
+ var _a;
9
+ if (((_a = elseExpr.children) === null || _a === void 0 ? void 0 : _a.length) != 1) {
10
+ return null;
11
+ }
12
+ const child = elseExpr.children[0];
13
+ if (child instanceof PostgreSQLParser_1.ColumnrefContext) {
14
+ return child;
15
+ }
16
+ if (child instanceof typesql_parser_1.ParserRuleContext) { //composite
17
+ return getSingleColumnRefOrNull(child);
18
+ }
19
+ return null;
20
+ }
21
+ function evaluatesTrueIfNull(elseExpr, a_expr) {
22
+ // Can only infer if the elseExpr is a single column;
23
+ const columnRef = getSingleColumnRefOrNull(elseExpr.a_expr());
24
+ if (!columnRef) {
25
+ return false;
26
+ }
27
+ const a_expr_qual = a_expr.a_expr_qual();
28
+ if (a_expr_qual) {
29
+ return evaluatesTrueIfNull_a_expr_qual(a_expr_qual, (0, select_columns_1.splitName)(columnRef.getText()));
30
+ }
31
+ return false;
32
+ }
33
+ function evaluatesTrueIfNull_a_expr_qual(a_expr_qual, field) {
34
+ const a_expr_lessless = a_expr_qual.a_expr_lessless();
35
+ if (a_expr_lessless) {
36
+ return evaluatesTrueIfNull_a_expr_lessless(a_expr_lessless, field);
37
+ }
38
+ return false;
39
+ }
40
+ function evaluatesTrueIfNull_a_expr_lessless(a_expr_lessless, field) {
41
+ const a_expr_or = a_expr_lessless.a_expr_or_list()[0];
42
+ if (a_expr_or) {
43
+ return evaluatesTrueIfNull_a_expr_or(a_expr_or, field);
44
+ }
45
+ return false;
46
+ }
47
+ //a_expr_or: "valueisnotnulland(id>0orvalueisnotnull)"
48
+ //a_expr_or: "valueisnotnullor(id>0orvalueisnotnull)"
49
+ function evaluatesTrueIfNull_a_expr_or(a_expr_or, field) {
50
+ const a_expr_and = a_expr_or.a_expr_and_list();
51
+ if (a_expr_and) {
52
+ //1. valueisnotnull
53
+ //2. (id>0orvalueisnotnull)
54
+ const result = a_expr_and.some(a_expr_and => evaluatesTrueIfNull_a_expr_and(a_expr_and, field));
55
+ return result;
56
+ }
57
+ return false;
58
+ }
59
+ function evaluatesTrueIfNull_a_expr_and(a_expr_and, field) {
60
+ const a_expr_between_list = a_expr_and.a_expr_between_list();
61
+ if (a_expr_between_list) {
62
+ return a_expr_between_list.every(a_expr_between => evaluatesTrueIfNull_a_expr_between(a_expr_between, field));
63
+ }
64
+ return false;
65
+ }
66
+ function evaluatesTrueIfNull_a_expr_between(a_expr_between, field) {
67
+ const a_expr_in = a_expr_between.a_expr_in_list()[0];
68
+ if (a_expr_in) {
69
+ return evaluatesTrueIfNull_a_expr_in(a_expr_in, field);
70
+ }
71
+ return false;
72
+ }
73
+ function evaluatesTrueIfNull_a_expr_in(a_expr_in, field) {
74
+ const a_expr_unary_not = a_expr_in.a_expr_unary_not();
75
+ if (a_expr_unary_not) {
76
+ return evaluatesTrueIfNull_a_expr_unary_not(a_expr_unary_not, field);
77
+ }
78
+ return false;
79
+ }
80
+ function evaluatesTrueIfNull_a_expr_unary_not(a_expr_unary_not, field) {
81
+ const a_expr_isnull = a_expr_unary_not.a_expr_isnull();
82
+ if (a_expr_isnull) {
83
+ return evaluatesTrueIfNull_a_expr_isnull(a_expr_isnull, field);
84
+ }
85
+ return false;
86
+ }
87
+ function evaluatesTrueIfNull_a_expr_isnull(a_expr_isnull, field) {
88
+ const a_expr_is_not = a_expr_isnull.a_expr_is_not();
89
+ if (a_expr_is_not) {
90
+ const a_expr_compare = a_expr_is_not.a_expr_compare();
91
+ if (!a_expr_compare) {
92
+ return false;
93
+ }
94
+ const columnRef = getSingleColumnRefOrNull(a_expr_compare);
95
+ if (!columnRef) {
96
+ return false;
97
+ }
98
+ const fieldName = (0, select_columns_1.splitName)(columnRef.getText());
99
+ if (fieldName.name === field.name && (field.prefix === fieldName.prefix || fieldName.prefix === '' || field.prefix === '')
100
+ && a_expr_is_not.IS() && a_expr_is_not.NULL_P()) {
101
+ if (a_expr_is_not.NOT()) {
102
+ return false;
103
+ }
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
+ return false;
109
+ }
110
+ //# sourceMappingURL=nullability-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullability-checker.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/nullability-checker.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { DynamicSqlInfo2 } from '../mysql-query-analyzer/types';
4
4
  import { QueryType } from '../types';
5
5
  import { Relation2 } from '../sqlite-query-analyzer/sqlite-describe-nested-query';
6
6
  import { CheckConstraintResult } from '../drivers/postgres';
7
- import { JsonType, PostgresSimpleType } from '../sqlite-query-analyzer/types';
7
+ import { JsonType, PostgresEnumType, PostgresSimpleType } from '../sqlite-query-analyzer/types';
8
8
  import { UserFunctionSchema } from './types';
9
9
  export type NotNullInfo = {
10
10
  table_schema: string;
@@ -32,7 +32,7 @@ export type PostgresTraverseResult = {
32
32
  };
33
33
  export type ParamInfo = {
34
34
  isNotNull: boolean;
35
- checkConstraint?: string;
35
+ checkConstraint?: PostgresEnumType;
36
36
  };
37
37
  export type Relation3 = {
38
38
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgxC,WAAW,EAA4L,MAAM,mDAAmD,CAAC;AAExhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAa,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,uDAAuD,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAA+C,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE3H,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC5B,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACnC,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC;IACxC,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACnC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAA;AA2BD,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAA;AAED,wBAAgB,cAAc,IAAI,eAAe,CAKhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,sBAAsB,CAmD/M;AA2lDD,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAWF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,eAAe,CAAC;AAEnE,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA6BtE"}
1
+ {"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqyC,WAAW,EAA4L,MAAM,mDAAmD,CAAC;AAE7iD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAa,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,uDAAuD,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAA8D,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE5J,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC5B,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACnC,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC;IACxC,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACnC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACnC,CAAA;AA8BD,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAA;AAED,wBAAgB,cAAc,IAAI,eAAe,CAKhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,sBAAsB,CAmD/M;AAqtDD,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAWF,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,eAAe,CAAC;AAEnE,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA6BtE"}