@relq/orm 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +236 -0
  3. package/dist/cjs/__test-types.cjs +17 -0
  4. package/dist/cjs/addon/cursor.cjs +1473 -0
  5. package/dist/cjs/addon/pg.cjs +4969 -0
  6. package/dist/cjs/cache/index.cjs +9 -0
  7. package/dist/cjs/cache/query-cache.cjs +311 -0
  8. package/dist/cjs/condition/array-condition-builder.cjs +527 -0
  9. package/dist/cjs/condition/array-numeric-condition-builder.cjs +186 -0
  10. package/dist/cjs/condition/array-specialized-condition-builder.cjs +206 -0
  11. package/dist/cjs/condition/array-string-condition-builder.cjs +146 -0
  12. package/dist/cjs/condition/base-condition-builder.cjs +2 -0
  13. package/dist/cjs/condition/condition-collector.cjs +461 -0
  14. package/dist/cjs/condition/fulltext-condition-builder.cjs +61 -0
  15. package/dist/cjs/condition/geometric-condition-builder.cjs +228 -0
  16. package/dist/cjs/condition/index.cjs +29 -0
  17. package/dist/cjs/condition/jsonb-condition-builder.cjs +448 -0
  18. package/dist/cjs/condition/network-condition-builder.cjs +237 -0
  19. package/dist/cjs/condition/postgis-condition-builder.cjs +188 -0
  20. package/dist/cjs/condition/range-condition-builder.cjs +98 -0
  21. package/dist/cjs/core/helpers/ConnectedAggregateBuilder.cjs +132 -0
  22. package/dist/cjs/core/helpers/ConnectedCTEBuilder.cjs +53 -0
  23. package/dist/cjs/core/helpers/ConnectedCountBuilder.cjs +73 -0
  24. package/dist/cjs/core/helpers/ConnectedDeleteBuilder.cjs +65 -0
  25. package/dist/cjs/core/helpers/ConnectedInsertBuilder.cjs +112 -0
  26. package/dist/cjs/core/helpers/ConnectedInsertFromSelectBuilder.cjs +66 -0
  27. package/dist/cjs/core/helpers/ConnectedQueryBuilder.cjs +146 -0
  28. package/dist/cjs/core/helpers/ConnectedRawQueryBuilder.cjs +46 -0
  29. package/dist/cjs/core/helpers/ConnectedSelectBuilder.cjs +331 -0
  30. package/dist/cjs/core/helpers/ConnectedTransactionBuilder.cjs +105 -0
  31. package/dist/cjs/core/helpers/ConnectedUpdateBuilder.cjs +79 -0
  32. package/dist/cjs/core/helpers/PaginateBuilder.cjs +178 -0
  33. package/dist/cjs/core/helpers/ReturningExecutor.cjs +70 -0
  34. package/dist/cjs/core/helpers/capability-guard.cjs +10 -0
  35. package/dist/cjs/core/helpers/index.cjs +31 -0
  36. package/dist/cjs/core/helpers/methods.cjs +10 -0
  37. package/dist/cjs/core/helpers/query-convenience.cjs +238 -0
  38. package/dist/cjs/core/helpers/select-joins.cjs +251 -0
  39. package/dist/cjs/core/helpers/select-pagination.cjs +233 -0
  40. package/dist/cjs/core/helpers/select-types.cjs +2 -0
  41. package/dist/cjs/core/pg-family/cockroachdb-client/capabilities.cjs +31 -0
  42. package/dist/cjs/core/pg-family/cockroachdb-client/index.cjs +7 -0
  43. package/dist/cjs/core/pg-family/cockroachdb-client/relq-cockroach.cjs +16 -0
  44. package/dist/cjs/core/pg-family/dsql-client/capabilities.cjs +31 -0
  45. package/dist/cjs/core/pg-family/dsql-client/index.cjs +7 -0
  46. package/dist/cjs/core/pg-family/dsql-client/relq-dsql.cjs +16 -0
  47. package/dist/cjs/core/pg-family/index.cjs +19 -0
  48. package/dist/cjs/core/pg-family/nile-client/capabilities.cjs +31 -0
  49. package/dist/cjs/core/pg-family/nile-client/index.cjs +7 -0
  50. package/dist/cjs/core/pg-family/nile-client/relq-nile.cjs +36 -0
  51. package/dist/cjs/core/pg-family/nile-client/tenant-context.cjs +44 -0
  52. package/dist/cjs/core/pg-family/pg-client/capabilities.cjs +31 -0
  53. package/dist/cjs/core/pg-family/pg-client/index.cjs +7 -0
  54. package/dist/cjs/core/pg-family/pg-client/relq-postgres.cjs +43 -0
  55. package/dist/cjs/core/pg-family/shared/pg-base.cjs +385 -0
  56. package/dist/cjs/core/pg-family/shared/pg-dialect.cjs +67 -0
  57. package/dist/cjs/core/pg-family/shared/pg-error-parser.cjs +34 -0
  58. package/dist/cjs/core/pg-family/shared/pg-type-coercion.cjs +14 -0
  59. package/dist/cjs/core/relq-base.cjs +307 -0
  60. package/dist/cjs/core/relq-client.cjs +56 -0
  61. package/dist/cjs/core/shared/cleanup.cjs +36 -0
  62. package/dist/cjs/core/shared/column-mapping.cjs +97 -0
  63. package/dist/cjs/core/shared/errors.cjs +17 -0
  64. package/dist/cjs/core/shared/index.cjs +24 -0
  65. package/dist/cjs/core/shared/table-accessor.cjs +22 -0
  66. package/dist/cjs/core/shared/transform.cjs +35 -0
  67. package/dist/cjs/core/shared/types.cjs +2 -0
  68. package/dist/cjs/core/shared/validation.cjs +140 -0
  69. package/dist/cjs/core/types/core.types.cjs +2 -0
  70. package/dist/cjs/count/count-builder.cjs +88 -0
  71. package/dist/cjs/count/index.cjs +5 -0
  72. package/dist/cjs/delete/delete-builder.cjs +176 -0
  73. package/dist/cjs/delete/index.cjs +5 -0
  74. package/dist/cjs/explain/explain-builder.cjs +99 -0
  75. package/dist/cjs/explain/index.cjs +5 -0
  76. package/dist/cjs/index.cjs +26 -0
  77. package/dist/cjs/insert/conflict-builder.cjs +213 -0
  78. package/dist/cjs/insert/index.cjs +5 -0
  79. package/dist/cjs/insert/insert-builder.cjs +320 -0
  80. package/dist/cjs/insert/insert-from-select-builder.cjs +86 -0
  81. package/dist/cjs/pubsub/index.cjs +7 -0
  82. package/dist/cjs/pubsub/listen-notify-builder.cjs +57 -0
  83. package/dist/cjs/pubsub/listener-connection.cjs +180 -0
  84. package/dist/cjs/raw/index.cjs +8 -0
  85. package/dist/cjs/raw/raw-query-builder.cjs +27 -0
  86. package/dist/cjs/raw/sql-template.cjs +73 -0
  87. package/dist/cjs/select/aggregate-builder.cjs +179 -0
  88. package/dist/cjs/select/index.cjs +16 -0
  89. package/dist/cjs/select/join-builder.cjs +192 -0
  90. package/dist/cjs/select/join-condition-builder.cjs +189 -0
  91. package/dist/cjs/select/join-internals.cjs +5 -0
  92. package/dist/cjs/select/join-many-condition-builder.cjs +159 -0
  93. package/dist/cjs/select/scalar-query-builder.cjs +134 -0
  94. package/dist/cjs/select/scalar-select-builder.cjs +78 -0
  95. package/dist/cjs/select/select-builder.cjs +426 -0
  96. package/dist/cjs/select/sql-expression.cjs +38 -0
  97. package/dist/cjs/select/table-proxy.cjs +99 -0
  98. package/dist/cjs/shared/aws-dsql.cjs +181 -0
  99. package/dist/cjs/shared/errors/relq-errors.cjs +361 -0
  100. package/dist/cjs/shared/pg-format.cjs +383 -0
  101. package/dist/cjs/shared/types/config-types.cjs +51 -0
  102. package/dist/cjs/transaction/index.cjs +6 -0
  103. package/dist/cjs/transaction/transaction-builder.cjs +78 -0
  104. package/dist/cjs/types/aggregate-types.cjs +2 -0
  105. package/dist/cjs/types/inference-types.cjs +18 -0
  106. package/dist/cjs/types/pagination-types.cjs +7 -0
  107. package/dist/cjs/types/result-types.cjs +2 -0
  108. package/dist/cjs/types/scalar-types.cjs +2 -0
  109. package/dist/cjs/types/schema-types.cjs +2 -0
  110. package/dist/cjs/types/subscription-types.cjs +2 -0
  111. package/dist/cjs/types.cjs +2 -0
  112. package/dist/cjs/update/array-update-builder.cjs +232 -0
  113. package/dist/cjs/update/index.cjs +16 -0
  114. package/dist/cjs/update/jsonb-update-builder.cjs +219 -0
  115. package/dist/cjs/update/update-builder.cjs +274 -0
  116. package/dist/cjs/utils/addon/pg/cursor.cjs +8 -0
  117. package/dist/cjs/utils/addon/pg/pg.cjs +23 -0
  118. package/dist/cjs/utils/case-converter.cjs +58 -0
  119. package/dist/cjs/utils/env-resolver.cjs +226 -0
  120. package/dist/cjs/utils/environment-detection.cjs +124 -0
  121. package/dist/cjs/utils/fk-resolver.cjs +186 -0
  122. package/dist/cjs/utils/index.cjs +25 -0
  123. package/dist/cjs/utils/pool-defaults.cjs +91 -0
  124. package/dist/cjs/utils/type-coercion.cjs +120 -0
  125. package/dist/cjs/window/index.cjs +5 -0
  126. package/dist/cjs/window/window-builder.cjs +80 -0
  127. package/dist/esm/__test-types.js +15 -0
  128. package/dist/esm/addon/cursor.js +1440 -0
  129. package/dist/esm/addon/pg.js +4931 -0
  130. package/dist/esm/cache/index.js +1 -0
  131. package/dist/esm/cache/query-cache.js +303 -0
  132. package/dist/esm/condition/array-condition-builder.js +519 -0
  133. package/dist/esm/condition/array-numeric-condition-builder.js +182 -0
  134. package/dist/esm/condition/array-specialized-condition-builder.js +200 -0
  135. package/dist/esm/condition/array-string-condition-builder.js +142 -0
  136. package/dist/esm/condition/base-condition-builder.js +1 -0
  137. package/dist/esm/condition/condition-collector.js +452 -0
  138. package/dist/esm/condition/fulltext-condition-builder.js +53 -0
  139. package/dist/esm/condition/geometric-condition-builder.js +220 -0
  140. package/dist/esm/condition/index.js +8 -0
  141. package/dist/esm/condition/jsonb-condition-builder.js +439 -0
  142. package/dist/esm/condition/network-condition-builder.js +229 -0
  143. package/dist/esm/condition/postgis-condition-builder.js +180 -0
  144. package/dist/esm/condition/range-condition-builder.js +90 -0
  145. package/dist/esm/core/helpers/ConnectedAggregateBuilder.js +128 -0
  146. package/dist/esm/core/helpers/ConnectedCTEBuilder.js +49 -0
  147. package/dist/esm/core/helpers/ConnectedCountBuilder.js +69 -0
  148. package/dist/esm/core/helpers/ConnectedDeleteBuilder.js +61 -0
  149. package/dist/esm/core/helpers/ConnectedInsertBuilder.js +108 -0
  150. package/dist/esm/core/helpers/ConnectedInsertFromSelectBuilder.js +62 -0
  151. package/dist/esm/core/helpers/ConnectedQueryBuilder.js +142 -0
  152. package/dist/esm/core/helpers/ConnectedRawQueryBuilder.js +42 -0
  153. package/dist/esm/core/helpers/ConnectedSelectBuilder.js +327 -0
  154. package/dist/esm/core/helpers/ConnectedTransactionBuilder.js +100 -0
  155. package/dist/esm/core/helpers/ConnectedUpdateBuilder.js +75 -0
  156. package/dist/esm/core/helpers/PaginateBuilder.js +174 -0
  157. package/dist/esm/core/helpers/ReturningExecutor.js +66 -0
  158. package/dist/esm/core/helpers/capability-guard.js +7 -0
  159. package/dist/esm/core/helpers/index.js +13 -0
  160. package/dist/esm/core/helpers/methods.js +6 -0
  161. package/dist/esm/core/helpers/query-convenience.js +194 -0
  162. package/dist/esm/core/helpers/select-joins.js +246 -0
  163. package/dist/esm/core/helpers/select-pagination.js +226 -0
  164. package/dist/esm/core/helpers/select-types.js +1 -0
  165. package/dist/esm/core/pg-family/cockroachdb-client/capabilities.js +28 -0
  166. package/dist/esm/core/pg-family/cockroachdb-client/index.js +2 -0
  167. package/dist/esm/core/pg-family/cockroachdb-client/relq-cockroach.js +12 -0
  168. package/dist/esm/core/pg-family/dsql-client/capabilities.js +28 -0
  169. package/dist/esm/core/pg-family/dsql-client/index.js +2 -0
  170. package/dist/esm/core/pg-family/dsql-client/relq-dsql.js +12 -0
  171. package/dist/esm/core/pg-family/index.js +6 -0
  172. package/dist/esm/core/pg-family/nile-client/capabilities.js +28 -0
  173. package/dist/esm/core/pg-family/nile-client/index.js +2 -0
  174. package/dist/esm/core/pg-family/nile-client/relq-nile.js +32 -0
  175. package/dist/esm/core/pg-family/nile-client/tenant-context.js +40 -0
  176. package/dist/esm/core/pg-family/pg-client/capabilities.js +28 -0
  177. package/dist/esm/core/pg-family/pg-client/index.js +2 -0
  178. package/dist/esm/core/pg-family/pg-client/relq-postgres.js +39 -0
  179. package/dist/esm/core/pg-family/shared/pg-base.js +347 -0
  180. package/dist/esm/core/pg-family/shared/pg-dialect.js +63 -0
  181. package/dist/esm/core/pg-family/shared/pg-error-parser.js +29 -0
  182. package/dist/esm/core/pg-family/shared/pg-type-coercion.js +6 -0
  183. package/dist/esm/core/relq-base.js +270 -0
  184. package/dist/esm/core/relq-client.js +48 -0
  185. package/dist/esm/core/shared/cleanup.js +27 -0
  186. package/dist/esm/core/shared/column-mapping.js +90 -0
  187. package/dist/esm/core/shared/errors.js +13 -0
  188. package/dist/esm/core/shared/index.js +6 -0
  189. package/dist/esm/core/shared/table-accessor.js +19 -0
  190. package/dist/esm/core/shared/transform.js +30 -0
  191. package/dist/esm/core/shared/types.js +1 -0
  192. package/dist/esm/core/shared/validation.js +136 -0
  193. package/dist/esm/core/types/core.types.js +1 -0
  194. package/dist/esm/count/count-builder.js +81 -0
  195. package/dist/esm/count/index.js +1 -0
  196. package/dist/esm/delete/delete-builder.js +169 -0
  197. package/dist/esm/delete/index.js +1 -0
  198. package/dist/esm/explain/explain-builder.js +95 -0
  199. package/dist/esm/explain/index.js +1 -0
  200. package/dist/esm/index.js +7 -0
  201. package/dist/esm/insert/conflict-builder.js +202 -0
  202. package/dist/esm/insert/index.js +1 -0
  203. package/dist/esm/insert/insert-builder.js +313 -0
  204. package/dist/esm/insert/insert-from-select-builder.js +79 -0
  205. package/dist/esm/pubsub/index.js +1 -0
  206. package/dist/esm/pubsub/listen-notify-builder.js +48 -0
  207. package/dist/esm/pubsub/listener-connection.js +173 -0
  208. package/dist/esm/raw/index.js +2 -0
  209. package/dist/esm/raw/raw-query-builder.js +20 -0
  210. package/dist/esm/raw/sql-template.js +66 -0
  211. package/dist/esm/select/aggregate-builder.js +172 -0
  212. package/dist/esm/select/index.js +4 -0
  213. package/dist/esm/select/join-builder.js +184 -0
  214. package/dist/esm/select/join-condition-builder.js +181 -0
  215. package/dist/esm/select/join-internals.js +2 -0
  216. package/dist/esm/select/join-many-condition-builder.js +151 -0
  217. package/dist/esm/select/scalar-query-builder.js +126 -0
  218. package/dist/esm/select/scalar-select-builder.js +70 -0
  219. package/dist/esm/select/select-builder.js +419 -0
  220. package/dist/esm/select/sql-expression.js +33 -0
  221. package/dist/esm/select/table-proxy.js +91 -0
  222. package/dist/esm/shared/aws-dsql.js +140 -0
  223. package/dist/esm/shared/errors/relq-errors.js +339 -0
  224. package/dist/esm/shared/pg-format.js +375 -0
  225. package/dist/esm/shared/types/config-types.js +46 -0
  226. package/dist/esm/transaction/index.js +1 -0
  227. package/dist/esm/transaction/transaction-builder.js +70 -0
  228. package/dist/esm/types/aggregate-types.js +1 -0
  229. package/dist/esm/types/inference-types.js +12 -0
  230. package/dist/esm/types/pagination-types.js +4 -0
  231. package/dist/esm/types/result-types.js +1 -0
  232. package/dist/esm/types/scalar-types.js +1 -0
  233. package/dist/esm/types/schema-types.js +1 -0
  234. package/dist/esm/types/subscription-types.js +1 -0
  235. package/dist/esm/types.js +1 -0
  236. package/dist/esm/update/array-update-builder.js +219 -0
  237. package/dist/esm/update/index.js +3 -0
  238. package/dist/esm/update/jsonb-update-builder.js +211 -0
  239. package/dist/esm/update/update-builder.js +267 -0
  240. package/dist/esm/utils/addon/pg/cursor.js +1 -0
  241. package/dist/esm/utils/addon/pg/pg.js +2 -0
  242. package/dist/esm/utils/case-converter.js +55 -0
  243. package/dist/esm/utils/env-resolver.js +213 -0
  244. package/dist/esm/utils/environment-detection.js +114 -0
  245. package/dist/esm/utils/fk-resolver.js +178 -0
  246. package/dist/esm/utils/index.js +4 -0
  247. package/dist/esm/utils/pool-defaults.js +85 -0
  248. package/dist/esm/utils/type-coercion.js +112 -0
  249. package/dist/esm/window/index.js +1 -0
  250. package/dist/esm/window/window-builder.js +73 -0
  251. package/dist/index.cjs +1 -0
  252. package/dist/index.d.ts +7281 -0
  253. package/dist/index.js +1 -0
  254. package/package.json +52 -0
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectedInsertBuilder = void 0;
4
+ const condition_collector_1 = require("../../condition/condition-collector.cjs");
5
+ const methods_1 = require("./methods.cjs");
6
+ const ReturningExecutor_1 = require("./ReturningExecutor.cjs");
7
+ const capability_guard_1 = require("./capability-guard.cjs");
8
+ class ConnectedInsertBuilder {
9
+ builder;
10
+ relq;
11
+ tableName;
12
+ schemaKey;
13
+ constructor(builder, relq, tableName, schemaKey) {
14
+ this.builder = builder;
15
+ this.relq = relq;
16
+ this.tableName = tableName;
17
+ this.schemaKey = schemaKey;
18
+ this.setupColumnResolver();
19
+ }
20
+ setupColumnResolver() {
21
+ if (!this.tableName && !this.schemaKey) {
22
+ return;
23
+ }
24
+ const internal = this.relq[methods_1.INTERNAL];
25
+ const tableDef = internal.getTableDef(this.schemaKey || this.tableName);
26
+ if (!tableDef) {
27
+ return;
28
+ }
29
+ const tableColumns = tableDef.$columns || tableDef;
30
+ this.builder.setColumnResolver((column) => {
31
+ const columnDef = tableColumns[column];
32
+ if (columnDef) {
33
+ return columnDef.$columnName || column;
34
+ }
35
+ return column;
36
+ });
37
+ this.builder.setColumnTypeResolver((column) => {
38
+ const columnDef = tableColumns[column];
39
+ if (!columnDef) {
40
+ return undefined;
41
+ }
42
+ const type = columnDef.$type;
43
+ if (typeof type !== 'string') {
44
+ return undefined;
45
+ }
46
+ const isArray = columnDef.$array === true;
47
+ const baseType = type.replace(/\[\]$/, '').toLowerCase();
48
+ return { type: baseType, isArray };
49
+ });
50
+ }
51
+ addRow(row) {
52
+ this.builder.addRow(row);
53
+ return this;
54
+ }
55
+ addRows(rows) {
56
+ this.builder.addRows(rows);
57
+ return this;
58
+ }
59
+ clear() {
60
+ this.builder.clear();
61
+ return this;
62
+ }
63
+ get total() {
64
+ return this.builder.total;
65
+ }
66
+ doNothing(...args) {
67
+ const columns = [...new Set(args.flat())];
68
+ this.builder._onConflict(columns.length > 0 ? columns : null, q => q.doNothing());
69
+ return this;
70
+ }
71
+ doUpdate(columns, values, where) {
72
+ const cols = [...new Set(Array.isArray(columns) ? columns : [columns])];
73
+ this.builder._onConflict(cols, (conflictBuilder) => {
74
+ conflictBuilder.doUpdate(values);
75
+ if (where) {
76
+ const collector = new condition_collector_1.ConditionCollector();
77
+ where(collector);
78
+ const conditions = collector.getConditions();
79
+ if (conditions.length > 0) {
80
+ const whereClause = (0, condition_collector_1.buildConditionsSQL)(conditions);
81
+ conflictBuilder.where(whereClause);
82
+ }
83
+ }
84
+ });
85
+ return this;
86
+ }
87
+ toString() {
88
+ return this.builder.toString();
89
+ }
90
+ async run(withMetadata) {
91
+ (0, methods_1.debugLog)(this.relq[methods_1.INTERNAL]?.config, `ConnectedInsertBuilder.run called for table: ${this.builder.tableName}`);
92
+ const internalRelq = this.relq[methods_1.INTERNAL];
93
+ for (const row of this.builder.insertData) {
94
+ internalRelq.validateData(this.builder.tableName, row, 'insert');
95
+ }
96
+ const sql = this.builder.toString();
97
+ const result = await internalRelq.executeRun(sql);
98
+ if (withMetadata) {
99
+ return result;
100
+ }
101
+ return result.metadata.rowCount ?? 0;
102
+ }
103
+ returning(columns) {
104
+ if (columns === null) {
105
+ return this;
106
+ }
107
+ (0, capability_guard_1.requireCapability)(this.relq, 'returning', 'RETURNING clause', 'Use a SELECT query after the INSERT to retrieve inserted data');
108
+ this.builder.returning(columns);
109
+ return new ReturningExecutor_1.ReturningExecutor(this.builder, this.relq, this.tableName, this.schemaKey);
110
+ }
111
+ }
112
+ exports.ConnectedInsertBuilder = ConnectedInsertBuilder;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectedInsertFromSelectBuilder = void 0;
4
+ const methods_1 = require("./methods.cjs");
5
+ const ReturningExecutor_1 = require("./ReturningExecutor.cjs");
6
+ const capability_guard_1 = require("./capability-guard.cjs");
7
+ class ConnectedInsertFromSelectBuilder {
8
+ builder;
9
+ relq;
10
+ tableName;
11
+ schemaKey;
12
+ constructor(builder, relq, tableName, schemaKey) {
13
+ this.builder = builder;
14
+ this.relq = relq;
15
+ this.tableName = tableName;
16
+ this.schemaKey = schemaKey;
17
+ this.setupColumnResolver();
18
+ }
19
+ setupColumnResolver() {
20
+ if (!this.tableName && !this.schemaKey)
21
+ return;
22
+ const internal = this.relq[methods_1.INTERNAL];
23
+ const tableDef = internal.getTableDef(this.schemaKey || this.tableName);
24
+ if (!tableDef)
25
+ return;
26
+ const tableColumns = tableDef.$columns || tableDef;
27
+ this.builder.setColumnResolver((column) => {
28
+ const columnDef = tableColumns[column];
29
+ if (columnDef) {
30
+ return columnDef.$columnName || column;
31
+ }
32
+ return column;
33
+ });
34
+ }
35
+ doNothing(...args) {
36
+ const columns = [...new Set(args.flat())];
37
+ this.builder.onConflictDoNothing(columns.length > 0 ? columns : undefined);
38
+ return this;
39
+ }
40
+ doUpdate(columns, updateData) {
41
+ const cols = Array.isArray(columns) ? columns : [columns];
42
+ this.builder.onConflictDoUpdate(cols, updateData);
43
+ return this;
44
+ }
45
+ toString() {
46
+ return this.builder.toString();
47
+ }
48
+ async run(withMetadata) {
49
+ (0, methods_1.debugLog)(this.relq[methods_1.INTERNAL]?.config, `ConnectedInsertFromSelectBuilder.run called for table: ${this.builder.tableName}`);
50
+ const sql = this.builder.toString();
51
+ const result = await this.relq[methods_1.INTERNAL].executeRun(sql);
52
+ if (withMetadata) {
53
+ return result;
54
+ }
55
+ return result.metadata.rowCount ?? 0;
56
+ }
57
+ returning(columns) {
58
+ if (columns === null) {
59
+ return this;
60
+ }
61
+ (0, capability_guard_1.requireCapability)(this.relq, 'returning', 'RETURNING clause', 'Use a SELECT query after the INSERT to retrieve inserted data');
62
+ this.builder.returning(columns);
63
+ return new ReturningExecutor_1.ReturningExecutor(this.builder, this.relq, this.tableName, this.schemaKey);
64
+ }
65
+ }
66
+ exports.ConnectedInsertFromSelectBuilder = ConnectedInsertFromSelectBuilder;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectedQueryBuilder = void 0;
4
+ const count_builder_1 = require("../../count/count-builder.cjs");
5
+ const delete_builder_1 = require("../../delete/delete-builder.cjs");
6
+ const insert_builder_1 = require("../../insert/insert-builder.cjs");
7
+ const insert_from_select_builder_1 = require("../../insert/insert-from-select-builder.cjs");
8
+ const aggregate_builder_1 = require("../../select/aggregate-builder.cjs");
9
+ const select_builder_1 = require("../../select/select-builder.cjs");
10
+ const update_builder_1 = require("../../update/update-builder.cjs");
11
+ const ConnectedAggregateBuilder_1 = require("./ConnectedAggregateBuilder.cjs");
12
+ const ConnectedCountBuilder_1 = require("./ConnectedCountBuilder.cjs");
13
+ const ConnectedDeleteBuilder_1 = require("./ConnectedDeleteBuilder.cjs");
14
+ const ConnectedInsertBuilder_1 = require("./ConnectedInsertBuilder.cjs");
15
+ const ConnectedInsertFromSelectBuilder_1 = require("./ConnectedInsertFromSelectBuilder.cjs");
16
+ const ConnectedSelectBuilder_1 = require("./ConnectedSelectBuilder.cjs");
17
+ const ConnectedUpdateBuilder_1 = require("./ConnectedUpdateBuilder.cjs");
18
+ const methods_1 = require("./methods.cjs");
19
+ const PaginateBuilder_1 = require("./PaginateBuilder.cjs");
20
+ const table_accessor_1 = require("../shared/table-accessor.cjs");
21
+ const query_convenience_1 = require("./query-convenience.cjs");
22
+ class ConnectedQueryBuilder {
23
+ tableName;
24
+ relq;
25
+ schemaKey;
26
+ constructor(tableName, relq, schemaKey) {
27
+ this.tableName = tableName;
28
+ this.relq = relq;
29
+ this.schemaKey = schemaKey;
30
+ }
31
+ get ctx() {
32
+ return { relq: this.relq, tableName: this.tableName };
33
+ }
34
+ select(...args) {
35
+ let columns;
36
+ if (args.length === 0) {
37
+ columns = undefined;
38
+ }
39
+ else if (args.length === 1) {
40
+ columns = args[0];
41
+ }
42
+ else {
43
+ columns = args;
44
+ }
45
+ if (columns !== undefined) {
46
+ if (Array.isArray(columns)) {
47
+ if (columns.length === 0) {
48
+ throw new Error('select() requires at least one column. Use .select() without arguments for SELECT *');
49
+ }
50
+ }
51
+ else if (typeof columns === 'string') {
52
+ if (columns === '' || columns === '*') {
53
+ throw new Error(`Invalid column name: "${columns}". Use .select() without arguments for SELECT *, or specify column names`);
54
+ }
55
+ }
56
+ }
57
+ let dbColumns = columns;
58
+ if (columns && this.relq[methods_1.INTERNAL].hasColumnMapping()) {
59
+ if (Array.isArray(columns)) {
60
+ dbColumns = columns.map(col => {
61
+ if (Array.isArray(col)) {
62
+ const transformed = this.relq[methods_1.INTERNAL].transformToDbColumns(this.tableName, { [col[0]]: true });
63
+ return [Object.keys(transformed)[0], col[1]];
64
+ }
65
+ else {
66
+ const transformed = this.relq[methods_1.INTERNAL].transformToDbColumns(this.tableName, { [col]: true });
67
+ return Object.keys(transformed)[0];
68
+ }
69
+ });
70
+ }
71
+ else {
72
+ const transformed = this.relq[methods_1.INTERNAL].transformToDbColumns(this.tableName, { [columns]: true });
73
+ dbColumns = Object.keys(transformed)[0];
74
+ }
75
+ }
76
+ const builder = new select_builder_1.SelectBuilder(this.tableName, dbColumns);
77
+ return new ConnectedSelectBuilder_1.ConnectedSelectBuilder(builder, this.relq, this.tableName, columns, this.schemaKey);
78
+ }
79
+ insert(data) {
80
+ const rows = Array.isArray(data) ? data : [data];
81
+ if (rows.length === 0) {
82
+ const builder = new insert_builder_1.InsertBuilder(this.tableName, {});
83
+ builder.clear();
84
+ return new ConnectedInsertBuilder_1.ConnectedInsertBuilder(builder, this.relq, this.tableName, this.schemaKey);
85
+ }
86
+ const builder = new insert_builder_1.InsertBuilder(this.tableName, rows[0]);
87
+ for (let i = 1; i < rows.length; i++) {
88
+ builder.addRow(rows[i]);
89
+ }
90
+ return new ConnectedInsertBuilder_1.ConnectedInsertBuilder(builder, this.relq, this.tableName, this.schemaKey);
91
+ }
92
+ update(data) {
93
+ const builder = new update_builder_1.UpdateBuilder(this.tableName, data);
94
+ return new ConnectedUpdateBuilder_1.ConnectedUpdateBuilder(builder, this.relq, this.tableName, this.schemaKey);
95
+ }
96
+ delete() {
97
+ const builder = new delete_builder_1.DeleteBuilder(this.tableName);
98
+ return new ConnectedDeleteBuilder_1.ConnectedDeleteBuilder(builder, this.relq, this.tableName, this.schemaKey);
99
+ }
100
+ count() {
101
+ const builder = new count_builder_1.CountBuilder(this.tableName);
102
+ return new ConnectedCountBuilder_1.ConnectedCountBuilder(builder, this.relq, this.tableName);
103
+ }
104
+ aggregate() {
105
+ const builder = new aggregate_builder_1.AggregateQueryBuilder(this.tableName);
106
+ return new ConnectedAggregateBuilder_1.ConnectedAggregateBuilder(builder, this.relq, this.tableName);
107
+ }
108
+ async findById(id) {
109
+ return (0, query_convenience_1.executeFindById)(this.ctx, id, () => (0, query_convenience_1.getPrimaryKeyColumn)(this.relq, this.tableName));
110
+ }
111
+ async findOne(filter) {
112
+ return (0, query_convenience_1.executeFindOne)(this.ctx, filter);
113
+ }
114
+ async findMany(filter) {
115
+ return (0, query_convenience_1.executeFindMany)(this.ctx, filter);
116
+ }
117
+ async exists(filter) {
118
+ return (0, query_convenience_1.executeExists)(this.ctx, filter);
119
+ }
120
+ async upsert(options) {
121
+ return (0, query_convenience_1.executeUpsert)(this.ctx, {
122
+ where: options.where,
123
+ create: options.create,
124
+ update: options.update,
125
+ });
126
+ }
127
+ insertFrom(columns, selectCallback) {
128
+ const tables = (0, table_accessor_1.createTableAccessor)(this.relq, this.relq.schema);
129
+ const selectQuery = selectCallback(tables);
130
+ const builder = new insert_from_select_builder_1.InsertFromSelectBuilder(this.tableName, columns, selectQuery.toString());
131
+ return new ConnectedInsertFromSelectBuilder_1.ConnectedInsertFromSelectBuilder(builder, this.relq, this.tableName, this.schemaKey);
132
+ }
133
+ paginate(options = {}) {
134
+ return new PaginateBuilder_1.PaginateBuilder(this.relq, this.tableName, options.columns, options.where, options.orderBy);
135
+ }
136
+ async createWith(options) {
137
+ return (0, query_convenience_1.executeCreateWith)(this.ctx, options.data, options.with);
138
+ }
139
+ async softDelete(filter) {
140
+ return (0, query_convenience_1.executeSoftDelete)(this.ctx, filter);
141
+ }
142
+ async restore(filter) {
143
+ return (0, query_convenience_1.executeRestore)(this.ctx, filter);
144
+ }
145
+ }
146
+ exports.ConnectedQueryBuilder = ConnectedQueryBuilder;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectedRawQueryBuilder = void 0;
4
+ const raw_1 = require("../../raw/index.cjs");
5
+ const methods_1 = require("./methods.cjs");
6
+ class ConnectedRawQueryBuilder {
7
+ query;
8
+ params;
9
+ relq;
10
+ builder;
11
+ constructor(query, params, relq) {
12
+ this.query = query;
13
+ this.params = params;
14
+ this.relq = relq;
15
+ const convertedQuery = this.convertPlaceholders(query);
16
+ this.builder = new raw_1.RawQueryBuilder(convertedQuery, this.params);
17
+ }
18
+ convertPlaceholders(query) {
19
+ let index = 0;
20
+ return query.replace(/\?/g, () => `$${++index}`);
21
+ }
22
+ async all() {
23
+ const sql = this.builder.toString();
24
+ return this.relq[methods_1.INTERNAL].executeSelect(sql);
25
+ }
26
+ async get() {
27
+ const sql = this.builder.toString();
28
+ return this.relq[methods_1.INTERNAL].executeSelectOne(sql);
29
+ }
30
+ async getMany(count) {
31
+ const sql = this.builder.toString();
32
+ const limitedSql = sql.toUpperCase().includes('LIMIT')
33
+ ? sql
34
+ : `${sql} LIMIT ${count}`;
35
+ return this.relq[methods_1.INTERNAL].executeSelect(limitedSql);
36
+ }
37
+ async run() {
38
+ const sql = this.builder.toString();
39
+ return this.relq[methods_1.INTERNAL].executeRun(sql);
40
+ }
41
+ async count() {
42
+ const sql = this.builder.toString();
43
+ return this.relq[methods_1.INTERNAL].executeCount(sql);
44
+ }
45
+ }
46
+ exports.ConnectedRawQueryBuilder = ConnectedRawQueryBuilder;