orange-orm 4.5.0-beta.0 → 4.5.0-beta.2

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 (310) hide show
  1. package/README.md +6 -1
  2. package/docs/changelog.md +4 -0
  3. package/package.json +10 -6
  4. package/src/applyPatch.js +5 -2
  5. package/src/client/index.js +3 -2
  6. package/src/client/index.mjs +13552 -6381
  7. package/src/client/rollup.config.js +24 -4
  8. package/src/client/stringify.js +2 -9
  9. package/src/createDomain.js +7 -28
  10. package/src/d1/newDatabase.js +23 -37
  11. package/src/d1/newPool.js +6 -6
  12. package/src/d1/newTransaction.js +1 -0
  13. package/src/d1/pool/newGenericPool.js +2 -14
  14. package/src/emitEvent.js +6 -4
  15. package/src/emptyFilter.js +12 -12
  16. package/src/format.js +9 -0
  17. package/src/generic-pool.js +274 -313
  18. package/src/getManyDto/newQuery.js +5 -5
  19. package/src/getManyDto/query/newSingleQuery.js +5 -5
  20. package/src/getManyDto.js +73 -41
  21. package/src/hostExpress/cycle.ts +211 -0
  22. package/src/hostExpress/executePath.js +361 -357
  23. package/src/hostExpress.js +2 -7
  24. package/src/hostLocal.js +9 -9
  25. package/src/index.js +13 -17
  26. package/src/indexBrowser.js +39 -0
  27. package/src/mssql/newDatabase.js +19 -31
  28. package/src/mssql/newPool.js +2 -2
  29. package/src/mssql/newTransaction.js +4 -3
  30. package/src/mssql/pool/newGenericPool.js +1 -13
  31. package/src/mySql/deleteFromSql.js +5 -5
  32. package/src/mySql/insert.js +5 -5
  33. package/src/mySql/insertSql.js +2 -3
  34. package/src/mySql/lastInsertedSql.js +3 -4
  35. package/src/mySql/newDatabase.js +20 -34
  36. package/src/mySql/newPool.js +10 -10
  37. package/src/mySql/newTransaction.js +2 -2
  38. package/src/mySql/pool/newGenericPool.js +2 -15
  39. package/src/mySql/quote.js +1 -0
  40. package/src/newId.js +2 -1
  41. package/src/newImmutable.js +1 -2
  42. package/src/oracle/deleteFromSql.js +5 -5
  43. package/src/oracle/formatDateOut.js +1 -1
  44. package/src/oracle/insert.js +6 -6
  45. package/src/oracle/insertSql.js +6 -14
  46. package/src/oracle/lastInsertedSql.js +3 -3
  47. package/src/oracle/mergeSql.js +3 -6
  48. package/src/oracle/newDatabase.js +18 -33
  49. package/src/oracle/newInsertCommandCore.js +5 -5
  50. package/src/oracle/newPool.js +10 -10
  51. package/src/oracle/newTransaction.js +2 -1
  52. package/src/oracle/pool/newGenericPool.js +2 -14
  53. package/src/oracle/quote.js +1 -0
  54. package/src/oracle/wrapQuery.js +0 -3
  55. package/src/package.json +5 -0
  56. package/src/patchRow.js +2 -2
  57. package/src/patchTable.js +6 -5
  58. package/src/pg/deleteFromSql.js +5 -5
  59. package/src/pg/formatDateOut.js +1 -2
  60. package/src/pg/insert.js +3 -3
  61. package/src/pg/insertSql.js +2 -7
  62. package/src/pg/lastInsertedSql.js +1 -2
  63. package/src/pg/newDatabase.js +20 -37
  64. package/src/pg/newPool.js +10 -10
  65. package/src/pg/newTransaction.js +2 -1
  66. package/src/pg/pool/newPgPool.js +23 -16
  67. package/src/pg/pool/parseSearchPathParam.js +10 -0
  68. package/src/pg/quote.js +2 -0
  69. package/src/pg/schema.js +2 -2
  70. package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
  71. package/src/promisify.js +24 -0
  72. package/src/query.js +2 -2
  73. package/src/sap/deleteFromSql.js +3 -3
  74. package/src/sap/formatDateOut.js +1 -1
  75. package/src/sap/insert.js +5 -5
  76. package/src/sap/insertSql.js +4 -5
  77. package/src/sap/lastInsertedSql.js +3 -3
  78. package/src/sap/mergeSql.js +1 -2
  79. package/src/sap/newDatabase.js +23 -34
  80. package/src/sap/newPool.js +2 -2
  81. package/src/sap/newTransaction.js +2 -1
  82. package/src/sap/quote.js +1 -0
  83. package/src/sqlite/deleteFromSql.js +5 -5
  84. package/src/sqlite/insert.js +5 -5
  85. package/src/sqlite/insertSql.js +2 -2
  86. package/src/sqlite/lastInsertedSql.js +2 -2
  87. package/src/sqlite/newDatabase.js +16 -32
  88. package/src/sqlite/newPool.js +10 -10
  89. package/src/sqlite/newTransaction.js +2 -1
  90. package/src/sqlite/pool/newGenericPool.js +1 -13
  91. package/src/sqlite/quote.js +1 -0
  92. package/src/table/aggregate.js +1 -1
  93. package/src/table/begin.js +5 -5
  94. package/src/table/cascadeDelete.js +2 -2
  95. package/src/table/column/binary/newDecode.js +2 -2
  96. package/src/table/column/binary/newEncode.js +3 -4
  97. package/src/table/column/boolean/newDecode.js +1 -1
  98. package/src/table/column/boolean/newEncode.js +6 -6
  99. package/src/table/column/date/formatOut.js +3 -5
  100. package/src/table/column/date/newDecode.js +2 -2
  101. package/src/table/column/date/newEncode.js +8 -8
  102. package/src/table/column/date/tryParseISO.js +6 -8
  103. package/src/table/column/date.js +1 -1
  104. package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
  105. package/src/table/column/dateWithTimeZone.js +1 -1
  106. package/src/table/column/encodeFilterArg.js +3 -3
  107. package/src/table/column/equal.js +3 -3
  108. package/src/table/column/extractAlias.js +0 -2
  109. package/src/table/column/greaterThan.js +3 -3
  110. package/src/table/column/greaterThanOrEqual.js +3 -3
  111. package/src/table/column/guid/newDecode.js +1 -1
  112. package/src/table/column/guid/newEncode.js +3 -3
  113. package/src/table/column/in.js +3 -3
  114. package/src/table/column/json/formatOut.js +3 -3
  115. package/src/table/column/json/newDecode.js +3 -3
  116. package/src/table/column/json/newEncode.js +6 -6
  117. package/src/table/column/json.js +2 -1
  118. package/src/table/column/lessThan.js +3 -3
  119. package/src/table/column/lessThanOrEqual.js +4 -4
  120. package/src/table/column/negotiateRawSqlFilter.js +1 -72
  121. package/src/table/column/newBoolean.js +2 -53
  122. package/src/table/column/newColumn.js +21 -21
  123. package/src/table/column/newDecodeCore.js +1 -1
  124. package/src/table/column/notEqual.js +3 -3
  125. package/src/table/column/numeric/newDecode.js +2 -2
  126. package/src/table/column/numeric/newEncode.js +3 -3
  127. package/src/table/column/string/contains.js +2 -1
  128. package/src/table/column/string/containsCore.js +5 -5
  129. package/src/table/column/string/endsWith.js +1 -1
  130. package/src/table/column/string/endsWithCore.js +4 -4
  131. package/src/table/column/string/iContains.js +2 -1
  132. package/src/table/column/string/iEndsWith.js +1 -1
  133. package/src/table/column/string/iEqual.js +3 -3
  134. package/src/table/column/string/iStartsWith.js +1 -1
  135. package/src/table/column/string/newEncode.js +3 -3
  136. package/src/table/column/string/startsWith.js +1 -1
  137. package/src/table/column/string/startsWithCore.js +4 -4
  138. package/src/table/column/string.js +14 -14
  139. package/src/table/column/utils.js +113 -0
  140. package/src/table/column.js +6 -2
  141. package/src/table/commands/beginCommand.js +2 -2
  142. package/src/table/commands/compressChanges.js +2 -2
  143. package/src/table/commands/delete/newSingleCommand.js +5 -5
  144. package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
  145. package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
  146. package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
  147. package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
  148. package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
  149. package/src/table/commands/getChangeSet.js +2 -2
  150. package/src/table/commands/insert/getSqlTemplate.js +16 -16
  151. package/src/table/commands/lastCommandMatches.js +2 -2
  152. package/src/table/commands/newDeleteCommand.js +5 -10
  153. package/src/table/commands/newGetLastInsertedCommand.js +4 -4
  154. package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
  155. package/src/table/commands/newInsertCommand.js +5 -3
  156. package/src/table/commands/newInsertCommandCore.js +12 -12
  157. package/src/table/commands/newRow.js +4 -4
  158. package/src/table/commands/newUpdateCommand.js +4 -4
  159. package/src/table/commands/newUpdateCommandCore.js +4 -4
  160. package/src/table/commands/pushCommand.js +2 -2
  161. package/src/table/commit.js +13 -11
  162. package/src/table/count.js +8 -8
  163. package/src/table/delete.js +4 -4
  164. package/src/table/deleteSessionContext.js +2 -14
  165. package/src/table/executeQueries/executeChanges.js +3 -3
  166. package/src/table/executeQueries/executeQueriesCore.js +2 -2
  167. package/src/table/executeQueries/executeQuery.js +2 -2
  168. package/src/table/executeQueries/resolveExecuteQuery.js +3 -10
  169. package/src/table/executeQueries.js +4 -4
  170. package/src/table/getFromDbById.js +1 -1
  171. package/src/table/getMany.js +7 -7
  172. package/src/table/getManyDto.js +3 -4
  173. package/src/table/getSessionContext.js +4 -4
  174. package/src/table/getSessionSingleton.js +3 -2
  175. package/src/table/groupBy/newQuery.js +4 -4
  176. package/src/table/groupBy.js +9 -9
  177. package/src/table/insert.js +10 -13
  178. package/src/table/joinRelation/getRelatives.js +6 -6
  179. package/src/table/newCascadeDeleteStrategy.js +1 -7
  180. package/src/table/newGetRelated.js +3 -3
  181. package/src/table/newManyRelation.js +9 -9
  182. package/src/table/newOneRelation.js +9 -9
  183. package/src/table/newPrimaryKeyFilter.js +6 -6
  184. package/src/table/newQuery.js +5 -5
  185. package/src/table/newRelatedTable.js +6 -12
  186. package/src/table/newRowCache.js +17 -17
  187. package/src/table/newThrow.js +2 -2
  188. package/src/table/oneRelation/getRelatives.js +5 -5
  189. package/src/table/popChanges.js +3 -3
  190. package/src/table/promise.js +2 -8
  191. package/src/table/query/extractLimit.js +2 -2
  192. package/src/table/query/extractOffset.js +2 -2
  193. package/src/table/query/extractOrderBy.js +2 -2
  194. package/src/table/query/newParameterized.js +8 -11
  195. package/src/table/query/newSingleQuery.js +7 -7
  196. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
  197. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
  198. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
  199. package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
  200. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -7
  201. package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
  202. package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
  203. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
  204. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
  205. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -8
  206. package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
  207. package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
  208. package/src/table/query/singleQuery/newColumnSql.js +3 -3
  209. package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
  210. package/src/table/query/singleQuery/newJoinSql.js +7 -7
  211. package/src/table/query/singleQuery/newWhereSql.js +3 -3
  212. package/src/table/quote.js +4 -4
  213. package/src/table/relatedTable/aggregate.js +2 -8
  214. package/src/table/relatedTable/all.js +6 -12
  215. package/src/table/relatedTable/any.js +4 -11
  216. package/src/table/relatedTable/childColumn.js +12 -12
  217. package/src/table/relatedTable/columnAggregate.js +3 -3
  218. package/src/table/relatedTable/columnAggregateGroup.js +11 -11
  219. package/src/table/relatedTable/joinSql.js +5 -5
  220. package/src/table/relatedTable/joinSqlArray.js +3 -3
  221. package/src/table/relatedTable/none.js +4 -10
  222. package/src/table/relatedTable/relatedColumn.js +13 -13
  223. package/src/table/relatedTable/selectSql.js +2 -2
  224. package/src/table/relatedTable/subFilter.js +4 -4
  225. package/src/table/relatedTable/where.js +3 -9
  226. package/src/table/relatedTable/whereSql.js +2 -2
  227. package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
  228. package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
  229. package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
  230. package/src/table/relation/newForeignKeyFilter.js +2 -2
  231. package/src/table/relation/newManyCache.js +25 -17
  232. package/src/table/relation/newOneCache.js +6 -6
  233. package/src/table/releaseDbClient.js +4 -4
  234. package/src/table/resultToPromise.js +1 -3
  235. package/src/table/resultToRows/dbRowToRow.js +6 -13
  236. package/src/table/resultToRows/dbRowsToRows.js +2 -2
  237. package/src/table/resultToRows/decodeDbRow.js +2 -2
  238. package/src/table/resultToRows/delete/removeFromCache.js +4 -11
  239. package/src/table/resultToRows/delete.js +6 -6
  240. package/src/table/resultToRows/newDecodeDbRow.js +19 -25
  241. package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
  242. package/src/table/resultToRows/toDto.js +3 -3
  243. package/src/table/resultToRows.js +3 -3
  244. package/src/table/rollback.js +21 -11
  245. package/src/table/rowArray/negotiateNextTick.js +1 -2
  246. package/src/table/setSessionSingleton.js +6 -3
  247. package/src/table/tryGetFirstFromDb.js +4 -4
  248. package/src/table/tryGetFromCacheById.js +3 -3
  249. package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
  250. package/src/table/tryGetFromDbById.js +8 -6
  251. package/src/table/tryGetSessionContext.js +3 -13
  252. package/src/table/tryReleaseDbClient.js +2 -2
  253. package/src/table/updateField.js +4 -4
  254. package/src/table/where.js +2 -2
  255. package/src/table.js +56 -53
  256. package/src/tedious/deleteFromSql.js +5 -5
  257. package/src/tedious/formatDateOut.js +1 -1
  258. package/src/tedious/getManyDto/newQueryCore.js +5 -5
  259. package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
  260. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +4 -5
  261. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +4 -5
  262. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
  263. package/src/tedious/getManyDto/query/newSubQueries.js +9 -26
  264. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
  265. package/src/tedious/getManyDto.js +6 -6
  266. package/src/tedious/insert.js +3 -3
  267. package/src/tedious/insertSql.js +3 -3
  268. package/src/tedious/newDatabase.js +17 -30
  269. package/src/tedious/newPool.js +10 -10
  270. package/src/tedious/newTransaction.js +3 -4
  271. package/src/tedious/pool/newGenericPool.js +1 -13
  272. package/src/tedious/quote.js +1 -0
  273. package/src/validateDeleteConflict.js +4 -2
  274. package/src/createDomain/negotiateForwardProperty.js +0 -23
  275. package/src/d1/pool/defaults.js +0 -45
  276. package/src/mssql/pool/defaults.js +0 -45
  277. package/src/oracle/pool/defaults.js +0 -45
  278. package/src/pg/pool/defaults.js +0 -45
  279. package/src/sqlite/pool/defaults.js +0 -45
  280. package/src/table/createJSONReadStream.js +0 -7
  281. package/src/table/createJSONReadStreamDefault.js +0 -33
  282. package/src/table/createJSONReadStreamNative.js +0 -31
  283. package/src/table/createReadStream.js +0 -24
  284. package/src/table/createReadStreamCoreNative.js +0 -40
  285. package/src/table/createReadStreamDefault.js +0 -102
  286. package/src/table/createReadStreamNative.js +0 -17
  287. package/src/table/readStream/extractLimit.js +0 -7
  288. package/src/table/readStream/extractOrderBy.js +0 -59
  289. package/src/table/readStream/mySql/newQuery.js +0 -16
  290. package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
  291. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
  292. package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
  293. package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
  294. package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
  295. package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
  296. package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
  297. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
  298. package/src/table/readStream/newQuery.js +0 -32
  299. package/src/table/readStream/newQueryStream.js +0 -8
  300. package/src/table/readStream/pg/newQuery.js +0 -8
  301. package/src/table/readStream/pg/newQueryCore.js +0 -17
  302. package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
  303. package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
  304. package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
  305. package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
  306. package/src/table/readStream/pg/query/newSubQueries.js +0 -47
  307. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
  308. package/src/table/readStreamDefault/createBatchFilter.js +0 -39
  309. package/src/tedious/pool/defaults.js +0 -45
  310. package/src/useHook.js +0 -9
@@ -1,102 +0,0 @@
1
- var extractFilter = require('./query/extractFilter');
2
- var cloneStrategy = require('./cloneStrategy');
3
- var defaultBatchSize = 200;
4
- var Readable = require('stream').Readable;
5
- var createBatchFilter = require('./readStreamDefault/createBatchFilter');
6
-
7
- function createReadStream(table, db, filter, strategy, streamOptions) {
8
- filter = extractFilter(filter);
9
- var batchFilter;
10
- strategy = cloneStrategy(strategy);
11
- calculateOrderBy();
12
- streamOptions = streamOptions || {};
13
- var batchSize = streamOptions.batchSize || defaultBatchSize;
14
- batchSize = (batchSize + 1) / 2 >> 0;
15
- var maxRows = strategy.limit;
16
- var currentRowCount = 0;
17
- var busy;
18
- var waitingforMore;
19
- var dtos = [];
20
- var lastDto;
21
- var done;
22
-
23
- var stream = Readable({ objectMode: true });
24
- stream._read = function() {
25
- waitingforMore = true;
26
- if (!busy) {
27
- if (dtos.length > 0)
28
- negotiatePushStream();
29
- else
30
- getDtos();
31
- }
32
- };
33
- if (process.domain)
34
- process.domain.add(stream);
35
-
36
- function getDtos() {
37
- busy = true;
38
- return db.transaction(async () => {
39
- await getBatch()
40
- .then(onDtos);
41
- })
42
- .then(negotiatePushStream, onError);
43
- }
44
-
45
- function onDtos(result) {
46
- busy = false;
47
- currentRowCount += result.length;
48
- lastDto = result[result.length - 1];
49
- dtos = dtos.concat(result);
50
- if (currentRowCount >= maxRows || result.length < batchSize) {
51
- dtos.push(null);
52
- done = true;
53
- }
54
- }
55
-
56
- function negotiatePushStream() {
57
- if (dtos.length <= batchSize && !done)
58
- getDtos();
59
- if (!waitingforMore)
60
- return;
61
- waitingforMore = false;
62
- stream.push(dtos.shift());
63
- }
64
-
65
- function getBatch() {
66
- calculateLimit();
67
- calculateBatchFilter();
68
- return table.getMany(batchFilter, strategy);
69
- }
70
-
71
- function calculateLimit() {
72
- if (maxRows === undefined || maxRows === null)
73
- strategy.limit = batchSize;
74
- else {
75
- var rowsLeft = maxRows - currentRowCount;
76
- strategy.limit = Math.min(rowsLeft, batchSize);
77
- }
78
- }
79
-
80
- function calculateOrderBy() {
81
- strategy.orderBy = strategy.orderBy || [];
82
- if (typeof strategy.orderBy === 'string') {
83
- strategy.orderBy = [strategy.orderBy];
84
- }
85
- var primaryColumns = table._primaryColumns;
86
- for (var i = 0; i < primaryColumns.length; i++) {
87
- strategy.orderBy.push(primaryColumns[i].alias);
88
- }
89
- }
90
-
91
- function calculateBatchFilter() {
92
- batchFilter = createBatchFilter(table, filter, strategy, lastDto);
93
- }
94
-
95
- function onError(e) {
96
- stream.emit('error', e);
97
- }
98
-
99
- return stream;
100
- }
101
-
102
- module.exports = createReadStream;
@@ -1,17 +0,0 @@
1
- var createReadStreamCore = require('./createReadStreamCoreNative');
2
- var Stream = require('stream');
3
-
4
- function createReadStreamNative(table, db, filter, strategy, streamOptions) {
5
- var transformer = Stream.Transform({ objectMode: true });
6
- transformer._transform = function(chunk, _enc, cb) {
7
- let result = chunk.result;
8
- if (typeof result === 'string')
9
- result = JSON.parse(result);
10
- transformer.push(result);
11
- cb();
12
- };
13
-
14
- return createReadStreamCore(table, db, filter, strategy, transformer, streamOptions);
15
- }
16
-
17
- module.exports = createReadStreamNative;
@@ -1,7 +0,0 @@
1
- function extractLimit(span) {
2
- if (span.limit)
3
- return ' limit ' + span.limit;
4
- return '';
5
- }
6
-
7
- module.exports = extractLimit;
@@ -1,59 +0,0 @@
1
- const getSessionSingleton = require('../getSessionSingleton');
2
-
3
- function extractOrderBy(alias, span) {
4
- const quote = getSessionSingleton('quote');
5
- alias = quote(alias);
6
- var table = span.table;
7
- var dbNames = [];
8
- var orderBy = span.orderBy;
9
- var i;
10
- if (span.orderBy) {
11
- if (typeof orderBy === 'string')
12
- orderBy = [orderBy];
13
- for (i = 0; i < orderBy.length; i++) {
14
- var nameAndDirection = extractNameAndDirection(orderBy[i]);
15
- pushColumn(nameAndDirection.name, nameAndDirection.direction);
16
- }
17
- } else
18
- for (i = 0; i < table._primaryColumns.length; i++) {
19
- pushColumn(table._primaryColumns[i].alias);
20
- }
21
-
22
- function extractNameAndDirection(orderBy) {
23
- var elements = orderBy.split(' ');
24
- var direction = '';
25
- if (elements.length > 1) {
26
- direction = ' ' + elements[1];
27
- }
28
- return {
29
- name: elements[0],
30
- direction: direction
31
- };
32
- }
33
-
34
- function pushColumn(property, direction) {
35
- direction = direction || '';
36
- var column = getTableColumn(property);
37
- var jsonQuery = getJsonQuery(property, column.alias);
38
-
39
- dbNames.push(alias + '.' + quote(column._dbName) + jsonQuery + direction);
40
- }
41
- function getTableColumn(property) {
42
- var column = table[property] || table[property.split(/(-|#)>+/g)[0]];
43
- if(!column){
44
- throw new Error(`Unable to get column on orderBy '${property}'. If jsonb query, only #>, #>>, -> and ->> allowed. Only use ' ' to seperate between query and direction. Does currently not support casting.`);
45
- }
46
- return column;
47
- }
48
- function getJsonQuery(property, column) {
49
- let containsJson = (/(-|#)>+/g).test(property);
50
- if(!containsJson){
51
- return '';
52
- }
53
- return property.replace(column, '');
54
- }
55
-
56
- return ' order by ' + dbNames.join(',');
57
- }
58
-
59
- module.exports = extractOrderBy;
@@ -1,16 +0,0 @@
1
- var newSingleQuery = require('./query/newSingleQuery');
2
- var newSubQueries = require('./query/newSubQueries');
3
- var extractFilter = require('../../query/extractFilter');
4
- var extractOrderBy = require('../extractOrderBy');
5
- var extractLimit = require('../extractLimit');
6
-
7
- function newQuery(table,filter,span,alias) {
8
- filter = extractFilter(filter);
9
- var orderBy = extractOrderBy(alias,span);
10
- var limit = extractLimit(span);
11
-
12
- var subQueries = newSubQueries(table,span,alias);
13
- return newSingleQuery(table,filter,alias,subQueries,orderBy,limit);
14
- }
15
-
16
- module.exports = newQuery;
@@ -1,21 +0,0 @@
1
- var newColumnSql = require('./singleQuery/newShallowColumnSql');
2
- var newWhereSql = require('../../../query/singleQuery/newWhereSql');
3
- var template = 'select json_object(%s%s) as result from %s %s%s%s%s';
4
- var util = require('util');
5
-
6
- function _new(table,filter,alias,subQueries,orderBy,limit) {
7
- var c = {};
8
-
9
- c.sql = function() {
10
- var name = table._dbName;
11
- var columnSql = newColumnSql(table,alias);
12
- var whereSql = newWhereSql(table,filter,alias);
13
- return util.format(template, columnSql, subQueries, name, alias, whereSql, orderBy, limit);
14
- };
15
-
16
- c.parameters = filter.parameters;
17
-
18
- return c;
19
- }
20
-
21
- module.exports = _new;
@@ -1,20 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- const quote = require('../../../../quote');
3
- var newQuery = require('./newQueryCore');
4
- var util = require('util');
5
-
6
- function joinLegToQuery(parentAlias,leg,legNo) {
7
- var childAlias = parentAlias + 'x' + legNo;
8
- var span = leg.span;
9
- var childTable = span.table;
10
- var parentTable = leg.table;
11
- var childColumns = span.table._primaryColumns;
12
- var parentColumns = leg.columns;
13
-
14
- var shallowJoin = newShallowJoinSql(parentTable,childColumns,parentColumns,childAlias,parentAlias);
15
- var query = newQuery(childTable,span,childAlias);
16
-
17
- return util.format(',\'%s\',(select %s from %s %s where %s)', leg.name, query.sql(), quote(childTable._dbName), quote(childAlias), shallowJoin);
18
- }
19
-
20
- module.exports = joinLegToQuery;
@@ -1,22 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var extractOrderBy = require('../../../extractOrderBy');
3
- var newQuery = require('./newQueryCore');
4
- var util = require('util');
5
-
6
- function manyLegToQuery(rightAlias,leg,legNo) {
7
- var leftAlias = rightAlias + 'x' + legNo;
8
- var span = leg.span;
9
- var rightTable = leg.table;
10
- var rightColumns = rightTable._primaryColumns;
11
- var leftColumns = leg.columns;
12
- var orderBy = extractOrderBy(leftAlias, span);
13
-
14
- var shallowJoin = newShallowJoinSql(rightTable,leftColumns,rightColumns,leftAlias,rightAlias);
15
- var query = newQuery(span.table,span,leftAlias);
16
-
17
-
18
- return util.format(',\'%s\',(select cast(concat(\'[\',ifnull(group_concat(%s%s),\'\'),\']\') as json) from %s %s where %s)',
19
- leg.name, query.sql(), orderBy, span.table._dbName, leftAlias, shallowJoin);
20
- }
21
-
22
- module.exports = manyLegToQuery;
@@ -1,9 +0,0 @@
1
- var newSingleQuery = require('./newSingleQueryCore');
2
- var newSubQueries = require('../newSubQueries');
3
-
4
- function newQueryCore(table,span,alias) {
5
- var subQueries = newSubQueries(table,span,alias);
6
- return newSingleQuery(table,alias,subQueries);
7
- }
8
-
9
- module.exports = newQueryCore;
@@ -1,18 +0,0 @@
1
- var newColumnSql = require('../singleQuery/newShallowColumnSql');
2
- var template = 'json_object(%s%s)';
3
- var util = require('util');
4
-
5
- function _new(table,alias,subQueries) {
6
- var c = {};
7
-
8
- c.sql = function() {
9
- var columnSql = newColumnSql(table,alias);
10
- return util.format(template, columnSql, subQueries);
11
- };
12
-
13
- c.parameters = [];
14
-
15
- return c;
16
- }
17
-
18
- module.exports = _new;
@@ -1,22 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('./newQueryCore');
3
- var extractOrderBy = require('../../../../query/extractOrderBy');
4
- var util = require('util');
5
-
6
- function manyLegToQuery(rightAlias,leg,legNo) {
7
- var leftAlias = rightAlias + 'x' + legNo;
8
- var span = leg.span;
9
- var rightTable = leg.table;
10
- var rightColumns = rightTable._primaryColumns;
11
- var leftColumns = leg.columns;
12
- var orderBy = extractOrderBy(rightTable,rightAlias);
13
-
14
- var shallowJoin = newShallowJoinSql(rightTable,leftColumns,rightColumns,leftAlias,rightAlias);
15
- var query = newQuery(span.table,span,leftAlias);
16
-
17
-
18
- return util.format(',\'%s\',(select %s from %s %s where %s%s LIMIT 1)',
19
- leg.name, query.sql(), span.table._dbName, leftAlias, shallowJoin, orderBy);
20
- }
21
-
22
- module.exports = manyLegToQuery;
@@ -1,47 +0,0 @@
1
- var joinLegToQuery = _joinLegToQuery;
2
- var oneLegToQuery = _oneLegToQuery;
3
- var manyLegToQuery = _manyLegToQuery;
4
-
5
- function newSubQueries(table,span,alias) {
6
- var result = [];
7
- var c = {};
8
- var _legNo;
9
-
10
- c.visitJoin = function(leg) {
11
- result.push(joinLegToQuery( alias,leg,_legNo));
12
- };
13
- c.visitOne = function(leg) {
14
- result.push(oneLegToQuery( alias,leg,_legNo));
15
- };
16
- c.visitMany = function(leg) {
17
- result.push(manyLegToQuery( alias,leg,_legNo));
18
- };
19
-
20
- span.legs.forEach(onEachLeg);
21
-
22
- function onEachLeg(leg,legNo) {
23
- _legNo = legNo;
24
- leg.accept(c);
25
- }
26
-
27
- return result.join('');
28
- }
29
-
30
- function _joinLegToQuery() {
31
- joinLegToQuery = require('./newSubQueries/joinLegToQuery');
32
- return joinLegToQuery.apply(null,arguments);
33
- }
34
-
35
- function _oneLegToQuery() {
36
- oneLegToQuery = require('./newSubQueries/oneLegToQuery');
37
- return oneLegToQuery.apply(null,arguments);
38
- }
39
-
40
- function _manyLegToQuery() {
41
- manyLegToQuery = require('./newSubQueries/manyLegToQuery');
42
- return manyLegToQuery.apply(null,arguments);
43
- }
44
-
45
-
46
-
47
- module.exports = newSubQueries;
@@ -1,18 +0,0 @@
1
- var util = require('util');
2
- const quote = require('../../../../quote');
3
-
4
- function _new(table,alias) {
5
- var columnFormat = '\'%s\',%s.%s';
6
- var columns = table._columns;
7
- var sql = '';
8
- var separator = '';
9
- for (var i = 0; i < columns.length; i++) {
10
- var column = columns[i];
11
- if (!('serializable' in column && !column.serializable))
12
- sql = sql + separator + util.format(columnFormat, quote(column.alias), alias, quote(column._dbName));
13
- separator = ',';
14
- }
15
- return sql;
16
- }
17
-
18
- module.exports = _new;
@@ -1,32 +0,0 @@
1
- var newMySqlQuery = require('./mySql/newQuery');
2
- var newPgQuery = require('./pg/newQuery');
3
-
4
- function newQuery(db) {
5
- var c = {};
6
- var _newQuery;
7
-
8
- c.visitPg = function() {
9
- _newQuery = newPgQuery;
10
- };
11
- c.visitMySql = function() {
12
- _newQuery = newMySqlQuery;
13
- };
14
-
15
- c.visitSqlite = function() {
16
- throw new Error('Sqlite not supported');
17
- };
18
-
19
- c.visitSap = function() {
20
- throw new Error('Sap not supported');
21
- };
22
-
23
- db.accept(c);
24
-
25
- var args = [];
26
- for (var i = 1; i < arguments.length; i++) {
27
- args.push(arguments[i]);
28
- }
29
- return _newQuery.apply(null, args);
30
- }
31
-
32
- module.exports = newQuery;
@@ -1,8 +0,0 @@
1
- var getSessionSingleton = require('../getSessionSingleton');
2
-
3
- function newQueryStream(query, options) {
4
- var dbClient = getSessionSingleton('dbClient');
5
- return dbClient.streamQuery(query, options);
6
- }
7
-
8
- module.exports = newQueryStream;
@@ -1,8 +0,0 @@
1
- var newQueryCore = require('./newQueryCore');
2
-
3
- function newQuery() {
4
- var query = newQueryCore.apply(null, arguments);
5
- return query.prepend('select row_to_json(r)::text as result from (').append(') r');
6
- }
7
-
8
- module.exports = newQuery;
@@ -1,17 +0,0 @@
1
- var newSingleQuery = require('./query/newSingleQuery');
2
- var newSubQueries = require('./query/newSubQueries');
3
- var extractFilter = require('../../query/extractFilter');
4
- var extractOrderBy = require('../extractOrderBy');
5
- var extractLimit = require('../extractLimit');
6
- var newParameterized = require('../../query/newParameterized');
7
-
8
- function newQuery(table,filter,span,alias) {
9
- filter = extractFilter(filter);
10
- var orderBy = extractOrderBy(alias,span);
11
- var limit = extractLimit(span);
12
- var subQueries = newSubQueries(table,span,alias);
13
- var query = newSingleQuery(table,filter,span,alias,subQueries,orderBy,limit);
14
- return newParameterized(query.sql(), query.parameters);
15
- }
16
-
17
- module.exports = newQuery;
@@ -1,19 +0,0 @@
1
- var newColumnSql = require('./singleQuery/newShallowColumnSql');
2
- var newWhereSql = require('../../../query/singleQuery/newWhereSql');
3
-
4
- function _new(table,filter,span, alias,subQueries,orderBy,limit) {
5
- var c = {};
6
-
7
- c.sql = function() {
8
- var name = table._dbName;
9
- var columnSql = newColumnSql(table,alias,span);
10
- var whereSql = newWhereSql(table,filter,alias);
11
- return 'select ' + columnSql + subQueries + ' from ' + name + ' ' + alias + whereSql + orderBy + limit;
12
- };
13
-
14
- c.parameters = filter.parameters;
15
-
16
- return c;
17
- }
18
-
19
- module.exports = _new;
@@ -1,19 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
3
- var newParameterized = require('../../../../query/newParameterized');
4
- var util = require('util');
5
-
6
- function joinLegToQuery(parentAlias,leg,legNo) {
7
- var childAlias = parentAlias + 'x' + legNo;
8
- var span = leg.span;
9
- var parentTable = leg.table;
10
- var childColumns = span.table._primaryColumns;
11
- var parentColumns = leg.columns;
12
-
13
- var shallowJoin = newShallowJoinSql(parentTable,childColumns,parentColumns,childAlias,parentAlias);
14
- var filter = newParameterized(shallowJoin);
15
- var query = newQuery(span.table,filter,span,childAlias);
16
- return util.format(',(select row_to_json(r) from (%s limit 1) r) "%s"', query.sql(), leg.name );
17
- }
18
-
19
- module.exports = joinLegToQuery;
@@ -1,22 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
3
- var newParameterized = require('../../../../query/newParameterized');
4
- var extractOrderBy = require('../../../../query/extractOrderBy');
5
- var util = require('util');
6
-
7
- function manyLegToQuery(rightAlias, leg, legNo) {
8
- var leftAlias = rightAlias + 'x' + legNo;
9
- var span = leg.span;
10
- var rightTable = leg.table;
11
- var rightColumns = rightTable._primaryColumns;
12
- var leftColumns = leg.columns;
13
- var orderBy = extractOrderBy(rightTable, rightAlias);
14
-
15
- var shallowJoin = newShallowJoinSql(rightTable, leftColumns, rightColumns, leftAlias, rightAlias);
16
- var filter = newParameterized(shallowJoin);
17
- var query = newQuery(span.table, filter, span, leftAlias, orderBy);
18
- return util.format(',(select coalesce(json_agg(row_to_json(r)),\'[]\') from (%s) r ) "%s"', query.sql(), leg.name);
19
-
20
- }
21
-
22
- module.exports = manyLegToQuery;
@@ -1,19 +0,0 @@
1
- var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
3
- var newParameterized = require('../../../../query/newParameterized');
4
- var util = require('util');
5
-
6
- function oneLegToQuery(rightAlias,leg,legNo) {
7
- var leftAlias = rightAlias + 'x' + legNo;
8
- var span = leg.span;
9
- var rightTable = leg.table;
10
- var rightColumns = rightTable._primaryColumns;
11
- var leftColumns = leg.columns;
12
-
13
- var shallowJoin = newShallowJoinSql(rightTable,leftColumns,rightColumns,leftAlias,rightAlias);
14
- var filter = newParameterized(shallowJoin);
15
- var query = newQuery(span.table,filter,span,leftAlias);
16
- return util.format(',(select row_to_json(r) from (%s limit 1) r) "%s"', query.sql(), leg.name );
17
- }
18
-
19
- module.exports = oneLegToQuery;
@@ -1,47 +0,0 @@
1
- var joinLegToQuery = _joinLegToQuery;
2
- var oneLegToQuery = _oneLegToQuery;
3
- var manyLegToQuery = _manyLegToQuery;
4
-
5
- function newSubQueries(table,span,alias) {
6
- var result = [];
7
- var c = {};
8
- var _legNo;
9
-
10
- c.visitJoin = function(leg) {
11
- result.push(joinLegToQuery( alias,leg,_legNo));
12
- };
13
- c.visitOne = function(leg) {
14
- result.push(oneLegToQuery( alias,leg,_legNo));
15
- };
16
- c.visitMany = function(leg) {
17
- result.push(manyLegToQuery( alias,leg,_legNo));
18
- };
19
-
20
- span.legs.forEach(onEachLeg);
21
-
22
- function onEachLeg(leg,legNo) {
23
- _legNo = legNo;
24
- leg.accept(c);
25
- }
26
-
27
- return result.join('');
28
- }
29
-
30
- function _joinLegToQuery() {
31
- joinLegToQuery = require('./newSubQueries/joinLegToQuery');
32
- return joinLegToQuery.apply(null,arguments);
33
- }
34
-
35
- function _oneLegToQuery() {
36
- oneLegToQuery = require('./newSubQueries/oneLegToQuery');
37
- return oneLegToQuery.apply(null,arguments);
38
- }
39
-
40
- function _manyLegToQuery() {
41
- manyLegToQuery = require('./newSubQueries/manyLegToQuery');
42
- return manyLegToQuery.apply(null,arguments);
43
- }
44
-
45
-
46
-
47
- module.exports = newSubQueries;
@@ -1,20 +0,0 @@
1
- var util = require('util');
2
- const quote = require('../../../../quote');
3
-
4
- function _new(table,alias,span) {
5
- let columnsMap = span.columns;
6
- var columnFormat = '%s as "%s"';
7
- var columns = table._columns;
8
- var sql = '';
9
- var separator = alias + '.';
10
- for (var i = 0; i < columns.length; i++) {
11
- var column = columns[i];
12
- if (!('serializable' in column && !column.serializable) && (!columnsMap || (columnsMap.get(column)))) {
13
- sql = sql + separator + util.format(columnFormat, quote(column._dbName), quote(column.alias));
14
- separator = ',' + alias + '.';
15
- }
16
- }
17
- return sql;
18
- }
19
-
20
- module.exports = _new;
@@ -1,39 +0,0 @@
1
- var emptyFilter = require('../../emptyFilter');
2
-
3
- function createBatchFilter(table, filter, strategy, lastDto) {
4
- if (!lastDto) {
5
- return filter;
6
- }
7
-
8
- var orderBy = strategy.orderBy;
9
-
10
- for (var i = 0; i < strategy.orderBy.length; i++) {
11
- var subFilter = createSubFilter(i);
12
- filter = filter.or(subFilter);
13
- }
14
-
15
- function createSubFilter(index) {
16
- var subFilter = emptyFilter;
17
- for (var i = 0; i < index + 1; i++) {
18
- var order = orderBy[i];
19
- var elements = order.split(' ');
20
- var name = elements[0];
21
- var direction = elements[1] || 'asc';
22
- var value = lastDto[name];
23
- if (index === i) {
24
- if (direction === 'asc')
25
- subFilter = subFilter.and(table[name].greaterThan(value));
26
- else
27
- subFilter = subFilter.and(table[name].lessThan(value));
28
- } else
29
- subFilter = subFilter.and(table[name].eq(value));
30
- }
31
- return subFilter;
32
- }
33
-
34
- return filter;
35
- }
36
-
37
-
38
-
39
- module.exports = createBatchFilter;