taon-type-sql 21.0.48 → 21.0.50

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 (187) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/bin/taon-type-sql +5 -0
  3. package/bin/taon-type-sql-debug +5 -0
  4. package/bin/taon-type-sql-debug-brk +4 -0
  5. package/browser/package.json +1 -1
  6. package/browser-prod/fesm2022/taon-type-sql-browser-prod.mjs.map +1 -1
  7. package/browser-prod/package.json +1 -1
  8. package/html/app/routing/+admin-users/admin-users.container.html +7 -0
  9. package/html/app/shared/user/user.component.html +6 -0
  10. package/html/app.html +1 -0
  11. package/html/assets/generated/pwa/html-pwa.html +60 -0
  12. package/lib/build-info._auto-generated_.d.ts +1 -1
  13. package/lib/build-info._auto-generated_.js +1 -1
  14. package/lib/package.json +1 -1
  15. package/lib-esm/app/routing/+admin-users/index.d.ts +1 -0
  16. package/lib-esm/app/routing/+admin-users/index.js +2 -0
  17. package/lib-esm/app/routing/+admin-users/index.js.map +1 -0
  18. package/lib-esm/app/shared/user/index.d.ts +0 -0
  19. package/lib-esm/app/shared/user/index.js +6 -0
  20. package/lib-esm/app/shared/user/index.js.map +1 -0
  21. package/lib-esm/app/shared/user/user.controller.d.ts +0 -0
  22. package/lib-esm/app/shared/user/user.controller.js +76 -0
  23. package/lib-esm/app/shared/user/user.controller.js.map +1 -0
  24. package/lib-esm/app/shared/user/user.d.ts +0 -0
  25. package/lib-esm/app/shared/user/user.helpers.d.ts +1 -0
  26. package/lib-esm/app/shared/user/user.helpers.js +2 -0
  27. package/lib-esm/app/shared/user/user.helpers.js.map +1 -0
  28. package/lib-esm/app/shared/user/user.js +53 -0
  29. package/lib-esm/app/shared/user/user.js.map +1 -0
  30. package/lib-esm/app/shared/user/user.models.d.ts +0 -0
  31. package/lib-esm/app/shared/user/user.models.js +25 -0
  32. package/lib-esm/app/shared/user/user.models.js.map +1 -0
  33. package/lib-esm/app.d.ts +0 -0
  34. package/lib-esm/app.electron.d.ts +0 -0
  35. package/lib-esm/app.electron.js +82 -0
  36. package/lib-esm/app.electron.js.map +1 -0
  37. package/lib-esm/app.hosts.d.ts +3 -0
  38. package/lib-esm/app.hosts.js +48 -0
  39. package/lib-esm/app.hosts.js.map +1 -0
  40. package/lib-esm/app.js +102 -0
  41. package/lib-esm/app.js.map +1 -0
  42. package/lib-esm/app.vscode.d.ts +0 -0
  43. package/lib-esm/app.vscode.js +47 -0
  44. package/lib-esm/app.vscode.js.map +1 -0
  45. package/lib-esm/index.d.ts +1 -0
  46. package/lib-esm/index.js +4 -0
  47. package/lib-esm/index.js.map +1 -0
  48. package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
  49. package/lib-esm/lib/build-info._auto-generated_.js +27 -0
  50. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
  51. package/lib-esm/lib/builder/column/basic-column.d.ts +8 -0
  52. package/lib-esm/lib/builder/column/basic-column.js +12 -0
  53. package/lib-esm/lib/builder/column/basic-column.js.map +1 -0
  54. package/lib-esm/lib/builder/column/boolean-column.d.ts +9 -0
  55. package/lib-esm/lib/builder/column/boolean-column.js +12 -0
  56. package/lib-esm/lib/builder/column/boolean-column.js.map +1 -0
  57. package/lib-esm/lib/builder/column/comparable-column.d.ts +18 -0
  58. package/lib-esm/lib/builder/column/comparable-column.js +40 -0
  59. package/lib-esm/lib/builder/column/comparable-column.js.map +1 -0
  60. package/lib-esm/lib/builder/column/date-column.d.ts +9 -0
  61. package/lib-esm/lib/builder/column/date-column.js +12 -0
  62. package/lib-esm/lib/builder/column/date-column.js.map +1 -0
  63. package/lib-esm/lib/builder/column/number-column.d.ts +10 -0
  64. package/lib-esm/lib/builder/column/number-column.js +17 -0
  65. package/lib-esm/lib/builder/column/number-column.js.map +1 -0
  66. package/lib-esm/lib/builder/column/query-column.d.ts +18 -0
  67. package/lib-esm/lib/builder/column/query-column.js +24 -0
  68. package/lib-esm/lib/builder/column/query-column.js.map +1 -0
  69. package/lib-esm/lib/builder/column/string-column.d.ts +17 -0
  70. package/lib-esm/lib/builder/column/string-column.js +34 -0
  71. package/lib-esm/lib/builder/column/string-column.js.map +1 -0
  72. package/lib-esm/lib/builder/column/value-column.d.ts +15 -0
  73. package/lib-esm/lib/builder/column/value-column.js +28 -0
  74. package/lib-esm/lib/builder/column/value-column.js.map +1 -0
  75. package/lib-esm/lib/builder/condition/query-column-condition.d.ts +13 -0
  76. package/lib-esm/lib/builder/condition/query-column-condition.js +20 -0
  77. package/lib-esm/lib/builder/condition/query-column-condition.js.map +1 -0
  78. package/lib-esm/lib/builder/condition/query-condition-chain.d.ts +17 -0
  79. package/lib-esm/lib/builder/condition/query-condition-chain.js +31 -0
  80. package/lib-esm/lib/builder/condition/query-condition-chain.js.map +1 -0
  81. package/lib-esm/lib/builder/condition/query-condition.d.ts +7 -0
  82. package/lib-esm/lib/builder/condition/query-condition.js +5 -0
  83. package/lib-esm/lib/builder/condition/query-condition.js.map +1 -0
  84. package/lib-esm/lib/builder/condition/query-join-condition.d.ts +12 -0
  85. package/lib-esm/lib/builder/condition/query-join-condition.js +20 -0
  86. package/lib-esm/lib/builder/condition/query-join-condition.js.map +1 -0
  87. package/lib-esm/lib/builder/helpers/generics-helper.d.ts +2 -0
  88. package/lib-esm/lib/builder/helpers/generics-helper.js +4 -0
  89. package/lib-esm/lib/builder/helpers/generics-helper.js.map +1 -0
  90. package/lib-esm/lib/builder/helpers/internal-types.d.ts +15 -0
  91. package/lib-esm/lib/builder/helpers/internal-types.js +3 -0
  92. package/lib-esm/lib/builder/helpers/internal-types.js.map +1 -0
  93. package/lib-esm/lib/builder/join/joined-tables-chain.d.ts +11 -0
  94. package/lib-esm/lib/builder/join/joined-tables-chain.js +15 -0
  95. package/lib-esm/lib/builder/join/joined-tables-chain.js.map +1 -0
  96. package/lib-esm/lib/builder/join/joined-tables.d.ts +12 -0
  97. package/lib-esm/lib/builder/join/joined-tables.js +22 -0
  98. package/lib-esm/lib/builder/join/joined-tables.js.map +1 -0
  99. package/lib-esm/lib/builder/other/query-ordering.d.ts +10 -0
  100. package/lib-esm/lib/builder/other/query-ordering.js +18 -0
  101. package/lib-esm/lib/builder/other/query-ordering.js.map +1 -0
  102. package/lib-esm/lib/builder/query/select-query.d.ts +29 -0
  103. package/lib-esm/lib/builder/query/select-query.js +51 -0
  104. package/lib-esm/lib/builder/query/select-query.js.map +1 -0
  105. package/lib-esm/lib/builder/query/table-condition-query.d.ts +16 -0
  106. package/lib-esm/lib/builder/query/table-condition-query.js +28 -0
  107. package/lib-esm/lib/builder/query/table-condition-query.js.map +1 -0
  108. package/lib-esm/lib/builder/query/table-query.d.ts +23 -0
  109. package/lib-esm/lib/builder/query/table-query.js +57 -0
  110. package/lib-esm/lib/builder/query/table-query.js.map +1 -0
  111. package/lib-esm/lib/builder/query-source.d.ts +14 -0
  112. package/lib-esm/lib/builder/query-source.js +19 -0
  113. package/lib-esm/lib/builder/query-source.js.map +1 -0
  114. package/lib-esm/lib/builder/query-table.d.ts +15 -0
  115. package/lib-esm/lib/builder/query-table.js +26 -0
  116. package/lib-esm/lib/builder/query-table.js.map +1 -0
  117. package/lib-esm/lib/client/mysql.d.ts +5 -0
  118. package/lib-esm/lib/client/mysql.js +8 -0
  119. package/lib-esm/lib/client/mysql.js.map +1 -0
  120. package/lib-esm/lib/client/pg.d.ts +5 -0
  121. package/lib-esm/lib/client/pg.js +8 -0
  122. package/lib-esm/lib/client/pg.js.map +1 -0
  123. package/lib-esm/lib/client/query-processor.d.ts +10 -0
  124. package/lib-esm/lib/client/query-processor.js +70 -0
  125. package/lib-esm/lib/client/query-processor.js.map +1 -0
  126. package/lib-esm/lib/converter/param-converter.d.ts +2 -0
  127. package/lib-esm/lib/converter/param-converter.js +27 -0
  128. package/lib-esm/lib/converter/param-converter.js.map +1 -0
  129. package/lib-esm/lib/converter/parameterized-converter.d.ts +5 -0
  130. package/lib-esm/lib/converter/parameterized-converter.js +15 -0
  131. package/lib-esm/lib/converter/parameterized-converter.js.map +1 -0
  132. package/lib-esm/lib/converter/query-converter.d.ts +2 -0
  133. package/lib-esm/lib/converter/query-converter.js +281 -0
  134. package/lib-esm/lib/converter/query-converter.js.map +1 -0
  135. package/lib-esm/lib/converter/result-converter.d.ts +2 -0
  136. package/lib-esm/lib/converter/result-converter.js +86 -0
  137. package/lib-esm/lib/converter/result-converter.js.map +1 -0
  138. package/lib-esm/lib/converter/sql-converter.d.ts +2 -0
  139. package/lib-esm/lib/converter/sql-converter.js +6 -0
  140. package/lib-esm/lib/converter/sql-converter.js.map +1 -0
  141. package/lib-esm/lib/converter/type-converter.d.ts +4 -0
  142. package/lib-esm/lib/converter/type-converter.js +37 -0
  143. package/lib-esm/lib/converter/type-converter.js.map +1 -0
  144. package/lib-esm/lib/converter/types.d.ts +5 -0
  145. package/lib-esm/lib/converter/types.js +2 -0
  146. package/lib-esm/lib/converter/types.js.map +1 -0
  147. package/lib-esm/lib/env/env.angular-node-app.d.ts +66 -0
  148. package/lib-esm/lib/env/env.angular-node-app.js +135 -0
  149. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
  150. package/lib-esm/lib/env/env.docs-webapp.d.ts +66 -0
  151. package/lib-esm/lib/env/env.docs-webapp.js +135 -0
  152. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
  153. package/lib-esm/lib/env/env.electron-app.d.ts +66 -0
  154. package/lib-esm/lib/env/env.electron-app.js +135 -0
  155. package/lib-esm/lib/env/env.electron-app.js.map +1 -0
  156. package/lib-esm/lib/env/env.mobile-app.d.ts +66 -0
  157. package/lib-esm/lib/env/env.mobile-app.js +135 -0
  158. package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
  159. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +66 -0
  160. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +135 -0
  161. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
  162. package/lib-esm/lib/env/env.vscode-plugin.d.ts +66 -0
  163. package/lib-esm/lib/env/env.vscode-plugin.js +135 -0
  164. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
  165. package/lib-esm/lib/env/index.d.ts +6 -0
  166. package/lib-esm/lib/env/index.js +7 -0
  167. package/lib-esm/lib/env/index.js.map +1 -0
  168. package/lib-esm/lib/index._auto-generated_.d.ts +0 -0
  169. package/lib-esm/lib/index._auto-generated_.js +6 -0
  170. package/lib-esm/lib/index._auto-generated_.js.map +1 -0
  171. package/lib-esm/lib/index.d.ts +25 -0
  172. package/lib-esm/lib/index.js +24 -0
  173. package/lib-esm/lib/index.js.map +1 -0
  174. package/lib-esm/lib/migrations/index.d.ts +1 -0
  175. package/lib-esm/lib/migrations/index.js +3 -0
  176. package/lib-esm/lib/migrations/index.js.map +1 -0
  177. package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +0 -0
  178. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
  179. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -0
  180. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  181. package/lib-prod/build-info._auto-generated_.js +1 -1
  182. package/lib-prod/package.json +1 -1
  183. package/package.json +6 -2
  184. package/src.js +4 -20
  185. package/websql/package.json +1 -1
  186. package/websql-prod/fesm2022/taon-type-sql-websql-prod.mjs.map +1 -1
  187. package/websql-prod/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ export default class SelectQuery {
2
+ _queryProcessor;
3
+ _tables;
4
+ constructor(_queryProcessor, _tables) {
5
+ this._queryProcessor = _queryProcessor;
6
+ this._tables = _tables;
7
+ }
8
+ _distinct = false;
9
+ _offset;
10
+ _limit;
11
+ _conditions = [];
12
+ _groupBy = [];
13
+ _having = [];
14
+ _orderings = [];
15
+ _columns = [];
16
+ _action;
17
+ offset(offset) {
18
+ this._offset = offset;
19
+ return this;
20
+ }
21
+ limit(limit) {
22
+ this._limit = limit;
23
+ return this;
24
+ }
25
+ distinct() {
26
+ this._distinct = true;
27
+ return this;
28
+ }
29
+ where(...conditions) {
30
+ this._conditions = conditions;
31
+ return this;
32
+ }
33
+ groupBy(...columns) {
34
+ this._groupBy = columns;
35
+ return this;
36
+ }
37
+ having(...conditions) {
38
+ this._having = conditions;
39
+ return this;
40
+ }
41
+ orderBy(...orderings) {
42
+ this._orderings = orderings;
43
+ return this;
44
+ }
45
+ select(...columns) {
46
+ this._columns = columns;
47
+ this._action = 'select';
48
+ return this._queryProcessor(this);
49
+ }
50
+ }
51
+ //# sourceMappingURL=select-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-query.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,OAAO,WAAW;IAGd;IACA;IAFd,YACc,eAA+B,EAC/B,OAAgB;QADhB,oBAAe,GAAf,eAAe,CAAgB;QAC/B,YAAO,GAAP,OAAO,CAAS;IAC3B,CAAC;IAEM,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,WAAW,GAA4B,EAAE,CAAC;IAC1C,QAAQ,GAA8B,EAAE,CAAC;IACzC,OAAO,GAA4B,EAAE,CAAC;IACtC,UAAU,GAAuD,EAAE,CAAC;IACpE,QAAQ,GAA8B,EAAE,CAAC;IACzC,OAAO,CAAc;IAE/B,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAa;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,GAAG,UAAmC;QACxC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,OAAkC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,UAAmC;QACzC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,SAA6D;QACpE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAKD,MAAM,CAAC,GAAG,OAAkC;QACxC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ"}
@@ -0,0 +1,16 @@
1
+ import QueryTable from "../query-table";
2
+ import QueryCondition from "../condition/query-condition";
3
+ import QueryColumn from "../column/query-column";
4
+ import { QueryProcessor, QueryAction } from "../helpers/internal-types";
5
+ export default class TableConditionQuery<Entity, Table extends QueryTable<Entity, any>> {
6
+ protected _queryProcessor: QueryProcessor;
7
+ protected _table: Table;
8
+ protected _conditions: QueryCondition<Table>[];
9
+ constructor(_queryProcessor: QueryProcessor, _table: Table, _conditions: QueryCondition<Table>[]);
10
+ protected _columns: QueryColumn<Table, any>[];
11
+ protected _action: QueryAction;
12
+ protected _entity: Entity | Partial<Entity>;
13
+ update(entity: Partial<Entity>): Promise<number>;
14
+ delete(): Promise<number>;
15
+ count(): Promise<number>;
16
+ }
@@ -0,0 +1,28 @@
1
+ export default class TableConditionQuery {
2
+ _queryProcessor;
3
+ _table;
4
+ _conditions;
5
+ constructor(_queryProcessor, _table, _conditions) {
6
+ this._queryProcessor = _queryProcessor;
7
+ this._table = _table;
8
+ this._conditions = _conditions;
9
+ }
10
+ _columns = [];
11
+ _action;
12
+ _entity;
13
+ update(entity) {
14
+ this._entity = entity;
15
+ this._action = 'update';
16
+ return this._queryProcessor(this);
17
+ }
18
+ delete() {
19
+ this._action = 'delete';
20
+ return this._queryProcessor(this);
21
+ }
22
+ count() {
23
+ this._columns = [this._table.$all.count()];
24
+ this._action = 'select';
25
+ return this._queryProcessor(this).then((rows) => rows[0]);
26
+ }
27
+ }
28
+ //# sourceMappingURL=table-condition-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-condition-query.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAGtB;IACA;IACA;IAHd,YACc,eAA+B,EAC/B,MAAa,EACb,WAAoC;QAFpC,oBAAe,GAAf,eAAe,CAAgB;QAC/B,WAAM,GAAN,MAAM,CAAO;QACb,gBAAW,GAAX,WAAW,CAAyB;IAC/C,CAAC;IAEM,QAAQ,GAA8B,EAAE,CAAC;IACzC,OAAO,CAAc;IACrB,OAAO,CAA2B;IAE5C,MAAM,CAAC,MAAuB;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CACJ"}
@@ -0,0 +1,23 @@
1
+ import QueryTable from "../query-table";
2
+ import TableConditionQuery from "./table-condition-query";
3
+ import QueryCondition from "../condition/query-condition";
4
+ import QueryColumn from "../column/query-column";
5
+ import { QueryProcessor, QueryAction } from "../helpers/internal-types";
6
+ export default class TableQuery<Entity, Id, Table extends QueryTable<Entity, Id>> {
7
+ protected _queryProcessor: QueryProcessor;
8
+ protected _table: Table;
9
+ constructor(_queryProcessor: QueryProcessor, _table: Table);
10
+ protected _entity: Entity | Entity[] | Partial<Entity>;
11
+ protected _action: QueryAction;
12
+ protected _columns: QueryColumn<Table, any>[];
13
+ where(...conditions: QueryCondition<Table>[]): TableConditionQuery<Entity, Table>;
14
+ insert(entity: Entity): Promise<any>;
15
+ insert(entities: Entity[]): Promise<void>;
16
+ deleteAll(): Promise<number>;
17
+ updateAll(entity: Partial<Entity>): Promise<number>;
18
+ countAll(): Promise<number>;
19
+ delete(id: Id): Promise<boolean>;
20
+ update(id: Id, entity: Partial<Entity>): Promise<boolean>;
21
+ get(id: Id): Promise<Entity | undefined>;
22
+ _whereId(id: Id): TableConditionQuery<Entity, Table>;
23
+ }
@@ -0,0 +1,57 @@
1
+ import TableConditionQuery from "./table-condition-query";
2
+ import ValueColumn from "../column/value-column";
3
+ export default class TableQuery {
4
+ _queryProcessor;
5
+ _table;
6
+ constructor(_queryProcessor, _table) {
7
+ this._queryProcessor = _queryProcessor;
8
+ this._table = _table;
9
+ }
10
+ _entity;
11
+ _action;
12
+ _columns = [];
13
+ where(...conditions) {
14
+ return new TableConditionQuery(this._queryProcessor, this._table, conditions);
15
+ }
16
+ insert(param) {
17
+ this._entity = param;
18
+ this._action = 'insert';
19
+ return this._queryProcessor(this);
20
+ }
21
+ deleteAll() {
22
+ this._action = 'delete';
23
+ return this._queryProcessor(this);
24
+ }
25
+ updateAll(entity) {
26
+ this._entity = entity;
27
+ this._action = 'update';
28
+ return this._queryProcessor(this);
29
+ }
30
+ countAll() {
31
+ this._columns = [this._table.$all.count()];
32
+ this._action = 'select';
33
+ return this._queryProcessor(this).then((rows) => rows[0]);
34
+ }
35
+ delete(id) {
36
+ return this._whereId(id).delete().then(count => count > 0);
37
+ }
38
+ update(id, entity) {
39
+ return this._whereId(id).update(entity).then(count => count > 0);
40
+ }
41
+ get(id) {
42
+ let query = this._whereId(id);
43
+ return this._queryProcessor({ _action: 'select', ...query })
44
+ .then((rows) => rows[0]);
45
+ }
46
+ _whereId(id) {
47
+ // TODO remove assertions if $id typing is fixed
48
+ let $id = this._table.$id;
49
+ if ($id instanceof ValueColumn) {
50
+ return this.where($id.eq(id));
51
+ }
52
+ else {
53
+ return this.where(...Object.keys($id).map(key => this._table[key].eq(id[key])));
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=table-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-query.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAE1D,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,UAAU;IAGb;IACA;IAFd,YACc,eAA+B,EAC/B,MAAa;QADb,oBAAe,GAAf,eAAe,CAAgB;QAC/B,WAAM,GAAN,MAAM,CAAO;IACxB,CAAC;IAEM,OAAO,CAAsC;IAC7C,OAAO,CAAc;IACrB,QAAQ,GAA8B,EAAE,CAAC;IAEnD,KAAK,CAAC,GAAG,UAAmC;QACxC,OAAO,IAAI,mBAAmB,CAAgB,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjG,CAAC;IAID,MAAM,CAAC,KAAU;QACb,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS;QACL,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CAAC,MAAuB;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,EAAM,EAAE,MAAuB;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,GAAG,CAAC,EAAM;QACN,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;aACvD,IAAI,CAAC,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,EAAM;QACX,gDAAgD;QAChD,IAAI,GAAG,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG,CAAC;QACnC,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAG,IAAI,CAAC,MAAc,CAAC,GAAG,CAA6B,CAAC,EAAE,CAAE,EAAU,CAAC,GAAG,CAAQ,CAAC,CAAC,CAAC,CAAC;QAC1I,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,14 @@
1
+ import QueryTable from './query-table';
2
+ import SelectQuery from './query/select-query';
3
+ import { QueryProcessor } from "./helpers/internal-types";
4
+ import JoinedTables from "./join/joined-tables";
5
+ import TableQuery from "./query/table-query";
6
+ export default class QuerySource {
7
+ protected _queryProcessor: QueryProcessor;
8
+ constructor(_queryProcessor: QueryProcessor);
9
+ from<Entity, Table1 extends QueryTable<Entity, any>>(table1: Table1 & QueryTable<Entity, any>): SelectQuery<Entity, Table1>;
10
+ from<Tables extends QueryTable<any, any>>(tables: JoinedTables<Tables>): SelectQuery<any, Tables>;
11
+ from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>>(table1: Table1, table2: Table2): SelectQuery<any, Table1 | Table2>;
12
+ from<Table1 extends QueryTable<any, any>, Table2 extends QueryTable<any, any>, Table3 extends QueryTable<any, any>>(table1: Table1, table2: Table2, table3: Table3): SelectQuery<any, Table1 | Table2 | Table3>;
13
+ table<Entity, Id, Table extends QueryTable<Entity, Id>>(table: Table & QueryTable<Entity, Id>): TableQuery<Entity, Id, Table>;
14
+ }
@@ -0,0 +1,19 @@
1
+ import SelectQuery from './query/select-query';
2
+ import TableQuery from "./query/table-query";
3
+ export default class QuerySource {
4
+ _queryProcessor;
5
+ constructor(_queryProcessor) {
6
+ this._queryProcessor = _queryProcessor;
7
+ }
8
+ from(table1, table2, table3) {
9
+ if (table3 != null)
10
+ return new SelectQuery(this._queryProcessor, [table1, table2, table3]);
11
+ else if (table2 != null)
12
+ return new SelectQuery(this._queryProcessor, [table1, table2]);
13
+ return new SelectQuery(this._queryProcessor, [table1]);
14
+ }
15
+ table(table) {
16
+ return new TableQuery(this._queryProcessor, table);
17
+ }
18
+ }
19
+ //# sourceMappingURL=query-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-source.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG/C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,WAAW;IAEN;IAAtB,YAAsB,eAA+B;QAA/B,oBAAe,GAAf,eAAe,CAAgB;IAAG,CAAC;IAMzD,IAAI,CAAwH,MAAW,EAAE,MAAY,EAAE,MAAY;QAC/J,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,IAAI,WAAW,CAAgC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;aACrH,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,IAAI,WAAW,CAAuB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9G,OAAO,IAAI,WAAW,CAAiB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAmD,KAAqC;QACzF,OAAO,IAAI,UAAU,CAAoB,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import BasicColumn from "./column/basic-column";
2
+ import GenericsHelper from "./helpers/generics-helper";
3
+ import JoinedTablesChain from "./join/joined-tables-chain";
4
+ declare abstract class QueryTable<Entity, Id> {
5
+ protected _$name: string;
6
+ constructor(_$name: string);
7
+ protected _$type: GenericsHelper<Entity>;
8
+ protected _$idType: GenericsHelper<Id>;
9
+ $all: BasicColumn<this, Entity>;
10
+ innerJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable>;
11
+ leftJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable>;
12
+ rightJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable>;
13
+ fullJoin<JoinTable extends QueryTable<any, any>>(table: JoinTable): JoinedTablesChain<this | JoinTable>;
14
+ }
15
+ export default QueryTable;
@@ -0,0 +1,26 @@
1
+ import BasicColumn from "./column/basic-column";
2
+ import JoinedTablesChain from "./join/joined-tables-chain";
3
+ class QueryTable {
4
+ _$name;
5
+ constructor(_$name) {
6
+ this._$name = _$name;
7
+ }
8
+ _$type;
9
+ _$idType;
10
+ // abstract readonly $id; // FIXME I got a dozen incomprehensible type errors
11
+ $all = new BasicColumn(this, '*');
12
+ innerJoin(table) {
13
+ return new JoinedTablesChain(table, 'inner', this);
14
+ }
15
+ leftJoin(table) {
16
+ return new JoinedTablesChain(table, 'left', this);
17
+ }
18
+ rightJoin(table) {
19
+ return new JoinedTablesChain(table, 'right', this);
20
+ }
21
+ fullJoin(table) {
22
+ return new JoinedTablesChain(table, 'full', this);
23
+ }
24
+ }
25
+ export default QueryTable;
26
+ //# sourceMappingURL=query-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-table.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAG3D,MAAe,UAAU;IAEC;IAAtB,YAAsB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE9B,MAAM,CAAyB;IAC/B,QAAQ,CAAqB;IAEvC,6EAA6E;IAE7E,IAAI,GAAG,IAAI,WAAW,CAAe,IAAI,EAAE,GAAG,CAAC,CAAC;IAEhD,SAAS,CAAyC,KAAgB;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ,CAAyC,KAAgB;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,SAAS,CAAyC,KAAgB;QAC9D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ,CAAyC,KAAgB;QAC7D,OAAO,IAAI,iBAAiB,CAAmB,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;CACJ;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ import QuerySource from "../builder/query-source";
2
+ import { QueryProcessorOptions } from "./query-processor";
3
+ export default class MySqlQuerySource extends QuerySource {
4
+ constructor(client: any, options?: QueryProcessorOptions);
5
+ }
@@ -0,0 +1,8 @@
1
+ import QuerySource from "../builder/query-source";
2
+ import { createQueryProcessor } from "./query-processor";
3
+ export default class MySqlQuerySource extends QuerySource {
4
+ constructor(client, options = {}) {
5
+ super(createQueryProcessor(client, options, 'mysql'));
6
+ }
7
+ }
8
+ //# sourceMappingURL=mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAwB,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IAErD,YAAY,MAAW,EAAE,UAAiC,EAAE;QACxD,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;CACJ"}
@@ -0,0 +1,5 @@
1
+ import QuerySource from "../builder/query-source";
2
+ import { QueryProcessorOptions } from "./query-processor";
3
+ export default class PgQuerySource extends QuerySource {
4
+ constructor(client: any, options?: QueryProcessorOptions);
5
+ }
@@ -0,0 +1,8 @@
1
+ import QuerySource from "../builder/query-source";
2
+ import { createQueryProcessor } from "./query-processor";
3
+ export default class PgQuerySource extends QuerySource {
4
+ constructor(client, options = {}) {
5
+ super(createQueryProcessor(client, options, 'pg'));
6
+ }
7
+ }
8
+ //# sourceMappingURL=pg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAwB,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IAElD,YAAY,MAAW,EAAE,UAAiC,EAAE;QACxD,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ import { QueryEngine } from '../converter/types';
2
+ import { QueryProcessor } from '../builder/helpers/internal-types';
3
+ export interface QueryProcessorOptions {
4
+ lineBreaks?: boolean;
5
+ parameterized?: boolean;
6
+ logging?: boolean;
7
+ logger?: (sql: string, params?: any[]) => void;
8
+ identifierQuote?: string;
9
+ }
10
+ export declare function createQueryProcessor(client: any, _options?: QueryProcessorOptions, engine?: QueryEngine): QueryProcessor;
@@ -0,0 +1,70 @@
1
+ import { Log } from 'ng2-logger/lib';
2
+ import { convertQueryToParameterizedSQL } from '../converter/parameterized-converter';
3
+ import { convertQueryToSQL } from '../converter/sql-converter';
4
+ const log = Log.create('query processor');
5
+ const DEFAULT_OPTIONS = {
6
+ lineBreaks: false,
7
+ parameterized: true,
8
+ logging: true,
9
+ identifierQuote: '"'
10
+ };
11
+ function mySqlTypeCast(field, next) {
12
+ if (field.type == 'TINY' && field.length == 1) { // Boolean
13
+ let value = field.string();
14
+ if (value == '1')
15
+ return true;
16
+ if (value == '0')
17
+ return false;
18
+ return null;
19
+ }
20
+ else if (field.type == 'JSON') {
21
+ let value = field.string();
22
+ return value == null ? null : JSON.parse(value);
23
+ }
24
+ return next();
25
+ }
26
+ export function createQueryProcessor(client, _options = {}, engine = 'pg') {
27
+ let options = Object.assign({}, DEFAULT_OPTIONS, _options);
28
+ let queryOptions = {
29
+ lineBreak: options.lineBreaks ? '\n' : ' ',
30
+ nameEscape: _options.identifierQuote || (engine === 'mysql' ? '`' : '"')
31
+ };
32
+ // function processSql(query: any, sql: string, params: any[] | undefined, callback: any): Promise<any> {
33
+ // if (options.logging) log.i(sql);
34
+ // if (options.logger) options.logger(sql, params);
35
+ // return new Promise((resolve, reject) => {
36
+ // callback(sql, params, (err: any, result: any) => {
37
+ // if (err) reject(err);
38
+ // else resolve(convertResult(query, result, engine));
39
+ // });
40
+ // });
41
+ // }
42
+ // function executeSql(sql: string, params: any[] | undefined, cb: any) {
43
+ // if (engine === 'pg') {
44
+ // client.query(sql, params || cb, params ? cb : undefined);
45
+ // } else if (engine === 'mysql') {
46
+ // client.query({
47
+ // sql,
48
+ // values: params,
49
+ // typeCast: mySqlTypeCast
50
+ // }, cb);
51
+ // } else throw new Error('Unknown DB engine: ' + engine);
52
+ // }
53
+ return (query) => {
54
+ if (options.parameterized) {
55
+ let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);
56
+ // if (Helpers.isWebSQL || Helpers.isNode) {
57
+ return client.query(sql, params);
58
+ // }
59
+ // return processSql(query, sql, params, (sql: string, params: any[], cb: any) => executeSql(sql, params, cb));
60
+ }
61
+ else {
62
+ let sql = convertQueryToSQL(query, queryOptions, engine);
63
+ // if (Helpers.isWebSQL || Helpers.isNode) {
64
+ return client.query(sql, undefined);
65
+ // }
66
+ // return processSql(query, sql, undefined, (sql: string, params: undefined, cb: any) => executeSql(sql, undefined, cb));
67
+ }
68
+ };
69
+ }
70
+ //# sourceMappingURL=query-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-processor.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAM/D,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAEvC,CAAA;AAUD,MAAM,eAAe,GAA0B;IAC7C,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,IAAI;IACb,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,SAAS,aAAa,CAAC,KAAU,EAAE,IAAS;IAC1C,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU;QACzD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAW,EAAE,WAAkC,EAAE,EAAE,SAAsB,IAAI;IAEhH,IAAI,OAAO,GAA0B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAElF,IAAI,YAAY,GAAqB;QACnC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;QAC1C,UAAU,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KACzE,CAAC;IAEF,yGAAyG;IACzG,qCAAqC;IACrC,qDAAqD;IAErD,8CAA8C;IAC9C,yDAAyD;IACzD,8BAA8B;IAC9B,4DAA4D;IAC5D,UAAU;IACV,QAAQ;IACR,IAAI;IAEJ,yEAAyE;IACzE,2BAA2B;IAC3B,gEAAgE;IAChE,qCAAqC;IACrC,qBAAqB;IACrB,aAAa;IACb,wBAAwB;IACxB,gCAAgC;IAChC,cAAc;IACd,4DAA4D;IAC5D,IAAI;IAEJ,OAAO,CAAC,KAAU,EAAE,EAAE;QACpB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,8BAA8B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAClF,4CAA4C;YAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI;YACJ,+GAA+G;QACjH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACzD,4CAA4C;YAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACpC,IAAI;YACJ,yHAAyH;QAC3H,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function convertSubstitutionParam(param: any): string;
2
+ export declare function convertEscapedParam(param: any): any;
@@ -0,0 +1,27 @@
1
+ export function convertSubstitutionParam(param) {
2
+ if (param == null)
3
+ return 'NULL';
4
+ if (typeof param === 'string' || param instanceof String) {
5
+ return `'${String(param)}'`;
6
+ }
7
+ else if (typeof param === 'boolean' || param instanceof Boolean) {
8
+ return String(param).toUpperCase();
9
+ }
10
+ else if (param instanceof Date) {
11
+ return `'${param.toISOString()}'`;
12
+ }
13
+ else if (typeof param === 'number' || param instanceof Number) {
14
+ return String(param);
15
+ }
16
+ return `'${JSON.stringify(param)}'`;
17
+ }
18
+ // node mysql doesn't have an typeCast equivalent solution for the other direction
19
+ // node-postgres: https://github.com/brianc/node-postgres/issues/442
20
+ export function convertEscapedParam(param) {
21
+ if (typeof param === 'object' && !(param == null || param instanceof String || param instanceof Number ||
22
+ param instanceof Boolean || param instanceof Date)) {
23
+ return JSON.stringify(param);
24
+ }
25
+ return param;
26
+ }
27
+ //# sourceMappingURL=param-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB,CAAC,KAAU;IAC/C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACvD,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,KAAU;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,MAAM,IAAI,KAAK,YAAY,MAAM;QAClG,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { QueryEngine, ConverterOptions } from "./types";
2
+ export declare function convertQueryToParameterizedSQL(query: any, options: ConverterOptions, engine: QueryEngine): {
3
+ sql: string;
4
+ params: any[];
5
+ };
@@ -0,0 +1,15 @@
1
+ import { createQueryConverter } from "./query-converter";
2
+ import { convertEscapedParam } from './param-converter';
3
+ let pgParamConverter = (index) => '$' + index;
4
+ let mySqlParamConverter = (index) => '?';
5
+ function convertSingleParam(param, params, paramConverter) {
6
+ params.push(convertEscapedParam(param));
7
+ return paramConverter(params.length);
8
+ }
9
+ export function convertQueryToParameterizedSQL(query, options, engine) {
10
+ let params = [];
11
+ let paramConverter = engine === 'mysql' ? mySqlParamConverter : pgParamConverter;
12
+ let sql = createQueryConverter((param) => convertSingleParam(param, params, paramConverter), options, engine)(query);
13
+ return { sql, params };
14
+ }
15
+ //# sourceMappingURL=parameterized-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameterized-converter.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAGtD,IAAI,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC;AACtD,IAAI,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC;AAEjD,SAAS,kBAAkB,CAAC,KAAU,EAAE,MAAa,EAAE,cAAsC;IACzF,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,KAAU,EAAE,OAAyB,EAAE,MAAmB;IACrG,IAAI,MAAM,GAAU,EAAE,CAAC;IAEvB,IAAI,cAAc,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACjF,IAAI,GAAG,GAAG,oBAAoB,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAE1H,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { QueryEngine, ConverterOptions } from "./types";
2
+ export declare function createQueryConverter(paramConverter: (param: any) => string, options: ConverterOptions, engine: QueryEngine): (query: any) => string;