typesql-cli 0.14.1 → 0.15.0-experimental.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.
Files changed (89) hide show
  1. package/cli.js +9 -0
  2. package/cli.js.map +1 -1
  3. package/code-generator.d.ts.map +1 -1
  4. package/code-generator.js +7 -0
  5. package/code-generator.js.map +1 -1
  6. package/code-generator2.d.ts +4 -0
  7. package/code-generator2.d.ts.map +1 -0
  8. package/code-generator2.js +219 -0
  9. package/code-generator2.js.map +1 -0
  10. package/describe-nested-query.d.ts +1 -1
  11. package/describe-nested-query.d.ts.map +1 -1
  12. package/describe-nested-query.js +4 -4
  13. package/describe-nested-query.js.map +1 -1
  14. package/describe-query.d.ts +1 -1
  15. package/describe-query.d.ts.map +1 -1
  16. package/describe-query.js +14 -4
  17. package/describe-query.js.map +1 -1
  18. package/dialects/postgres.d.ts +5 -0
  19. package/dialects/postgres.d.ts.map +1 -0
  20. package/dialects/postgres.js +91 -0
  21. package/dialects/postgres.js.map +1 -0
  22. package/drivers/postgres.d.ts +12 -0
  23. package/drivers/postgres.d.ts.map +1 -0
  24. package/drivers/postgres.js +109 -0
  25. package/drivers/postgres.js.map +1 -0
  26. package/drivers/types.d.ts +27 -0
  27. package/drivers/types.d.ts.map +1 -0
  28. package/drivers/types.js +3 -0
  29. package/drivers/types.js.map +1 -0
  30. package/mysql-mapping.d.ts +3 -3
  31. package/mysql-mapping.d.ts.map +1 -1
  32. package/mysql-query-analyzer/collect-constraints.d.ts +2 -2
  33. package/mysql-query-analyzer/collect-constraints.d.ts.map +1 -1
  34. package/mysql-query-analyzer/infer-column-nullability.d.ts +1 -1
  35. package/mysql-query-analyzer/infer-column-nullability.d.ts.map +1 -1
  36. package/mysql-query-analyzer/infer-column-nullability.js +29 -29
  37. package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
  38. package/mysql-query-analyzer/infer-param-nullability.d.ts +2 -2
  39. package/mysql-query-analyzer/infer-param-nullability.d.ts.map +1 -1
  40. package/mysql-query-analyzer/infer-param-nullability.js +6 -5
  41. package/mysql-query-analyzer/infer-param-nullability.js.map +1 -1
  42. package/mysql-query-analyzer/parse.d.ts +3 -2
  43. package/mysql-query-analyzer/parse.d.ts.map +1 -1
  44. package/mysql-query-analyzer/parse.js +16 -36
  45. package/mysql-query-analyzer/parse.js.map +1 -1
  46. package/mysql-query-analyzer/select-columns.d.ts +3 -3
  47. package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
  48. package/mysql-query-analyzer/select-columns.js +33 -33
  49. package/mysql-query-analyzer/select-columns.js.map +1 -1
  50. package/mysql-query-analyzer/traverse.d.ts +1 -1
  51. package/mysql-query-analyzer/traverse.d.ts.map +1 -1
  52. package/mysql-query-analyzer/traverse.js +36 -36
  53. package/mysql-query-analyzer/traverse.js.map +1 -1
  54. package/mysql-query-analyzer/types.d.ts.map +1 -1
  55. package/mysql-query-analyzer/verify-multiple-result.d.ts +1 -1
  56. package/mysql-query-analyzer/verify-multiple-result.d.ts.map +1 -1
  57. package/mysql-query-analyzer/verify-multiple-result.js +7 -7
  58. package/mysql-query-analyzer/verify-multiple-result.js.map +1 -1
  59. package/package.json +52 -49
  60. package/postgres-query-analyzer/describe.d.ts +8 -0
  61. package/postgres-query-analyzer/describe.d.ts.map +1 -0
  62. package/postgres-query-analyzer/describe.js +100 -0
  63. package/postgres-query-analyzer/describe.js.map +1 -0
  64. package/postgres-query-analyzer/parser.d.ts +11 -0
  65. package/postgres-query-analyzer/parser.d.ts.map +1 -0
  66. package/postgres-query-analyzer/parser.js +11 -0
  67. package/postgres-query-analyzer/parser.js.map +1 -0
  68. package/postgres-query-analyzer/traverse.d.ts +5 -0
  69. package/postgres-query-analyzer/traverse.d.ts.map +1 -0
  70. package/postgres-query-analyzer/traverse.js +704 -0
  71. package/postgres-query-analyzer/traverse.js.map +1 -0
  72. package/sqlite-query-analyzer/code-generator.js +8 -1
  73. package/sqlite-query-analyzer/code-generator.js.map +1 -1
  74. package/sqlite-query-analyzer/enum-parser.js +1 -1
  75. package/sqlite-query-analyzer/enum-parser.js.map +1 -1
  76. package/sqlite-query-analyzer/parser.js +2 -2
  77. package/sqlite-query-analyzer/parser.js.map +1 -1
  78. package/sqlite-query-analyzer/replace-list-params.d.ts +2 -0
  79. package/sqlite-query-analyzer/replace-list-params.d.ts.map +1 -1
  80. package/sqlite-query-analyzer/replace-list-params.js +39 -0
  81. package/sqlite-query-analyzer/replace-list-params.js.map +1 -1
  82. package/sqlite-query-analyzer/traverse.d.ts +1 -1
  83. package/sqlite-query-analyzer/traverse.d.ts.map +1 -1
  84. package/sqlite-query-analyzer/traverse.js +39 -18
  85. package/sqlite-query-analyzer/traverse.js.map +1 -1
  86. package/sqlite-query-analyzer/types.d.ts +1 -0
  87. package/sqlite-query-analyzer/types.d.ts.map +1 -1
  88. package/types.d.ts +10 -5
  89. package/types.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"describe-query.d.ts","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpG,OAAO,EAAE,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAiG5E;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAIjE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAoB1G;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,mBAuBxC;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAG5D"}
1
+ {"version":3,"file":"describe-query.d.ts","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpG,OAAO,EAAE,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAiG5E;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,KAAK,CAIjE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAoB1G;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,mBAiClF;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAG5D"}
package/describe-query.js CHANGED
@@ -18,7 +18,7 @@ const parse_1 = require("./mysql-query-analyzer/parse");
18
18
  const Either_1 = require("fp-ts/lib/Either");
19
19
  const queryExectutor_1 = require("./queryExectutor");
20
20
  function describeSql(dbSchema, sql) {
21
- const { sql: processedSql, namedParameters } = preprocessSql(sql);
21
+ const { sql: processedSql, namedParameters } = preprocessSql(sql, 'mysql');
22
22
  const queryInfo = (0, parse_1.extractQueryInfo)(sql, dbSchema);
23
23
  if (queryInfo.kind === 'Select') {
24
24
  const parametersDef = queryInfo.parameters.map((paramInfo, paramIndex) => {
@@ -124,7 +124,7 @@ function verifyNotInferred(type) {
124
124
  }
125
125
  function parseSql(client, sql) {
126
126
  return __awaiter(this, void 0, void 0, function* () {
127
- const { sql: processedSql } = preprocessSql(sql);
127
+ const { sql: processedSql } = preprocessSql(sql, 'mysql');
128
128
  const explainResult = yield (0, queryExectutor_1.explainSql)(client.client, processedSql);
129
129
  if ((0, Either_1.isLeft)(explainResult)) {
130
130
  return explainResult;
@@ -148,18 +148,28 @@ function parseSql(client, sql) {
148
148
  }
149
149
  //http://dev.mysql.com/doc/refman/8.0/en/identifiers.html
150
150
  //Permitted characters in unquoted identifiers: ASCII: [0-9,a-z,A-Z$_] (basic Latin letters, digits 0-9, dollar, underscore)
151
- function preprocessSql(sql) {
151
+ function preprocessSql(sql, dialect) {
152
152
  const lines = sql.split('\n');
153
153
  const regex = /:[a-zA-Z$_]+[a-zA-Z\d$_]*/g;
154
154
  let newSql = '';
155
155
  const allParameters = [];
156
+ let paramIndex = 1; // For PostgreSQL, to track $1, $2, $3, ...
156
157
  lines.forEach((line, index, array) => {
157
158
  var _a;
158
159
  let newLine = line;
159
160
  if (!line.trim().startsWith('--')) {
160
161
  const parameters = ((_a = line.match(regex)) === null || _a === void 0 ? void 0 : _a.map((param) => param.slice(1))) || [];
161
162
  allParameters.push(...parameters);
162
- newLine = line.replace(regex, '?');
163
+ if (dialect == 'postgres') {
164
+ parameters.forEach((param) => {
165
+ newLine = newLine.replace(`:${param}`, `$${paramIndex}`);
166
+ paramIndex++;
167
+ });
168
+ }
169
+ else {
170
+ // Replace named parameters with `?` for MySQL and sqlite
171
+ newLine = line.replace(regex, '?');
172
+ }
163
173
  }
164
174
  newSql += newLine;
165
175
  if (index !== array.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"describe-query.js","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-query.js","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":";;;;;;;;;;;AAOA,kCAiGC;AAYD,8CAIC;AAED,4BAoBC;AAID,sCAiCC;AAGD,sCAGC;AAxLD,wDAAgE;AAChE,6CAAoE;AAGpE,qDAA+D;AAE/D,SAAgB,WAAW,CAAC,QAAwB,EAAE,GAAW;IAChE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAA,wBAAgB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;YACxE,MAAM,QAAQ,GAAiB;gBAC9B,IAAI,EAAE,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,UAAU,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,UAAU,GAAG,CAAC,EAAE;gBAC5F,UAAU,EAAE,SAAS,CAAC,IAAI;gBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;aAC1B,CAAC;YACF,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAc;YAC5B,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,UAAU,EAAE,aAAa;SACzB,CAAC;QACF,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QACrD,CAAC;QACD,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAChC,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC5B,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAiB;YACnC;gBACC,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;aACb;YACD;gBACC,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;aACb;SACD,CAAC;QAEF,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;QACrH,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCACjD,KAAK,KACR,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,IAC9C,CAAC,CAAC;QACJ,MAAM,SAAS,GAAc;YAC5B,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,kBAAkB;SAC9B,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAiB;YACnC;gBACC,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;aACb;SACD,CAAC;QACF,MAAM,SAAS,GAAc;YAC5B,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,IAAI,EAAE,SAAS,CAAC,IAAI;SACpB,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,aAAa,GAAiB;YACnC;gBACC,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;aACb;SACD,CAAC;QACF,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;QACrH,MAAM,SAAS,GAAc;YAC5B,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE,aAAa;YACtB,UAAU;SACV,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA0B,EAAE,eAAyB;IAC/E,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QAC3C,MAAM,QAAQ,mCACV,KAAK,KACR,IAAI,EAAE,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,UAAU,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAC9E,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAe;IAChD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACvC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAsB,QAAQ,CAAC,MAAoB,EAAE,GAAW;;QAC/D,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,MAAM,IAAA,2BAAU,EAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpE,IAAI,IAAA,eAAM,EAAC,aAAa,CAAC,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC;QACtB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAe,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,IAAA,eAAM,EAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,OAAO,IAAA,aAAI,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACjB,MAAM,eAAe,GAAiB;gBACrC,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,CAAC,CAAC,OAAO;aACtB,CAAC;YACF,OAAO,IAAA,aAAI,EAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC;CAAA;AAED,yDAAyD;AACzD,4HAA4H;AAC5H,SAAgB,aAAa,CAAC,GAAW,EAAE,OAAwC;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,4BAA4B,CAAC;IAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,2CAA2C;IAC/D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;;QACpC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAa,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAI,EAAE,CAAC;YACrF,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAClC,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;gBAC3B,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;oBACzD,UAAU,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;YACJ,CAAC;iBACI,CAAC;gBACL,yDAAyD;gBACzD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QACD,MAAM,IAAI,OAAO,CAAC;QAClB,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,IAAI,CAAC;QAChB,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAoB;QACrC,GAAG,EAAE,MAAM;QACX,eAAe,EAAE,aAAa;KAC9B,CAAC;IACF,OAAO,YAAY,CAAC;AACrB,CAAC;AAED,qCAAqC;AACrC,SAAgB,aAAa,CAAC,GAAW,EAAE,UAAkB;IAC5D,MAAM,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TsType } from '../mysql-mapping';
2
+ import { PostgresType } from '../sqlite-query-analyzer/types';
3
+ export declare const postgresTypes: any;
4
+ export declare function mapColumnType(postgresType: PostgresType): TsType;
5
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/dialects/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,eAAO,MAAM,aAAa,EAmBrB,GAAG,CAAC;AAGT,wBAAgB,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAiEhE"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.postgresTypes = void 0;
4
+ exports.mapColumnType = mapColumnType;
5
+ exports.postgresTypes = {
6
+ 16: 'bool',
7
+ 17: 'bytea',
8
+ 18: 'char',
9
+ 19: 'name',
10
+ 20: 'int8',
11
+ 21: 'int2',
12
+ 23: 'int4',
13
+ 25: 'text',
14
+ 29: 'varchar',
15
+ 36: 'uuid',
16
+ 700: 'float4',
17
+ 701: 'float8',
18
+ 1082: 'date',
19
+ 1560: 'bit',
20
+ 1700: 'numeric',
21
+ 1042: 'bpchar',
22
+ 1043: 'varchar',
23
+ 2950: 'uuid',
24
+ };
25
+ function mapColumnType(postgresType) {
26
+ switch (postgresType) {
27
+ case 'bool':
28
+ return 'boolean';
29
+ case 'bool[]':
30
+ return 'boolean[]';
31
+ case 'bytea':
32
+ return 'ArrayBuffer';
33
+ case 'char':
34
+ return 'string';
35
+ case 'char[]':
36
+ return 'string';
37
+ case 'bpchar':
38
+ return 'string';
39
+ case 'bpchar[]':
40
+ return 'string[]';
41
+ case 'name':
42
+ return 'string';
43
+ case 'name[]':
44
+ return 'string[]';
45
+ case 'int8':
46
+ return 'number';
47
+ case 'int8[]':
48
+ return 'number[]';
49
+ case 'int2':
50
+ return 'number';
51
+ case 'int2[]':
52
+ return 'number[]';
53
+ case 'int4':
54
+ return 'number';
55
+ case 'int4[]':
56
+ return 'number[]';
57
+ case 'text':
58
+ return 'string';
59
+ case 'text[]':
60
+ return 'string[]';
61
+ case 'varchar':
62
+ return 'string';
63
+ case 'varchar[]':
64
+ return 'string[]';
65
+ case 'date':
66
+ return 'Date';
67
+ case 'date[]':
68
+ return 'Date[]';
69
+ case 'bit':
70
+ return 'boolean';
71
+ case 'bit[]':
72
+ return 'boolean[]';
73
+ case 'numeric':
74
+ return 'string';
75
+ case 'numeric[]':
76
+ return 'string[]';
77
+ case 'uuid':
78
+ return 'string';
79
+ case 'uuid[]':
80
+ return 'string[]';
81
+ case 'float4':
82
+ return 'number';
83
+ case 'float4[]':
84
+ return 'number[]';
85
+ case 'float8':
86
+ return 'number';
87
+ case 'float8[]':
88
+ return 'number[]';
89
+ }
90
+ }
91
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/dialects/postgres.ts"],"names":[],"mappings":";;;AAyBA,sCAiEC;AAvFY,QAAA,aAAa,GAAG;IAC5B,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;CACL,CAAC;AAGT,SAAgB,aAAa,CAAC,YAA0B;IACvD,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,SAAS,CAAC;QAClB,KAAK,QAAQ;YACZ,OAAO,WAAW,CAAC;QACpB,KAAK,OAAO;YACX,OAAO,aAAa,CAAC;QACtB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS;YACb,OAAO,QAAQ,CAAC;QACjB,KAAK,WAAW;YACf,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,KAAK;YACT,OAAO,SAAS,CAAC;QAClB,KAAK,OAAO;YACX,OAAO,WAAW,CAAC;QACpB,KAAK,SAAS;YACb,OAAO,QAAQ,CAAC;QACjB,KAAK,WAAW;YACf,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,QAAQ,CAAC;QACjB,KAAK,QAAQ;YACZ,OAAO,UAAU,CAAC;QACnB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;IACpB,CAAC;AACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Sql } from 'postgres';
2
+ import { PostgresColumnSchema, PostgresDescribe, PostgresType } from './types';
3
+ import { TaskEither } from 'fp-ts/lib/TaskEither';
4
+ import { DatabaseClient, TypeSqlError } from '../types';
5
+ import { Either } from 'fp-ts/lib/Either';
6
+ import { ResultAsync } from 'neverthrow';
7
+ export declare function loadDbSchema(sql: Sql): ResultAsync<PostgresColumnSchema[], string>;
8
+ export declare const postgresDescribe: (sql: Sql, sqlQuery: string) => ResultAsync<PostgresDescribe, string>;
9
+ export declare function postgresAnalyze(sql: Sql, sqlQuery: string): ResultAsync<string[], string>;
10
+ export declare function loadTypes(postgres: Sql): TaskEither<string, PostgresType[]>;
11
+ export declare function createPostgresClient(databaseUri: string): Either<TypeSqlError, DatabaseClient>;
12
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../src/drivers/postgres.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAuB,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,EAAS,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAsClF;AAED,eAAO,MAAM,gBAAgB,QAAS,GAAG,YAAY,MAAM,KAAG,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAuBjG,CAAA;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAezF;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAU3E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAM9F"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.postgresDescribe = void 0;
16
+ exports.loadDbSchema = loadDbSchema;
17
+ exports.postgresAnalyze = postgresAnalyze;
18
+ exports.loadTypes = loadTypes;
19
+ exports.createPostgresClient = createPostgresClient;
20
+ const postgres_1 = __importDefault(require("postgres"));
21
+ const TaskEither_1 = require("fp-ts/lib/TaskEither");
22
+ const Either_1 = require("fp-ts/lib/Either");
23
+ const neverthrow_1 = require("neverthrow");
24
+ function loadDbSchema(sql) {
25
+ return neverthrow_1.ResultAsync.fromThrowable(() => __awaiter(this, void 0, void 0, function* () {
26
+ const result = yield sql `SELECT
27
+ c.oid,
28
+ t.table_schema,
29
+ t.table_name,
30
+ col.column_name,
31
+ col.is_nullable
32
+ FROM
33
+ information_schema.tables t
34
+ JOIN
35
+ pg_class c ON c.relname = t.table_name
36
+ JOIN
37
+ information_schema.columns col
38
+ ON t.table_name = col.table_name
39
+ AND t.table_schema = col.table_schema
40
+ WHERE
41
+ t.table_type = 'BASE TABLE' -- Only regular tables, excluding views
42
+ AND t.table_schema NOT IN ('information_schema', 'pg_catalog') -- Exclude system schemas
43
+ ORDER BY
44
+ t.table_schema, t.table_name, col.ordinal_position;`;
45
+ return result.map((row) => ({
46
+ oid: row.oid,
47
+ table_schema: row.table_schema,
48
+ table_name: row.table_name,
49
+ column_name: row.column_name,
50
+ is_nullable: row.is_nullable === 'YES'
51
+ }));
52
+ }), (reason) => {
53
+ if (reason.errors && reason.errors.length > 0) {
54
+ return reason.errors.map((e) => e.message).join(', '); // Join all error messages into one string
55
+ }
56
+ return 'Unknown error';
57
+ })();
58
+ }
59
+ const postgresDescribe = (sql, sqlQuery) => {
60
+ return neverthrow_1.ResultAsync.fromThrowable(() => __awaiter(void 0, void 0, void 0, function* () {
61
+ const describeResult = yield sql.unsafe(sqlQuery).describe();
62
+ const columns = describeResult.columns.map((col) => ({
63
+ name: col.name,
64
+ tableId: col.table,
65
+ typeId: col.type
66
+ }));
67
+ const parameters = describeResult.types;
68
+ const result = {
69
+ columns,
70
+ parameters
71
+ };
72
+ return result;
73
+ }), (reason) => {
74
+ if (reason instanceof Error) {
75
+ return reason.message;
76
+ }
77
+ return 'Unknown error';
78
+ })();
79
+ };
80
+ exports.postgresDescribe = postgresDescribe;
81
+ function postgresAnalyze(sql, sqlQuery) {
82
+ return neverthrow_1.ResultAsync.fromThrowable(() => __awaiter(this, void 0, void 0, function* () {
83
+ const analyzeResult = yield sql.unsafe(`EXPLAIN ${sqlQuery}`);
84
+ return analyzeResult.map(res => {
85
+ return res['QUERY PLAN'];
86
+ });
87
+ }), (reason) => {
88
+ if (reason.errors && reason.errors.length > 0) {
89
+ return reason.errors.map((e) => e.message).join(', '); // Join all error messages into one string
90
+ }
91
+ return reason.message;
92
+ })();
93
+ }
94
+ function loadTypes(postgres) {
95
+ return (0, TaskEither_1.tryCatch)(() => __awaiter(this, void 0, void 0, function* () {
96
+ const result = yield postgres `SELECT
97
+ oid as "typeId", typname as "typeName"
98
+ FROM pg_type`.execute();
99
+ return result.columns;
100
+ }), (reason) => String(reason));
101
+ }
102
+ function createPostgresClient(databaseUri) {
103
+ const db = (0, postgres_1.default)(databaseUri);
104
+ return (0, Either_1.right)({
105
+ type: 'pg',
106
+ client: db
107
+ });
108
+ }
109
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/drivers/postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { TaskEither } from 'fp-ts/lib/TaskEither';
2
+ export type PostgresColumnSchema = {
3
+ oid: number;
4
+ table_schema: string;
5
+ table_name: string;
6
+ column_name: string;
7
+ is_nullable: boolean;
8
+ };
9
+ export type DescribeQueryColumn = {
10
+ name: string;
11
+ tableId: number;
12
+ typeId: number;
13
+ };
14
+ export type PostgresDescribe = {
15
+ parameters: number[];
16
+ columns: DescribeQueryColumn[];
17
+ };
18
+ export type DescribeQueryResult = PostgresDescribe & {
19
+ multipleRowsResult: boolean;
20
+ };
21
+ export type PostgresType = {
22
+ [key: number]: string;
23
+ };
24
+ export type Driver<Connection> = {
25
+ loadDbSchema: (conn: Connection) => TaskEither<string, PostgresColumnSchema[]>;
26
+ };
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/drivers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAEf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAC/B,CAAA;AACD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAEpD,MAAM,MAAM,MAAM,CAAC,UAAU,IAAI;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;CAC/E,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/drivers/types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { SQLiteType } from './sqlite-query-analyzer/types';
1
+ import type { PostgresType, SQLiteType } from './sqlite-query-analyzer/types';
2
2
  export declare enum FlagEnum {
3
3
  NOT_NULL = 1,
4
4
  PRI_KEY = 2,
@@ -6,8 +6,8 @@ export declare enum FlagEnum {
6
6
  ENUM_FLAG = 256,
7
7
  SET_FLAG = 2048
8
8
  }
9
- export type InferType = MySqlType | SQLiteType | '?' | 'number' | 'any';
10
- export type DbType = MySqlType | SQLiteType;
9
+ export type InferType = MySqlType | SQLiteType | PostgresType | '?' | 'number' | 'any';
10
+ export type DbType = MySqlType | SQLiteType | PostgresType;
11
11
  export type MySqlType = 'decimal' | 'decimal[]' | 'tinyint' | 'tinyint[]' | 'smallint' | 'smallint[]' | 'int' | 'int[]' | 'float' | 'float[]' | 'double' | 'double[]' | 'null' | 'timestamp' | 'bigint' | 'bigint[]' | 'mediumint' | 'mediumint[]' | 'date' | 'time' | 'datetime' | 'year' | 'year[]' | 'newdate' | 'varchar' | 'varchar[]' | 'bit' | 'bit[]' | 'timestamp2' | 'datetime2' | 'time2' | 'json' | `enum(${string})` | 'set' | 'tinyblob' | 'mediumblob' | 'longblob' | 'blob' | 'tinytext' | 'mediumtext' | 'longtext' | 'text' | 'varbinary' | 'binary' | 'char' | 'char[]' | 'geometry';
12
12
  export type TsType = 'string' | 'string[]' | 'number' | 'number[]' | 'boolean' | 'boolean[]' | 'Date' | 'Date[]' | 'Object' | 'Object[]' | 'Uint8Array' | 'ArrayBuffer' | 'any' | 'null';
13
13
  export declare function converToTsType(mySqlType: MySqlType | 'any'): TsType;
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-mapping.d.ts","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,oBAAY,QAAQ;IACnB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,WAAW,MAAM;IACjB,SAAS,MAAM;IACf,QAAQ,OAAO;CACf;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE5C,MAAM,MAAM,SAAS,GAClB,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,UAAU,GACV,YAAY,GACZ,KAAK,GACL,OAAO,GACP,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,WAAW,GACX,KAAK,GACL,OAAO,GACP,YAAY,GACZ,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,MAAM,GAAG,GACjB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,UAAU,CAAC;AAEd,MAAM,MAAM,MAAM,GACf,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,aAAa,GACb,KAAK,GACL,MAAM,CAAC;AAEV,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,CAsEnE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,WAEtD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA4BtH;AAED,KAAK,aAAa,GAAG;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,aAgC1B,CAAC"}
1
+ {"version":3,"file":"mysql-mapping.d.ts","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE9E,oBAAY,QAAQ;IACnB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,WAAW,MAAM;IACjB,SAAS,MAAM;IACf,QAAQ,OAAO;CACf;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvF,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D,MAAM,MAAM,SAAS,GAClB,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,UAAU,GACV,YAAY,GACZ,KAAK,GACL,OAAO,GACP,OAAO,GACP,SAAS,GACT,QAAQ,GACR,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,WAAW,GACX,KAAK,GACL,OAAO,GACP,YAAY,GACZ,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,MAAM,GAAG,GACjB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,UAAU,CAAC;AAEd,MAAM,MAAM,MAAM,GACf,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,aAAa,GACb,KAAK,GACL,MAAM,CAAC;AAEV,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,CAsEnE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,WAEtD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA4BtH;AAED,KAAK,aAAa,GAAG;IACpB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,aAgC1B,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { SimpleExprFunctionContext, ExprContext, InsertStatementContext, DeleteStatementContext } from '@wsporto/ts-mysql-parser';
1
+ import type { SimpleExprFunctionContext, ExprContext, InsertStatementContext, DeleteStatementContext } from '@wsporto/typesql-parser/mysql/MySQLParser';
2
2
  import type { ColumnSchema, ColumnDef, TypeVar, Type, Constraint, SubstitutionHash, TypeAndNullInfer } from './types';
3
3
  import type { InferType } from '../mysql-mapping';
4
- import type TerminalNode from '@wsporto/ts-mysql-parser';
4
+ import { TerminalNode } from '@wsporto/typesql-parser';
5
5
  export declare function freshVar(name: string, typeVar: InferType, table?: string, list?: true): TypeVar;
6
6
  export declare function createColumnType(col: ColumnDef): TypeVar;
7
7
  export declare function createColumnTypeFomColumnSchema(col: ColumnSchema): TypeVar;
@@ -1 +1 @@
1
- {"version":3,"file":"collect-constraints.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/collect-constraints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvI,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtH,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AAGzD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAY/F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,WAS9C;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,YAAY,WAShE;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,sBAAsB,UAGzE;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,eAuBjG;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAoB/G;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAMvG;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,CAoBpF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,QAWjD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,WAE5C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,WAEhD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,WAE5C;AAED,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,yBAAyB,UAK5E;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"collect-constraints.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/collect-constraints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAExJ,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtH,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAY/F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,WAS9C;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,YAAY,WAShE;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,sBAAsB,UAGzE;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,eAuBjG;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAoB/G;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAMvG;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,CAoBpF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,QAWjD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,WAE5C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,WAEhD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,WAE5C;AAED,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,yBAAyB,UAK5E;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,iBAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { QuerySpecificationContext, type ExprContext } from '@wsporto/ts-mysql-parser';
1
+ import { QuerySpecificationContext, type ExprContext } from '@wsporto/typesql-parser/mysql/MySQLParser';
2
2
  import type { ColumnSchema, FieldName, ColumnDef } from './types';
3
3
  export declare function parseAndInferNotNull(sql: string, dbSchema: ColumnSchema[]): (boolean | undefined)[];
4
4
  export declare function inferNotNull(querySpec: QuerySpecificationContext, dbSchema: ColumnSchema[], fromColumns: ColumnDef[]): boolean[];
@@ -1 +1 @@
1
- {"version":3,"file":"infer-column-nullability.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/infer-column-nullability.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EAEzB,KAAK,WAAW,EA4BhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASlE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,2BAQzE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,yBAAyB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,aAiBpH;AAgSD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAuDhF"}
1
+ {"version":3,"file":"infer-column-nullability.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/infer-column-nullability.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EAEzB,KAAK,WAAW,EA4BhB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASlE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,2BAQzE;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,yBAAyB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,aAiBpH;AAgSD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAuDhF"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseAndInferNotNull = parseAndInferNotNull;
4
4
  exports.inferNotNull = inferNotNull;
5
5
  exports.possibleNull = possibleNull;
6
- const ts_mysql_parser_1 = require("@wsporto/ts-mysql-parser");
6
+ const MySQLParser_1 = require("@wsporto/typesql-parser/mysql/MySQLParser");
7
7
  const select_columns_1 = require("./select-columns");
8
8
  const infer_param_nullability_1 = require("./infer-param-nullability");
9
9
  const traverse_1 = require("./traverse");
@@ -12,7 +12,7 @@ const describe_query_1 = require("../describe-query");
12
12
  //TODO - COLUMN SCHEMA DEFAULT = []
13
13
  //utility for tests
14
14
  function parseAndInferNotNull(sql, dbSchema) {
15
- const { sql: processedSql, namedParameters } = (0, describe_query_1.preprocessSql)(sql);
15
+ const { sql: processedSql, namedParameters } = (0, describe_query_1.preprocessSql)(sql, 'mysql');
16
16
  const tree = (0, parse_1.parse)(processedSql);
17
17
  const result = (0, traverse_1.traverseQueryContext)(tree, dbSchema, namedParameters);
18
18
  if (result.type === 'Select') {
@@ -59,7 +59,7 @@ function inferNotNullSelectItem(selectItem, dbSchema, fromColumns, whereClause)
59
59
  throw Error('Error during column null inference');
60
60
  }
61
61
  function inferNotNullExpr(expr, dbSchema, fromColumns) {
62
- if (expr instanceof ts_mysql_parser_1.ExprIsContext) {
62
+ if (expr instanceof MySQLParser_1.ExprIsContext) {
63
63
  return inferNotNullExprIs(expr, dbSchema, fromColumns);
64
64
  }
65
65
  throw Error('Error during column null inference');
@@ -69,18 +69,18 @@ function inferNotNullExprIs(exprIs, dbSchema, fromColumns) {
69
69
  return inferNotNullBoolPri(boolPri, dbSchema, fromColumns);
70
70
  }
71
71
  function inferNotNullBoolPri(boolPri, dbSchema, fromColumns) {
72
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprPredicateContext) {
72
+ if (boolPri instanceof MySQLParser_1.PrimaryExprPredicateContext) {
73
73
  const predicate = boolPri.predicate();
74
74
  return inferNotNullPredicate(predicate, dbSchema, fromColumns);
75
75
  }
76
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprCompareContext) {
76
+ if (boolPri instanceof MySQLParser_1.PrimaryExprCompareContext) {
77
77
  const compareLeft = boolPri.boolPri();
78
78
  const compareRight = boolPri.predicate();
79
79
  const notNullLeft = inferNotNullBoolPri(compareLeft, dbSchema, fromColumns);
80
80
  const notNullRight = inferNotNullPredicate(compareRight, dbSchema, fromColumns);
81
81
  return notNullLeft && notNullRight;
82
82
  }
83
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprIsNullContext) {
83
+ if (boolPri instanceof MySQLParser_1.PrimaryExprIsNullContext) {
84
84
  return true;
85
85
  }
86
86
  throw Error('Error during column null inference');
@@ -103,9 +103,9 @@ function inferNotNullBitExpr(bitExpr, dbSchema, fromColumns) {
103
103
  }
104
104
  function inferNotNullSimpleExpr(simpleExpr, dbSchema, fromColumns) {
105
105
  var _a;
106
- const querySpec = (0, infer_param_nullability_1.getParentContext)(simpleExpr, ts_mysql_parser_1.QuerySpecificationContext);
106
+ const querySpec = (0, infer_param_nullability_1.getParentContext)(simpleExpr, MySQLParser_1.QuerySpecificationContext);
107
107
  const whereClause = querySpec.whereClause();
108
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprColumnRefContext) {
108
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprColumnRefContext) {
109
109
  const columnName = simpleExpr.columnRef().fieldIdentifier().getText();
110
110
  const fieldName = (0, select_columns_1.splitName)(columnName);
111
111
  const column = (0, select_columns_1.findColumn)(fieldName, fromColumns);
@@ -117,25 +117,25 @@ function inferNotNullSimpleExpr(simpleExpr, dbSchema, fromColumns) {
117
117
  }
118
118
  return false;
119
119
  }
120
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprRuntimeFunctionContext) {
120
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprRuntimeFunctionContext) {
121
121
  return inferNotNullRuntimeFunctionCall(simpleExpr, dbSchema, fromColumns);
122
122
  }
123
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprFunctionContext) {
123
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprFunctionContext) {
124
124
  const functionCall = simpleExpr.functionCall();
125
125
  return inferNotNullFunctionCall(functionCall, dbSchema, fromColumns);
126
126
  }
127
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprLiteralContext) {
127
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprLiteralContext) {
128
128
  const nullLiteral = simpleExpr.literal().nullLiteral();
129
129
  if (nullLiteral) {
130
130
  return false;
131
131
  }
132
132
  return true;
133
133
  }
134
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprParamMarkerContext) {
134
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprParamMarkerContext) {
135
135
  const inferParam = (0, infer_param_nullability_1.inferParameterNotNull)(simpleExpr);
136
136
  return inferParam;
137
137
  }
138
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprSumContext) {
138
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprSumContext) {
139
139
  const sumExpr = simpleExpr.sumExpr();
140
140
  if (sumExpr.COUNT_SYMBOL()) {
141
141
  return true;
@@ -153,17 +153,17 @@ function inferNotNullSimpleExpr(simpleExpr, dbSchema, fromColumns) {
153
153
  return false;
154
154
  }
155
155
  }
156
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprListContext) {
156
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprListContext) {
157
157
  const exprList = simpleExpr.exprList().expr_list();
158
158
  return exprList.every((expr) => inferNotNullExpr(expr, dbSchema, fromColumns));
159
159
  }
160
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprSubQueryContext) {
160
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprSubQueryContext) {
161
161
  if (simpleExpr.EXISTS_SYMBOL()) {
162
162
  return true;
163
163
  }
164
164
  return false;
165
165
  }
166
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprCaseContext) {
166
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprCaseContext) {
167
167
  const thenExprList = simpleExpr.thenExpression_list();
168
168
  const elseExpr = simpleExpr.elseExpression();
169
169
  if (elseExpr) {
@@ -172,14 +172,14 @@ function inferNotNullSimpleExpr(simpleExpr, dbSchema, fromColumns) {
172
172
  }
173
173
  return false; //if doesn't have else, the not null can't be inferred
174
174
  }
175
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprIntervalContext) {
175
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprIntervalContext) {
176
176
  const exprList = simpleExpr.expr_list();
177
177
  return exprList.every((expr) => inferNotNullExpr(expr, dbSchema, fromColumns));
178
178
  }
179
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprWindowingFunctionContext) {
179
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprWindowingFunctionContext) {
180
180
  return inferNotNullWindowFunctionCall(simpleExpr.windowFunctionCall(), dbSchema, fromColumns);
181
181
  }
182
- if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprCastContext) {
182
+ if (simpleExpr instanceof MySQLParser_1.SimpleExprCastContext) {
183
183
  const expr = simpleExpr.expr();
184
184
  return inferNotNullExpr(expr, dbSchema, fromColumns);
185
185
  }
@@ -291,26 +291,26 @@ function possibleNullWhere(field, whereClause) {
291
291
  return possibleNull(field, expr);
292
292
  }
293
293
  function possibleNull(field, exprContext) {
294
- if (exprContext instanceof ts_mysql_parser_1.ExprIsContext) {
294
+ if (exprContext instanceof MySQLParser_1.ExprIsContext) {
295
295
  const boolPri = exprContext.boolPri();
296
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprPredicateContext) {
296
+ if (boolPri instanceof MySQLParser_1.PrimaryExprPredicateContext) {
297
297
  const res = boolPri.predicate().bitExpr(0).simpleExpr();
298
- if (res instanceof ts_mysql_parser_1.SimpleExprListContext) {
298
+ if (res instanceof MySQLParser_1.SimpleExprListContext) {
299
299
  const expr = res.exprList().expr(0);
300
300
  return possibleNull(field, expr);
301
301
  }
302
- if (res instanceof ts_mysql_parser_1.SimpleExprSubQueryContext) {
302
+ if (res instanceof MySQLParser_1.SimpleExprSubQueryContext) {
303
303
  //exists, not exists
304
304
  return true; //possibleNull
305
305
  }
306
306
  }
307
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprIsNullContext) {
307
+ if (boolPri instanceof MySQLParser_1.PrimaryExprIsNullContext) {
308
308
  const compare = boolPri.boolPri();
309
309
  if (boolPri.notRule() && areEquals(field, compare.getText())) {
310
310
  return false; //possibleNull
311
311
  }
312
312
  }
313
- if (boolPri instanceof ts_mysql_parser_1.PrimaryExprCompareContext) {
313
+ if (boolPri instanceof MySQLParser_1.PrimaryExprCompareContext) {
314
314
  const compare = boolPri.boolPri().getText(); //value > 10;
315
315
  const compare2 = boolPri.predicate().getText(); //10 < value
316
316
  //TODO - more complex expressions. ex. (value + value2) > 10;
@@ -320,11 +320,11 @@ function possibleNull(field, exprContext) {
320
320
  }
321
321
  return true; //possibleNull
322
322
  }
323
- if (exprContext instanceof ts_mysql_parser_1.ExprNotContext) {
323
+ if (exprContext instanceof MySQLParser_1.ExprNotContext) {
324
324
  const expr = exprContext.expr();
325
325
  return possibleNull(field, expr);
326
326
  }
327
- if (exprContext instanceof ts_mysql_parser_1.ExprAndContext) {
327
+ if (exprContext instanceof MySQLParser_1.ExprAndContext) {
328
328
  const [first, ...rest] = exprContext.expr_list();
329
329
  let possibleNullVar = possibleNull(field, first);
330
330
  for (const expr of rest) {
@@ -332,10 +332,10 @@ function possibleNull(field, exprContext) {
332
332
  }
333
333
  return possibleNullVar;
334
334
  }
335
- if (exprContext instanceof ts_mysql_parser_1.ExprXorContext) {
335
+ if (exprContext instanceof MySQLParser_1.ExprXorContext) {
336
336
  const expressions = exprContext.expr_list();
337
337
  }
338
- if (exprContext instanceof ts_mysql_parser_1.ExprOrContext) {
338
+ if (exprContext instanceof MySQLParser_1.ExprOrContext) {
339
339
  const [first, ...rest] = exprContext.expr_list();
340
340
  let possibleNullVar = possibleNull(field, first);
341
341
  for (const expr of rest) {