orange-orm 3.10.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 (459) hide show
  1. package/.dockerignore +1 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.js +45 -0
  4. package/.gitattributes +3 -0
  5. package/CNAME +1 -0
  6. package/CONTRIBUTING.md +43 -0
  7. package/LICENSE +7 -0
  8. package/README.md +1969 -0
  9. package/SECURITY.md +12 -0
  10. package/bin/build.js +127 -0
  11. package/bin/compile.js +26 -0
  12. package/bin/rdb.js +4 -0
  13. package/docs/CODE_OF_CONDUCT.md +18 -0
  14. package/docs/changelog.md +461 -0
  15. package/docs/docs.md +2373 -0
  16. package/docs/orange.svg +32 -0
  17. package/docs/relations.png +0 -0
  18. package/package.json +139 -0
  19. package/src/applyPatch.js +105 -0
  20. package/src/client/axiosInterceptor.js +46 -0
  21. package/src/client/clientMap.js +72 -0
  22. package/src/client/createPatch.js +122 -0
  23. package/src/client/createProviders.js +121 -0
  24. package/src/client/index.js +997 -0
  25. package/src/client/index.mjs +6295 -0
  26. package/src/client/map.js +110 -0
  27. package/src/client/merge.js +9 -0
  28. package/src/client/netAdapter.js +133 -0
  29. package/src/client/rollup.config.js +12 -0
  30. package/src/client/self.js +4 -0
  31. package/src/client/stringify.js +22 -0
  32. package/src/client/toKeyPositionMap.js +30 -0
  33. package/src/clsTest.js +79 -0
  34. package/src/createDomain/negotiateForwardProperty.js +23 -0
  35. package/src/createDomain.js +31 -0
  36. package/src/dateToISOString.js +25 -0
  37. package/src/emitEvent.js +46 -0
  38. package/src/emptyFilter.js +35 -0
  39. package/src/flags.js +6 -0
  40. package/src/fromCompareObject.js +24 -0
  41. package/src/generic-pool.js +641 -0
  42. package/src/getManyDto/newQuery.js +18 -0
  43. package/src/getManyDto/query/newColumnSql.js +8 -0
  44. package/src/getManyDto/query/newSingleQuery.js +19 -0
  45. package/src/getManyDto/query/singleQuery/newJoinedColumnSql.js +25 -0
  46. package/src/getManyDto/query/singleQuery/newShallowColumnSql.js +25 -0
  47. package/src/getManyDto.js +255 -0
  48. package/src/getTSDefinition.js +510 -0
  49. package/src/hostExpress/executePath.js +433 -0
  50. package/src/hostExpress/getMeta.js +49 -0
  51. package/src/hostExpress.js +125 -0
  52. package/src/hostLocal.js +110 -0
  53. package/src/index.d.ts +324 -0
  54. package/src/index.js +116 -0
  55. package/src/jsconfig.json +8 -0
  56. package/src/lock/toIntKey.js +35 -0
  57. package/src/lock.js +26 -0
  58. package/src/map.d.ts +1729 -0
  59. package/src/mssql/encodeBuffer.js +7 -0
  60. package/src/mssql/newDatabase.js +129 -0
  61. package/src/mssql/newPool.js +19 -0
  62. package/src/mssql/newTransaction.js +69 -0
  63. package/src/mssql/pool/defaults.js +45 -0
  64. package/src/mssql/pool/end.js +13 -0
  65. package/src/mssql/pool/newGenericPool.js +62 -0
  66. package/src/mssql/wrapQuery.js +34 -0
  67. package/src/mySql/deleteFromSql.js +8 -0
  68. package/src/mySql/encodeBoolean.js +7 -0
  69. package/src/mySql/insert.js +21 -0
  70. package/src/mySql/insertSql.js +62 -0
  71. package/src/mySql/lastInsertedSql.js +11 -0
  72. package/src/mySql/limitAndOffset.js +18 -0
  73. package/src/mySql/newDatabase.js +127 -0
  74. package/src/mySql/newPool.js +19 -0
  75. package/src/mySql/newTransaction.js +54 -0
  76. package/src/mySql/pool/defaults.js +16 -0
  77. package/src/mySql/pool/end.js +13 -0
  78. package/src/mySql/pool/negotiatePoolOptions.js +12 -0
  79. package/src/mySql/pool/newGenericPool.js +67 -0
  80. package/src/mySql/selectForUpdateSql.js +3 -0
  81. package/src/mySql/wrapQuery.js +16 -0
  82. package/src/mySql/wrapQueryStream.js +9 -0
  83. package/src/newArray.js +3 -0
  84. package/src/newCollection.js +55 -0
  85. package/src/newId.js +1 -0
  86. package/src/newImmutable.js +22 -0
  87. package/src/newObject.js +5 -0
  88. package/src/oracle/deleteFromSql.js +8 -0
  89. package/src/oracle/encodeBoolean.js +7 -0
  90. package/src/oracle/encodeBuffer.js +7 -0
  91. package/src/oracle/encodeDate.js +7 -0
  92. package/src/oracle/formatDateIn.js +5 -0
  93. package/src/oracle/formatDateOut.js +5 -0
  94. package/src/oracle/insert.js +23 -0
  95. package/src/oracle/insertSql.js +73 -0
  96. package/src/oracle/lastInsertedSql.js +14 -0
  97. package/src/oracle/limitAndOffset.js +18 -0
  98. package/src/oracle/mergeSql.js +79 -0
  99. package/src/oracle/newDatabase.js +128 -0
  100. package/src/oracle/newInsertCommandCore.js +27 -0
  101. package/src/oracle/newPool.js +19 -0
  102. package/src/oracle/newTransaction.js +63 -0
  103. package/src/oracle/outputInsertedSql.js +5 -0
  104. package/src/oracle/pool/defaults.js +45 -0
  105. package/src/oracle/pool/end.js +13 -0
  106. package/src/oracle/pool/newGenericPool.js +64 -0
  107. package/src/oracle/replaceParamChar.js +14 -0
  108. package/src/oracle/selectForUpdateSql.js +3 -0
  109. package/src/oracle/wrapQuery.js +38 -0
  110. package/src/patchRow.js +13 -0
  111. package/src/patchTable.js +317 -0
  112. package/src/pg/deleteFromSql.js +8 -0
  113. package/src/pg/encodeBoolean.js +5 -0
  114. package/src/pg/encodeDate.js +7 -0
  115. package/src/pg/encodeJSON.js +15 -0
  116. package/src/pg/formatDateOut.js +5 -0
  117. package/src/pg/insert.js +14 -0
  118. package/src/pg/insertSql.js +70 -0
  119. package/src/pg/lastInsertedSql.js +11 -0
  120. package/src/pg/limitAndOffset.js +18 -0
  121. package/src/pg/newDatabase.js +153 -0
  122. package/src/pg/newPool.js +19 -0
  123. package/src/pg/newStreamableQuery.js +7 -0
  124. package/src/pg/newTransaction.js +58 -0
  125. package/src/pg/pool/defaults.js +45 -0
  126. package/src/pg/pool/end.js +13 -0
  127. package/src/pg/pool/newPgPool.js +82 -0
  128. package/src/pg/replaceParamChar.js +14 -0
  129. package/src/pg/schema.js +11 -0
  130. package/src/pg/selectForUpdateSql.js +3 -0
  131. package/src/pg/wrapQuery.js +33 -0
  132. package/src/pg/wrapQueryStream.js +20 -0
  133. package/src/pools.js +17 -0
  134. package/src/query/negotiateParameters.js +10 -0
  135. package/src/query/negotiateSql.js +14 -0
  136. package/src/query/wrapQuery.js +17 -0
  137. package/src/query.js +13 -0
  138. package/src/sap/deleteFromSql.js +8 -0
  139. package/src/sap/encodeBoolean.js +7 -0
  140. package/src/sap/encodeBuffer.js +7 -0
  141. package/src/sap/formatDateOut.js +5 -0
  142. package/src/sap/insert.js +21 -0
  143. package/src/sap/insertSql.js +64 -0
  144. package/src/sap/lastInsertedSql.js +12 -0
  145. package/src/sap/limitAndOffset.js +16 -0
  146. package/src/sap/mergeSql.js +73 -0
  147. package/src/sap/newDatabase.js +129 -0
  148. package/src/sap/newPool.js +19 -0
  149. package/src/sap/newTransaction.js +69 -0
  150. package/src/sap/pool/end.js +13 -0
  151. package/src/sap/selectForUpdateSql.js +3 -0
  152. package/src/sqlite/deleteFromSql.js +8 -0
  153. package/src/sqlite/encodeBoolean.js +7 -0
  154. package/src/sqlite/encodeBuffer.js +7 -0
  155. package/src/sqlite/insert.js +21 -0
  156. package/src/sqlite/insertSql.js +64 -0
  157. package/src/sqlite/lastInsertedSql.js +12 -0
  158. package/src/sqlite/limitAndOffset.js +18 -0
  159. package/src/sqlite/newDatabase.js +128 -0
  160. package/src/sqlite/newPool.js +19 -0
  161. package/src/sqlite/newTransaction.js +58 -0
  162. package/src/sqlite/pool/defaults.js +45 -0
  163. package/src/sqlite/pool/end.js +13 -0
  164. package/src/sqlite/pool/newGenericPool.js +59 -0
  165. package/src/sqlite/selectForUpdateSql.js +3 -0
  166. package/src/sqlite/wrapQuery.js +24 -0
  167. package/src/table/aggregate.js +9 -0
  168. package/src/table/begin.js +10 -0
  169. package/src/table/cascadeDelete.js +11 -0
  170. package/src/table/cloneStrategy.js +18 -0
  171. package/src/table/column/binary/newDecode.js +15 -0
  172. package/src/table/column/binary/newEncode.js +23 -0
  173. package/src/table/column/binary/purify.js +12 -0
  174. package/src/table/column/binary.js +12 -0
  175. package/src/table/column/boolean/newDecode.js +12 -0
  176. package/src/table/column/boolean/newEncode.js +36 -0
  177. package/src/table/column/boolean/purify.js +7 -0
  178. package/src/table/column/boolean.js +14 -0
  179. package/src/table/column/date/formatOut.js +11 -0
  180. package/src/table/column/date/newDecode.js +17 -0
  181. package/src/table/column/date/newEncode.js +47 -0
  182. package/src/table/column/date/purify.js +17 -0
  183. package/src/table/column/date/toISOString.js +25 -0
  184. package/src/table/column/date/tryParseISO.js +14 -0
  185. package/src/table/column/date.js +14 -0
  186. package/src/table/column/dateWithTimeZone/newEncode.js +41 -0
  187. package/src/table/column/dateWithTimeZone.js +14 -0
  188. package/src/table/column/encodeFilterArg.js +8 -0
  189. package/src/table/column/equal.js +15 -0
  190. package/src/table/column/extractAlias.js +7 -0
  191. package/src/table/column/greaterThan.js +12 -0
  192. package/src/table/column/greaterThanOrEqual.js +12 -0
  193. package/src/table/column/guid/newDecode.js +10 -0
  194. package/src/table/column/guid/newEncode.js +30 -0
  195. package/src/table/column/guid/purify.js +10 -0
  196. package/src/table/column/guid.js +12 -0
  197. package/src/table/column/in.js +24 -0
  198. package/src/table/column/json/formatOut.js +11 -0
  199. package/src/table/column/json/newDecode.js +21 -0
  200. package/src/table/column/json/newEncode.js +41 -0
  201. package/src/table/column/json/purify.js +7 -0
  202. package/src/table/column/json.js +22 -0
  203. package/src/table/column/lessThan.js +12 -0
  204. package/src/table/column/lessThanOrEqual.js +12 -0
  205. package/src/table/column/negotiateNextAndFilter.js +7 -0
  206. package/src/table/column/negotiateNextOrFilter.js +7 -0
  207. package/src/table/column/negotiateRawSqlFilter.js +74 -0
  208. package/src/table/column/newBoolean.js +54 -0
  209. package/src/table/column/newColumn.js +89 -0
  210. package/src/table/column/newDecodeCore.js +10 -0
  211. package/src/table/column/notEqual.js +15 -0
  212. package/src/table/column/numeric/negotiateDefault.js +5 -0
  213. package/src/table/column/numeric/newDecode.js +16 -0
  214. package/src/table/column/numeric/newEncode.js +25 -0
  215. package/src/table/column/numeric/purify.js +12 -0
  216. package/src/table/column/numeric.js +15 -0
  217. package/src/table/column/string/contains.js +3 -0
  218. package/src/table/column/string/containsCore.js +16 -0
  219. package/src/table/column/string/endsWith.js +3 -0
  220. package/src/table/column/string/endsWithCore.js +16 -0
  221. package/src/table/column/string/iContains.js +3 -0
  222. package/src/table/column/string/iEndsWith.js +3 -0
  223. package/src/table/column/string/iEqual.js +15 -0
  224. package/src/table/column/string/iStartsWith.js +3 -0
  225. package/src/table/column/string/newEncode.js +31 -0
  226. package/src/table/column/string/purify.js +7 -0
  227. package/src/table/column/string/startsWith.js +3 -0
  228. package/src/table/column/string/startsWithCore.js +16 -0
  229. package/src/table/column/string.js +55 -0
  230. package/src/table/column.js +154 -0
  231. package/src/table/commands/beginCommand.js +13 -0
  232. package/src/table/commands/commitCommand.js +9 -0
  233. package/src/table/commands/compressChanges.js +25 -0
  234. package/src/table/commands/delete/createAlias.js +6 -0
  235. package/src/table/commands/delete/newSingleCommand.js +17 -0
  236. package/src/table/commands/delete/singleCommand/joinSql.js +26 -0
  237. package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +19 -0
  238. package/src/table/commands/delete/singleCommand/selectSql.js +11 -0
  239. package/src/table/commands/delete/singleCommand/subFilter.js +19 -0
  240. package/src/table/commands/delete/singleCommand/whereSql.js +25 -0
  241. package/src/table/commands/getChangeSet.js +6 -0
  242. package/src/table/commands/insert/getSqlTemplate.js +68 -0
  243. package/src/table/commands/lastCommandMatches.js +11 -0
  244. package/src/table/commands/negotiateEndEdit.js +7 -0
  245. package/src/table/commands/newDeleteCommand.js +23 -0
  246. package/src/table/commands/newGetLastInsertedCommand.js +49 -0
  247. package/src/table/commands/newGetLastInsertedCommandCore.js +42 -0
  248. package/src/table/commands/newInsertAndForgetCommand.js +55 -0
  249. package/src/table/commands/newInsertCommand.js +56 -0
  250. package/src/table/commands/newInsertCommandCore.js +27 -0
  251. package/src/table/commands/newRow.js +51 -0
  252. package/src/table/commands/newUpdateCommand.js +62 -0
  253. package/src/table/commands/newUpdateCommandCore.js +45 -0
  254. package/src/table/commands/pushCommand.js +10 -0
  255. package/src/table/commands/rollbackCommand.js +13 -0
  256. package/src/table/commit.js +30 -0
  257. package/src/table/count.js +29 -0
  258. package/src/table/createJSONReadStream.js +7 -0
  259. package/src/table/createJSONReadStreamDefault.js +33 -0
  260. package/src/table/createJSONReadStreamNative.js +31 -0
  261. package/src/table/createReadStream.js +24 -0
  262. package/src/table/createReadStreamCoreNative.js +40 -0
  263. package/src/table/createReadStreamDefault.js +102 -0
  264. package/src/table/createReadStreamNative.js +17 -0
  265. package/src/table/delete.js +20 -0
  266. package/src/table/deleteSessionContext.js +17 -0
  267. package/src/table/encodeDbSpecific.js +10 -0
  268. package/src/table/executeQueries/executeChanges.js +35 -0
  269. package/src/table/executeQueries/executeQueriesCore.js +12 -0
  270. package/src/table/executeQueries/executeQuery.js +8 -0
  271. package/src/table/executeQueries/resolveExecuteQuery.js +57 -0
  272. package/src/table/executeQueries.js +15 -0
  273. package/src/table/extractDeleteStrategy.js +9 -0
  274. package/src/table/fuzzyPromise.js +18 -0
  275. package/src/table/getById.js +33 -0
  276. package/src/table/getFirstFromDb.js +10 -0
  277. package/src/table/getFromDbById.js +17 -0
  278. package/src/table/getIdArgs.js +14 -0
  279. package/src/table/getMany.js +26 -0
  280. package/src/table/getManyDto/newQuery.js +32 -0
  281. package/src/table/getManyDto/pg/newQuery.js +8 -0
  282. package/src/table/getManyDto.js +10 -0
  283. package/src/table/getManyDtoFast/getSubRows.js +172 -0
  284. package/src/table/getManyDtoFast/newQuery.js +8 -0
  285. package/src/table/getManyDtoFast/newQueryCore.js +18 -0
  286. package/src/table/getManyDtoFast/query/newSingleQuery.js +20 -0
  287. package/src/table/getManyDtoFast/query/newSubQueries/joinLegToQuery.js +18 -0
  288. package/src/table/getManyDtoFast/query/newSubQueries/manyLegToQuery.js +20 -0
  289. package/src/table/getManyDtoFast/query/newSubQueries/oneLegToQuery.js +21 -0
  290. package/src/table/getManyDtoFast/query/newSubQueries.js +47 -0
  291. package/src/table/getManyDtoFast/query/singleQuery/newShallowColumnSql.js +21 -0
  292. package/src/table/getSessionContext.js +10 -0
  293. package/src/table/getSessionSingleton.js +5 -0
  294. package/src/table/groupBy/newQuery.js +25 -0
  295. package/src/table/groupBy.js +65 -0
  296. package/src/table/hasMany.js +33 -0
  297. package/src/table/hasOne.js +33 -0
  298. package/src/table/insert.js +91 -0
  299. package/src/table/insertDefault.js +88 -0
  300. package/src/table/join.js +42 -0
  301. package/src/table/joinRelation/getRelatives.js +64 -0
  302. package/src/table/log.js +39 -0
  303. package/src/table/negotiateAddStrategy.js +20 -0
  304. package/src/table/negotiateExpandInverse.js +13 -0
  305. package/src/table/newCache.js +96 -0
  306. package/src/table/newCascadeDeleteStrategy.js +30 -0
  307. package/src/table/newGetRelated.js +21 -0
  308. package/src/table/newJoinRelation.js +117 -0
  309. package/src/table/newManyRelation.js +61 -0
  310. package/src/table/newOneRelation.js +61 -0
  311. package/src/table/newPrimaryKeyFilter.js +13 -0
  312. package/src/table/newQuery.js +18 -0
  313. package/src/table/newRelatedTable.js +100 -0
  314. package/src/table/newRowCache.js +106 -0
  315. package/src/table/newThrow.js +11 -0
  316. package/src/table/nullPromise.js +1 -0
  317. package/src/table/objectToCallback.js +7 -0
  318. package/src/table/oneRelation/getRelatives.js +45 -0
  319. package/src/table/popChanges.js +19 -0
  320. package/src/table/promise.js +14 -0
  321. package/src/table/purifyStrategy.js +49 -0
  322. package/src/table/query/extractFilter.js +9 -0
  323. package/src/table/query/extractLimit.js +11 -0
  324. package/src/table/query/extractLimitQuery.js +23 -0
  325. package/src/table/query/extractOffset.js +11 -0
  326. package/src/table/query/extractOrderBy.js +57 -0
  327. package/src/table/query/extractSql.js +10 -0
  328. package/src/table/query/newParameterized.js +38 -0
  329. package/src/table/query/newSingleQuery.js +23 -0
  330. package/src/table/query/parameterized/extractParameters.js +8 -0
  331. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +16 -0
  332. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +27 -0
  333. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +37 -0
  334. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +13 -0
  335. package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +9 -0
  336. package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +11 -0
  337. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +9 -0
  338. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +25 -0
  339. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +13 -0
  340. package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +10 -0
  341. package/src/table/query/singleQuery/negotiateExclusive.js +11 -0
  342. package/src/table/query/singleQuery/negotiateLimit.js +10 -0
  343. package/src/table/query/singleQuery/newColumnSql.js +8 -0
  344. package/src/table/query/singleQuery/newDiscriminatorSql.js +33 -0
  345. package/src/table/query/singleQuery/newJoinSql.js +41 -0
  346. package/src/table/query/singleQuery/newQueryContext.js +20 -0
  347. package/src/table/query/singleQuery/newWhereSql.js +19 -0
  348. package/src/table/readStream/extractLimit.js +7 -0
  349. package/src/table/readStream/extractOrderBy.js +55 -0
  350. package/src/table/readStream/mySql/newQuery.js +16 -0
  351. package/src/table/readStream/mySql/query/newSingleQuery.js +21 -0
  352. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +19 -0
  353. package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +22 -0
  354. package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +9 -0
  355. package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +18 -0
  356. package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +22 -0
  357. package/src/table/readStream/mySql/query/newSubQueries.js +47 -0
  358. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +17 -0
  359. package/src/table/readStream/newQuery.js +32 -0
  360. package/src/table/readStream/newQueryStream.js +8 -0
  361. package/src/table/readStream/pg/newQuery.js +8 -0
  362. package/src/table/readStream/pg/newQueryCore.js +17 -0
  363. package/src/table/readStream/pg/query/newSingleQuery.js +19 -0
  364. package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +19 -0
  365. package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +22 -0
  366. package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +19 -0
  367. package/src/table/readStream/pg/query/newSubQueries.js +47 -0
  368. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +19 -0
  369. package/src/table/readStreamDefault/createBatchFilter.js +39 -0
  370. package/src/table/relatedTable/aggregate/aggregateJoinSql.js +37 -0
  371. package/src/table/relatedTable/aggregate/joinSql.js +38 -0
  372. package/src/table/relatedTable/aggregate.js +48 -0
  373. package/src/table/relatedTable/all.js +24 -0
  374. package/src/table/relatedTable/any.js +70 -0
  375. package/src/table/relatedTable/childColumn.js +61 -0
  376. package/src/table/relatedTable/columnAggregate.js +16 -0
  377. package/src/table/relatedTable/columnAggregateGroup.js +59 -0
  378. package/src/table/relatedTable/joinSql.js +40 -0
  379. package/src/table/relatedTable/joinSqlArray.js +32 -0
  380. package/src/table/relatedTable/none.js +22 -0
  381. package/src/table/relatedTable/relatedColumn.js +49 -0
  382. package/src/table/relatedTable/relationFilter.js +16 -0
  383. package/src/table/relatedTable/selectSql.js +11 -0
  384. package/src/table/relatedTable/subFilter.js +16 -0
  385. package/src/table/relatedTable/where.js +50 -0
  386. package/src/table/relatedTable/whereSql.js +41 -0
  387. package/src/table/relation/manyCache/extractParentKey.js +17 -0
  388. package/src/table/relation/manyCache/synchronizeAdded.js +13 -0
  389. package/src/table/relation/manyCache/synchronizeChanged.js +31 -0
  390. package/src/table/relation/manyCache/synchronizeRemoved.js +13 -0
  391. package/src/table/relation/newExpanderCache.js +7 -0
  392. package/src/table/relation/newForeignKeyFilter.js +20 -0
  393. package/src/table/relation/newJoinLeg.js +23 -0
  394. package/src/table/relation/newManyCache.js +57 -0
  395. package/src/table/relation/newManyCacheCore.js +53 -0
  396. package/src/table/relation/newManyLeg.js +15 -0
  397. package/src/table/relation/newOneCache.js +28 -0
  398. package/src/table/relation/newOneLeg.js +25 -0
  399. package/src/table/releaseDbClient.js +15 -0
  400. package/src/table/resultToPromise.js +8 -0
  401. package/src/table/resultToRows/dbRowToRow.js +51 -0
  402. package/src/table/resultToRows/dbRowsToRows.js +13 -0
  403. package/src/table/resultToRows/decodeDbRow.js +25 -0
  404. package/src/table/resultToRows/delete/removeFromCache.js +33 -0
  405. package/src/table/resultToRows/delete.js +31 -0
  406. package/src/table/resultToRows/negotiateQueryContext.js +6 -0
  407. package/src/table/resultToRows/newDecodeDbRow.js +262 -0
  408. package/src/table/resultToRows/toDto/createDto.js +20 -0
  409. package/src/table/resultToRows/toDto/extractStrategy.js +41 -0
  410. package/src/table/resultToRows/toDto.js +92 -0
  411. package/src/table/resultToRows.js +37 -0
  412. package/src/table/rollback.js +31 -0
  413. package/src/table/rowArray/negotiateNextTick.js +11 -0
  414. package/src/table/rowArray/orderBy.js +51 -0
  415. package/src/table/rowArray.js +62 -0
  416. package/src/table/setSessionSingleton.js +5 -0
  417. package/src/table/strategyToSpan.js +49 -0
  418. package/src/table/tryGetById.js +13 -0
  419. package/src/table/tryGetFirstFromDb.js +23 -0
  420. package/src/table/tryGetFromCacheById.js +12 -0
  421. package/src/table/tryGetFromDbById/extractStrategy.js +9 -0
  422. package/src/table/tryGetFromDbById.js +19 -0
  423. package/src/table/tryGetSessionContext.js +16 -0
  424. package/src/table/tryReleaseDbClient.js +14 -0
  425. package/src/table/updateField.js +12 -0
  426. package/src/table/where.js +12 -0
  427. package/src/table.js +174 -0
  428. package/src/tedious/deleteFromSql.js +8 -0
  429. package/src/tedious/encodeBoolean.js +7 -0
  430. package/src/tedious/encodeBuffer.js +7 -0
  431. package/src/tedious/formatDateOut.js +5 -0
  432. package/src/tedious/formatJSONOut.js +5 -0
  433. package/src/tedious/getManyDto/newQuery.js +8 -0
  434. package/src/tedious/getManyDto/newQueryCore.js +18 -0
  435. package/src/tedious/getManyDto/query/newSingleQuery.js +29 -0
  436. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +16 -0
  437. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +16 -0
  438. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +19 -0
  439. package/src/tedious/getManyDto/query/newSubQueries.js +48 -0
  440. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +34 -0
  441. package/src/tedious/getManyDto.js +27 -0
  442. package/src/tedious/insert.js +13 -0
  443. package/src/tedious/insertSql.js +70 -0
  444. package/src/tedious/limitAndOffset.js +16 -0
  445. package/src/tedious/mergeSql.js +76 -0
  446. package/src/tedious/newDatabase.js +129 -0
  447. package/src/tedious/newPool.js +19 -0
  448. package/src/tedious/newTransaction.js +72 -0
  449. package/src/tedious/outputInsertedSql.js +11 -0
  450. package/src/tedious/pool/defaults.js +45 -0
  451. package/src/tedious/pool/end.js +13 -0
  452. package/src/tedious/pool/newGenericPool.js +71 -0
  453. package/src/tedious/pool/parseConnectionString.js +40 -0
  454. package/src/tedious/selectForUpdateSql.js +3 -0
  455. package/src/tedious/wrapQuery.js +112 -0
  456. package/src/toCompareObject.js +41 -0
  457. package/src/useHook.js +9 -0
  458. package/src/validateDeleteAllowed.js +49 -0
  459. package/src/validateDeleteConflict.js +92 -0
@@ -0,0 +1,7 @@
1
+ function extractLimit(span) {
2
+ if (span.limit)
3
+ return ' limit ' + span.limit;
4
+ return '';
5
+ }
6
+
7
+ module.exports = extractLimit;
@@ -0,0 +1,55 @@
1
+ function extractOrderBy(alias, span) {
2
+ var table = span.table;
3
+ var dbNames = [];
4
+ var orderBy = span.orderBy;
5
+ var i;
6
+ if (span.orderBy) {
7
+ if (typeof orderBy === 'string')
8
+ orderBy = [orderBy];
9
+ for (i = 0; i < orderBy.length; i++) {
10
+ var nameAndDirection = extractNameAndDirection(orderBy[i]);
11
+ pushColumn(nameAndDirection.name, nameAndDirection.direction);
12
+ }
13
+ } else
14
+ for (i = 0; i < table._primaryColumns.length; i++) {
15
+ pushColumn(table._primaryColumns[i].alias);
16
+ }
17
+
18
+ function extractNameAndDirection(orderBy) {
19
+ var elements = orderBy.split(' ');
20
+ var direction = '';
21
+ if (elements.length > 1) {
22
+ direction = ' ' + elements[1];
23
+ }
24
+ return {
25
+ name: elements[0],
26
+ direction: direction
27
+ };
28
+ }
29
+
30
+ function pushColumn(property, direction) {
31
+ direction = direction || '';
32
+ var column = getTableColumn(property);
33
+ var jsonQuery = getJsonQuery(property, column.alias);
34
+
35
+ dbNames.push(alias + '.' + column._dbName + jsonQuery + direction);
36
+ }
37
+ function getTableColumn(property) {
38
+ var column = table[property] || table[property.split(/(-|#)>+/g)[0]];
39
+ if(!column){
40
+ 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.`);
41
+ }
42
+ return column;
43
+ }
44
+ function getJsonQuery(property, column) {
45
+ let containsJson = (/(-|#)>+/g).test(property);
46
+ if(!containsJson){
47
+ return '';
48
+ }
49
+ return property.replace(column, '');
50
+ }
51
+
52
+ return ' order by ' + dbNames.join(',');
53
+ }
54
+
55
+ module.exports = extractOrderBy;
@@ -0,0 +1,16 @@
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;
@@ -0,0 +1,21 @@
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;
@@ -0,0 +1,19 @@
1
+ var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
+ var newQuery = require('./newQueryCore');
3
+ var util = require('util');
4
+
5
+ function joinLegToQuery(parentAlias,leg,legNo) {
6
+ var childAlias = parentAlias + 'x' + legNo;
7
+ var span = leg.span;
8
+ var childTable = span.table;
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 query = newQuery(childTable,span,childAlias);
15
+
16
+ return util.format(',\'%s\',(select %s from %s %s where %s)', leg.name, query.sql(), childTable._dbName, childAlias, shallowJoin);
17
+ }
18
+
19
+ module.exports = joinLegToQuery;
@@ -0,0 +1,22 @@
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;
@@ -0,0 +1,9 @@
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;
@@ -0,0 +1,18 @@
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;
@@ -0,0 +1,22 @@
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;
@@ -0,0 +1,47 @@
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;
@@ -0,0 +1,17 @@
1
+ var util = require('util');
2
+
3
+ function _new(table,alias) {
4
+ var columnFormat = '\'%s\',%s.%s';
5
+ var columns = table._columns;
6
+ var sql = '';
7
+ var separator = '';
8
+ for (var i = 0; i < columns.length; i++) {
9
+ var column = columns[i];
10
+ if (!('serializable' in column && !column.serializable))
11
+ sql = sql + separator + util.format(columnFormat, column.alias, alias, column._dbName);
12
+ separator = ',';
13
+ }
14
+ return sql;
15
+ }
16
+
17
+ module.exports = _new;
@@ -0,0 +1,32 @@
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;
@@ -0,0 +1,8 @@
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;
@@ -0,0 +1,8 @@
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;
@@ -0,0 +1,17 @@
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;
@@ -0,0 +1,19 @@
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;
@@ -0,0 +1,19 @@
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;
@@ -0,0 +1,22 @@
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;
@@ -0,0 +1,19 @@
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;
@@ -0,0 +1,47 @@
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;
@@ -0,0 +1,19 @@
1
+ var util = require('util');
2
+
3
+ function _new(table,alias,span) {
4
+ let columnsMap = span.columns;
5
+ var columnFormat = '%s as "%s"';
6
+ var columns = table._columns;
7
+ var sql = '';
8
+ var separator = alias + '.';
9
+ for (var i = 0; i < columns.length; i++) {
10
+ var column = columns[i];
11
+ if (!('serializable' in column && !column.serializable) && (!columnsMap || (columnsMap.get(column)))) {
12
+ sql = sql + separator + util.format(columnFormat, column._dbName, column.alias);
13
+ separator = ',' + alias + '.';
14
+ }
15
+ }
16
+ return sql;
17
+ }
18
+
19
+ module.exports = _new;
@@ -0,0 +1,39 @@
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;
@@ -0,0 +1,37 @@
1
+ var newShallowJoinSql = require('../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
+
3
+ function newAggregateJoinSql(relations, prefix) {
4
+ let relation = relations[0];
5
+ var c = {};
6
+ var sql;
7
+
8
+ c.visitJoin = function(relation) {
9
+ var table = relation.childTable;
10
+ var alias = relation.parentTable._rootAlias || relation.parentTable._dbName;
11
+ var leftColumns = relation.columns;
12
+ var rightColumns = table._primaryColumns;
13
+ joinSql(alias, leftColumns, rightColumns);
14
+ };
15
+
16
+ c.visitOne = function(relation) {
17
+ var joinRelation = relation.joinRelation;
18
+ var rightColumns = joinRelation.columns;
19
+ var childTable = joinRelation.childTable;
20
+ var leftColumns = childTable._primaryColumns;
21
+ var alias = childTable._rootAlias || childTable._dbName;
22
+ joinSql(alias, leftColumns, rightColumns);
23
+ };
24
+
25
+ c.visitMany = c.visitOne;
26
+
27
+ function joinSql(alias, leftColumns, rightColumns) {
28
+ var table = relation.childTable;
29
+ var joinCore = newShallowJoinSql(table, leftColumns, rightColumns, alias, prefix + 1);
30
+ sql = joinCore;
31
+ }
32
+
33
+ relation.accept(c);
34
+ return sql;
35
+ }
36
+
37
+ module.exports = newAggregateJoinSql;
@@ -0,0 +1,38 @@
1
+ var newShallowJoinSql = require('../../query/singleQuery/joinSql/newShallowJoinSql');
2
+
3
+ function newJoinSql(relations, prefix) {
4
+ var leftAlias,
5
+ rightAlias;
6
+ var relation;
7
+ var c = {};
8
+ var sql = '';
9
+
10
+ c.visitJoin = function(relation) {
11
+ sql = newShallowJoinSql(relation.childTable,relation.columns,relation.parentTable._primaryColumns,leftAlias,rightAlias).prepend(' LEFT').prepend(sql);
12
+ };
13
+
14
+ c.visitOne = function(relation) {
15
+ innerJoin(relation);
16
+ };
17
+
18
+ c.visitMany = c.visitOne;
19
+
20
+ function innerJoin(relation) {
21
+ var joinRelation = relation.joinRelation;
22
+ var table = joinRelation.parentTable;
23
+ var leftColumns = table._primaryColumns;
24
+ var rightColumns = joinRelation.columns;
25
+
26
+ sql = newShallowJoinSql(table,leftColumns,rightColumns,leftAlias,rightAlias).prepend(' LEFT').prepend(sql);
27
+ }
28
+
29
+ for (let i = 0; i < relations.length; i++) {
30
+ leftAlias = i === 0 ? relations[i].parentTable._rootAlias || relations[i].parentTable._dbName: prefix + i;
31
+ rightAlias = prefix + i;
32
+ relation = relations[i];
33
+ relation.accept(c);
34
+ }
35
+ return sql;
36
+ }
37
+
38
+ module.exports = newJoinSql;
@@ -0,0 +1,48 @@
1
+ let newRelatedTable = _newRelatedTable;
2
+ let tryGetSessionContext = require('../tryGetSessionContext');
3
+
4
+ function newAggregate(_relations) {
5
+
6
+ function aggregate(fn) {
7
+ const includeMany = tryGetSessionContext()?.engine === 'mssql';
8
+ let { relations, alias } = extract(includeMany, _relations);
9
+ const table = relations[relations.length - 1].childTable;
10
+ if (!relations[0].isMany || includeMany)
11
+ table._rootAlias = alias;
12
+
13
+ try {
14
+ const query = fn(table);
15
+ delete table._rootAlias;
16
+ return query;
17
+ }
18
+ catch (e) {
19
+ delete table._rootAlias;
20
+ throw e;
21
+ }
22
+ }
23
+ return aggregate;
24
+
25
+ function extract(includeMany, relations) {
26
+ let alias = relations[0].toLeg().table._dbName;
27
+ let result = [];
28
+ for (let i = 0; i < relations.length; i++) {
29
+ if (relations[i].isMany && !includeMany) {
30
+ result = [relations[i]];
31
+ alias = relations[i].toLeg().table._dbName;
32
+ }
33
+ else {
34
+ result.push(relations[i]);
35
+ alias += relations[i].toLeg().name;
36
+ }
37
+ }
38
+ return { relations: result, alias };
39
+ }
40
+
41
+ }
42
+
43
+ function _newRelatedTable() {
44
+ newRelatedTable = require('../newRelatedTable');
45
+ return newRelatedTable.apply(null, arguments);
46
+ }
47
+
48
+ module.exports = newAggregate;