typesql-cli 0.18.3 → 0.18.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.
- package/code-generator2.d.ts.map +1 -1
- package/code-generator2.js +14 -2
- package/code-generator2.js.map +1 -1
- package/dialects/postgres.d.ts +2 -1
- package/dialects/postgres.d.ts.map +1 -1
- package/dialects/postgres.js +18 -1
- package/dialects/postgres.js.map +1 -1
- package/drivers/postgres.d.ts +4 -1
- package/drivers/postgres.d.ts.map +1 -1
- package/drivers/postgres.js +21 -0
- package/drivers/postgres.js.map +1 -1
- package/drivers/types.d.ts +4 -2
- package/drivers/types.d.ts.map +1 -1
- package/mysql-query-analyzer/select-columns.d.ts +1 -0
- package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
- package/mysql-query-analyzer/select-columns.js +13 -0
- package/mysql-query-analyzer/select-columns.js.map +1 -1
- package/package.json +1 -1
- package/postgres-query-analyzer/case-nullability-checker.d.ts +3 -0
- package/postgres-query-analyzer/case-nullability-checker.d.ts.map +1 -0
- package/postgres-query-analyzer/case-nullability-checker.js +110 -0
- package/postgres-query-analyzer/case-nullability-checker.js.map +1 -0
- package/postgres-query-analyzer/describe.d.ts.map +1 -1
- package/postgres-query-analyzer/describe.js +9 -8
- package/postgres-query-analyzer/describe.js.map +1 -1
- package/postgres-query-analyzer/enum-parser.d.ts +2 -1
- package/postgres-query-analyzer/enum-parser.d.ts.map +1 -1
- package/postgres-query-analyzer/enum-parser.js.map +1 -1
- package/postgres-query-analyzer/nullability-checker.d.ts +3 -0
- package/postgres-query-analyzer/nullability-checker.d.ts.map +1 -0
- package/postgres-query-analyzer/nullability-checker.js +110 -0
- package/postgres-query-analyzer/nullability-checker.js.map +1 -0
- package/postgres-query-analyzer/parser.d.ts +3 -2
- package/postgres-query-analyzer/parser.d.ts.map +1 -1
- package/postgres-query-analyzer/parser.js +19 -5
- package/postgres-query-analyzer/parser.js.map +1 -1
- package/postgres-query-analyzer/traverse.d.ts +19 -8
- package/postgres-query-analyzer/traverse.d.ts.map +1 -1
- package/postgres-query-analyzer/traverse.js +488 -174
- package/postgres-query-analyzer/traverse.js.map +1 -1
- package/postgres-query-analyzer/types.d.ts +8 -0
- package/postgres-query-analyzer/types.d.ts.map +1 -1
- package/sqlite-query-analyzer/replace-list-params.d.ts +0 -1
- package/sqlite-query-analyzer/replace-list-params.d.ts.map +1 -1
- package/sqlite-query-analyzer/replace-list-params.js +0 -57
- package/sqlite-query-analyzer/replace-list-params.js.map +1 -1
- package/sqlite-query-analyzer/types.d.ts +8 -2
- 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=case-nullability-checker.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"case-nullability-checker.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/case-nullability-checker.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAc,WAAW,EAAO,MAAM,YAAY,CAAC;AAO1D,OAAO,EAA4C,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA0GtF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAiBjI"}
|
@@ -11,10 +11,10 @@ const Either_1 = require("fp-ts/lib/Either");
|
|
11
11
|
const describe_query_1 = require("../describe-query");
|
12
12
|
const describe_dynamic_query_1 = require("../describe-dynamic-query");
|
13
13
|
function describeQueryRefine(describeParameters) {
|
14
|
-
const { sql, dbSchema, postgresDescribeResult, enumsTypes, checkConstraints, namedParameters } = describeParameters;
|
14
|
+
const { sql, dbSchema, postgresDescribeResult, enumsTypes, checkConstraints, namedParameters, userFunctions } = describeParameters;
|
15
15
|
const generateNestedInfo = (0, describe_query_1.hasAnnotation)(sql, '@nested');
|
16
16
|
const generateDynamicQueryInfo = (0, describe_query_1.hasAnnotation)(sql, '@dynamicQuery');
|
17
|
-
const parseResult = (0, parser_1.safeParseSql)(sql, dbSchema, checkConstraints, { collectNestedInfo: generateNestedInfo, collectDynamicQueryInfo: generateDynamicQueryInfo });
|
17
|
+
const parseResult = (0, parser_1.safeParseSql)(sql, dbSchema, checkConstraints, userFunctions, { collectNestedInfo: generateNestedInfo, collectDynamicQueryInfo: generateDynamicQueryInfo });
|
18
18
|
if (parseResult.isErr()) {
|
19
19
|
return (0, neverthrow_1.err)({
|
20
20
|
name: 'ParserError',
|
@@ -70,16 +70,16 @@ function createIndexToNameMap(names) {
|
|
70
70
|
return indexToName;
|
71
71
|
}
|
72
72
|
function mapToColumnInfo(col, posgresTypes, enumTypes, checkConstraints, colInfo) {
|
73
|
-
var _a;
|
74
73
|
const constraintKey = `[${colInfo.table_schema}][${colInfo.table_name}][${colInfo.column_name}]`;
|
75
74
|
return {
|
76
75
|
name: col.name,
|
77
|
-
notNull: !colInfo.is_nullable,
|
78
|
-
type:
|
76
|
+
notNull: !colInfo.is_nullable || colInfo.column_default === true,
|
77
|
+
type: createType(col.typeId, posgresTypes, enumTypes.get(col.typeId), checkConstraints[constraintKey], colInfo.jsonType),
|
79
78
|
table: colInfo.table_name
|
80
79
|
};
|
81
80
|
}
|
82
81
|
function createType(typeId, postgresTypes, enumType, checkConstraint, jsonType) {
|
82
|
+
var _a;
|
83
83
|
if (enumType) {
|
84
84
|
return createEnumType(enumType);
|
85
85
|
}
|
@@ -89,7 +89,7 @@ function createType(typeId, postgresTypes, enumType, checkConstraint, jsonType)
|
|
89
89
|
if (jsonType) {
|
90
90
|
return jsonType;
|
91
91
|
}
|
92
|
-
return postgresTypes[typeId];
|
92
|
+
return (_a = postgresTypes[typeId]) !== null && _a !== void 0 ? _a : 'unknown';
|
93
93
|
}
|
94
94
|
function createEnumType(enumList) {
|
95
95
|
const enumListStr = enumList.map(col => `'${col.enumlabel}'`).join(',');
|
@@ -104,8 +104,8 @@ function mapToParamDef(postgresTypes, enumTypes, paramName, paramType, checkCons
|
|
104
104
|
};
|
105
105
|
}
|
106
106
|
function describeQuery(postgres, sql, namedParameters) {
|
107
|
-
return neverthrow_1.ResultAsync.combine([(0, postgres_1.loadDbSchema)(postgres), (0, postgres_1.loadEnumsMap)(postgres), (0, postgres_1.loadCheckConstraints)(postgres)])
|
108
|
-
.andThen(([dbSchema, enumsTypes, checkConstraints]) => {
|
107
|
+
return neverthrow_1.ResultAsync.combine([(0, postgres_1.loadDbSchema)(postgres), (0, postgres_1.loadEnumsMap)(postgres), (0, postgres_1.loadCheckConstraints)(postgres), (0, postgres_1.loadUserFunctions)(postgres)])
|
108
|
+
.andThen(([dbSchema, enumsTypes, checkConstraints, userFunctions]) => {
|
109
109
|
return (0, postgres_1.postgresDescribe)(postgres, sql)
|
110
110
|
.andThen(analyzeResult => {
|
111
111
|
const describeParameters = {
|
@@ -114,6 +114,7 @@ function describeQuery(postgres, sql, namedParameters) {
|
|
114
114
|
dbSchema,
|
115
115
|
enumsTypes,
|
116
116
|
checkConstraints,
|
117
|
+
userFunctions,
|
117
118
|
namedParameters
|
118
119
|
};
|
119
120
|
return describeQueryRefine(describeParameters);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"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"}
|
@@ -1,2 +1,3 @@
|
|
1
|
-
|
1
|
+
import { PostgresEnumType } from '../sqlite-query-analyzer/types';
|
2
|
+
export declare function transformCheckToEnum(checkStr: string): PostgresEnumType | null;
|
2
3
|
//# sourceMappingURL=enum-parser.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"enum-parser.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/enum-parser.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,
|
1
|
+
{"version":3,"file":"enum-parser.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/enum-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAyB9E"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"enum-parser.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/enum-parser.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"enum-parser.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/enum-parser.ts"],"names":[],"mappings":";;AAEA,oDAyBC;AAzBD,SAAgB,oBAAoB,CAAC,QAAgB;IACpD,wCAAwC;IACxC,MAAM,aAAa,GAAG,qCAAqC,CAAC;IAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACvD,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,uCAAuC;QAE1F,iEAAiE;QACjE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,KAAK,GAAG,CAAC;QACrB,CAAC;QAED,+DAA+D;QAC/D,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nullability-checker.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/nullability-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2K,aAAa,EAAE,mBAAmB,EAAoB,MAAM,mDAAmD,CAAC;AAmBlS,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAWjG"}
|
@@ -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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"}
|
@@ -2,6 +2,7 @@ import { PostgresTraverseResult } from './traverse';
|
|
2
2
|
import { PostgresColumnSchema } from '../drivers/types';
|
3
3
|
import { Result } from 'neverthrow';
|
4
4
|
import { CheckConstraintResult } from '../drivers/postgres';
|
5
|
-
|
6
|
-
export declare function
|
5
|
+
import { UserFunctionSchema } from './types';
|
6
|
+
export declare function parseSql(sql: string, dbSchema: PostgresColumnSchema[], checkConstraints: CheckConstraintResult, userFunctions: UserFunctionSchema[], options?: import("./traverse").TraverseOptions): PostgresTraverseResult;
|
7
|
+
export declare function safeParseSql(sql: string, dbSchema: PostgresColumnSchema[], checkConstraints: CheckConstraintResult, userFunctions: UserFunctionSchema[], options?: import("./traverse").TraverseOptions): Result<PostgresTraverseResult, string>;
|
7
8
|
//# sourceMappingURL=parser.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,sBAAsB,EAAe,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,sBAAsB,EAAe,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,OAAO,uCAAmB,GAAG,sBAAsB,CASxM;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,OAAO,uCAAmB,GAAG,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAS5N"}
|
@@ -1,18 +1,32 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
3
|
+
var t = {};
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
5
|
+
t[p] = s[p];
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
9
|
+
t[p[i]] = s[p[i]];
|
10
|
+
}
|
11
|
+
return t;
|
12
|
+
};
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
14
|
exports.parseSql = parseSql;
|
4
15
|
exports.safeParseSql = safeParseSql;
|
5
16
|
const postgres_1 = require("@wsporto/typesql-parser/postgres");
|
6
17
|
const traverse_1 = require("./traverse");
|
7
18
|
const neverthrow_1 = require("neverthrow");
|
8
|
-
function parseSql(sql, dbSchema, checkConstraints, options = (0, traverse_1.defaultOptions)()) {
|
19
|
+
function parseSql(sql, dbSchema, checkConstraints, userFunctions, options = (0, traverse_1.defaultOptions)()) {
|
9
20
|
const parser = (0, postgres_1.parseSql)(sql);
|
10
|
-
const traverseResult = (0, traverse_1.traverseSmt)(parser.stmt(), dbSchema, checkConstraints, options);
|
11
|
-
return traverseResult
|
21
|
+
const traverseResult = (0, traverse_1.traverseSmt)(parser.stmt(), dbSchema, checkConstraints, userFunctions, options);
|
22
|
+
return Object.assign(Object.assign({}, traverseResult), { columns: traverseResult.columns.map((_a) => {
|
23
|
+
var { column_key: _ } = _a, rest = __rest(_a, ["column_key"]);
|
24
|
+
return rest;
|
25
|
+
}) });
|
12
26
|
}
|
13
|
-
function safeParseSql(sql, dbSchema, checkConstraints, options = (0, traverse_1.defaultOptions)()) {
|
27
|
+
function safeParseSql(sql, dbSchema, checkConstraints, userFunctions, options = (0, traverse_1.defaultOptions)()) {
|
14
28
|
try {
|
15
|
-
const result = parseSql(sql, dbSchema, checkConstraints, options);
|
29
|
+
const result = parseSql(sql, dbSchema, checkConstraints, userFunctions, options);
|
16
30
|
return (0, neverthrow_1.ok)(result);
|
17
31
|
}
|
18
32
|
catch (e) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/parser.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAOA,4BASC;AAED,oCASC;AA3BD,+DAAyE;AACzE,yCAAiF;AAEjF,2CAA6C;AAI7C,SAAgB,QAAQ,CAAC,GAAW,EAAE,QAAgC,EAAE,gBAAuC,EAAE,aAAmC,EAAE,OAAO,GAAG,IAAA,yBAAc,GAAE;IAC/K,MAAM,MAAM,GAAG,IAAA,mBAAS,EAAC,GAAG,CAAC,CAAC;IAE9B,MAAM,cAAc,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEtG,uCACI,cAAc,KACjB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAA0B,EAAE,EAAE;gBAA9B,EAAE,UAAU,EAAE,CAAC,OAAW,EAAN,IAAI,cAAxB,cAA0B,CAAF;YAAO,OAAA,IAAI,CAAA;SAAA,CAAC,IACxE;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,QAAgC,EAAE,gBAAuC,EAAE,aAAmC,EAAE,OAAO,GAAG,IAAA,yBAAc,GAAE;IACnL,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACjF,OAAO,IAAA,eAAE,EAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,CAAU,CAAC;QACzB,OAAO,IAAA,gBAAG,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACF,CAAC"}
|
@@ -4,7 +4,8 @@ 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
|
+
import { UserFunctionSchema } from './types';
|
8
9
|
export type NotNullInfo = {
|
9
10
|
table_schema: string;
|
10
11
|
table_name: string;
|
@@ -12,13 +13,10 @@ export type NotNullInfo = {
|
|
12
13
|
is_nullable: boolean;
|
13
14
|
original_is_nullable?: boolean;
|
14
15
|
column_default?: true;
|
16
|
+
column_key?: 'PRI' | 'UNI' | '';
|
15
17
|
type: PostgresSimpleType;
|
16
18
|
jsonType?: JsonType;
|
17
|
-
recordTypes?:
|
18
|
-
};
|
19
|
-
export type RecordType = {
|
20
|
-
type: PostgresSimpleType;
|
21
|
-
notNull: boolean;
|
19
|
+
recordTypes?: NotNullInfo[];
|
22
20
|
};
|
23
21
|
export type PostgresTraverseResult = {
|
24
22
|
queryType: QueryType;
|
@@ -34,7 +32,7 @@ export type PostgresTraverseResult = {
|
|
34
32
|
};
|
35
33
|
export type ParamInfo = {
|
36
34
|
isNotNull: boolean;
|
37
|
-
checkConstraint?:
|
35
|
+
checkConstraint?: PostgresEnumType;
|
38
36
|
};
|
39
37
|
export type Relation3 = {
|
40
38
|
name: string;
|
@@ -47,5 +45,18 @@ export type TraverseOptions = {
|
|
47
45
|
collectDynamicQueryInfo?: boolean;
|
48
46
|
};
|
49
47
|
export declare function defaultOptions(): TraverseOptions;
|
50
|
-
export declare function traverseSmt(stmt: StmtContext, dbSchema: PostgresColumnSchema[], checkConstraints: CheckConstraintResult, options: TraverseOptions): PostgresTraverseResult;
|
48
|
+
export declare function traverseSmt(stmt: StmtContext, dbSchema: PostgresColumnSchema[], checkConstraints: CheckConstraintResult, userFunctions: UserFunctionSchema[], options: TraverseOptions): PostgresTraverseResult;
|
49
|
+
export type TableReturnType = {
|
50
|
+
kind: 'table';
|
51
|
+
columns: {
|
52
|
+
name: string;
|
53
|
+
type: string;
|
54
|
+
}[];
|
55
|
+
};
|
56
|
+
export type SetofReturnType = {
|
57
|
+
kind: 'setof';
|
58
|
+
table: string;
|
59
|
+
};
|
60
|
+
export type FunctionReturnType = TableReturnType | SetofReturnType;
|
61
|
+
export declare function parseReturnType(returnType: string): FunctionReturnType;
|
51
62
|
//# sourceMappingURL=traverse.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,
|
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;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;AA2rDD,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"}
|