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,102 @@
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;
@@ -0,0 +1,17 @@
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;
@@ -0,0 +1,20 @@
1
+ var pushCommand = require('./commands/pushCommand');
2
+ var newDeleteCommand = require('./commands/newDeleteCommand');
3
+ var extractDeleteStrategy = require('./extractDeleteStrategy');
4
+ var negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
5
+ var emptyPromise = require('./resultToPromise')();
6
+
7
+ function _delete(table, filter, strategy) {
8
+ filter = negotiateRawSqlFilter(filter, table);
9
+ strategy = extractDeleteStrategy(strategy);
10
+ var relations = [];
11
+ var cmds = [];
12
+
13
+ cmds = newDeleteCommand(cmds, table, filter, strategy, relations);
14
+ cmds.forEach(function(cmd) {
15
+ pushCommand(cmd);
16
+ });
17
+ return emptyPromise;
18
+ }
19
+
20
+ module.exports = _delete;
@@ -0,0 +1,17 @@
1
+ let useHook = require('../useHook');
2
+ let cls;
3
+
4
+ function deleteSessionContext() {
5
+ if (useHook()) {
6
+ if (!cls)
7
+ cls = require('node-cls');
8
+ let context = cls.get('rdb');
9
+ delete context.rdb;
10
+ if (context.exit)
11
+ cls.exit('rdb');
12
+ }
13
+ else
14
+ delete process.domain.rdb;
15
+ }
16
+
17
+ module.exports = deleteSessionContext;
@@ -0,0 +1,10 @@
1
+ var getSessionSingleton = require('./getSessionSingleton');
2
+
3
+ function encodeDbSpecific(name, value) {
4
+ var encode = getSessionSingleton('encode' + name);
5
+ if (encode)
6
+ return encode(value);
7
+ return value;
8
+ }
9
+
10
+ module.exports = encodeDbSpecific;
@@ -0,0 +1,35 @@
1
+ var executeQuery = require('./executeQuery');
2
+ var newPromise = require('../promise');
3
+
4
+ function executeChanges(queries) {
5
+ if (queries.length === 0)
6
+ return newPromise();
7
+ var i = -1;
8
+ return execute().then(emitChanged);
9
+
10
+
11
+ function execute() {
12
+ i++;
13
+ if (i + 1 === queries.length)
14
+ return executeQuery(queries[i]).then(notifyListener);
15
+ else {
16
+ return executeQuery(queries[i]).then(notifyListener).then(execute);
17
+ }
18
+ }
19
+
20
+ function notifyListener(result) {
21
+ if (result && queries[i].onResult)
22
+ queries[i].onResult(result);
23
+ }
24
+
25
+ async function emitChanged() {
26
+ for (let i = 0; i < queries.length; i++) {
27
+ if (queries[i].emitChanged)
28
+ await Promise.all(queries[i].emitChanged());
29
+ }
30
+ }
31
+
32
+
33
+ }
34
+
35
+ module.exports = executeChanges;
@@ -0,0 +1,12 @@
1
+ var executeQuery = require('./executeQuery');
2
+
3
+ function executeQueriesCore(queries) {
4
+ var promises = [];
5
+ for (var i = 0; i < queries.length; i++) {
6
+ var q = executeQuery(queries[i]);
7
+ promises.push(q);
8
+ }
9
+ return promises;
10
+ }
11
+
12
+ module.exports = executeQueriesCore;
@@ -0,0 +1,8 @@
1
+ var newResolver = require('./resolveExecuteQuery');
2
+
3
+ function executeQuery(query) {
4
+ var resolver = newResolver(query);
5
+ return new Promise(resolver);
6
+ }
7
+
8
+ module.exports = executeQuery;
@@ -0,0 +1,57 @@
1
+ var getSessionSingleton = require('../getSessionSingleton');
2
+
3
+ function resolveExecuteQuery(query) {
4
+ return resolve;
5
+
6
+ function resolve(success, failed) {
7
+ try {
8
+
9
+ var domain = process.domain;
10
+ if (domain) {
11
+ success = process.domain.bind(success);
12
+ failed = process.domain.bind(failed);
13
+ }
14
+
15
+ var client = getSessionSingleton('dbClient');
16
+ query = negotiateNullParams(query);
17
+ client.executeQuery(query, onCompleted);
18
+ } catch (e) {
19
+ failed(e);
20
+ }
21
+
22
+ function onCompleted(err, rows) {
23
+ if (!err)
24
+ success(rows);
25
+ else
26
+ failed(err);
27
+ }
28
+ }
29
+
30
+ }
31
+
32
+ function negotiateNullParams(query) {
33
+ if (query && query.parameters && query.parameters.length > 0 && (query.parameters.filter(x => x === null || x === undefined).length > 0)) {
34
+ var splitted = query.sql().split('?');
35
+ var sql = '';
36
+ var parameters = [];
37
+ var lastIndex = splitted.length - 1;
38
+ for (var i = 0; i < lastIndex; i++) {
39
+ if (query.parameters[i] === null || query.parameters[i] === undefined)
40
+ sql += splitted[i] + 'null';
41
+ else {
42
+ sql += splitted[i] + '?';
43
+ parameters.push(query.parameters[i]);
44
+ }
45
+ }
46
+ sql += splitted[lastIndex];
47
+ return {
48
+ sql: () => sql,
49
+ parameters
50
+ };
51
+
52
+ }
53
+ else
54
+ return query;
55
+ }
56
+
57
+ module.exports = resolveExecuteQuery;
@@ -0,0 +1,15 @@
1
+ var executeChanges = require('./executeQueries/executeChanges');
2
+ var popChanges = require('./popChanges');
3
+ var executeQueriesCore = require('./executeQueries/executeQueriesCore');
4
+
5
+ function executeQueries(queries) {
6
+ var changes = popChanges();
7
+
8
+ return executeChanges(changes).then(onDoneChanges);
9
+
10
+ function onDoneChanges() {
11
+ return executeQueriesCore(queries);
12
+ }
13
+ }
14
+
15
+ module.exports = executeQueries;
@@ -0,0 +1,9 @@
1
+ var emptyStrategy = require('../newObject')();
2
+
3
+ function extractDeleteStrategy(strategy) {
4
+ if (strategy)
5
+ return strategy;
6
+ return emptyStrategy;
7
+ }
8
+
9
+ module.exports = extractDeleteStrategy;
@@ -0,0 +1,18 @@
1
+ function fuzzyPromise(value) {
2
+ if (value !== undefined && value !== null)
3
+ Object.defineProperty(value, 'then', {
4
+ value: then,
5
+ writable: true,
6
+ enumerable: false,
7
+ configurable: true
8
+ });
9
+
10
+ return value;
11
+
12
+ function then(fn) {
13
+ delete value.then;
14
+ fn(value);
15
+ }
16
+ }
17
+
18
+ module.exports = fuzzyPromise;
@@ -0,0 +1,33 @@
1
+ let tryGetFromCacheById = require('./tryGetFromCacheById');
2
+ let getFromDbById = require('./getFromDbById');
3
+ let resultToPromise = require('./resultToPromise');
4
+ let extractStrategy = require('./tryGetFromDbById/extractStrategy');
5
+
6
+ async function getById() {
7
+ let strategy = extractStrategy.apply(null, arguments);
8
+ let cached = tryGetFromCacheById.apply(null,arguments);
9
+ if (cached) {
10
+ await expand(cached, strategy);
11
+ return resultToPromise(cached);
12
+
13
+ }
14
+ return getFromDbById.apply(null,arguments);
15
+ }
16
+
17
+ getById.exclusive = getFromDbById.exclusive;
18
+
19
+ async function expand(rows, strategy) {
20
+ if (!rows)
21
+ return;
22
+ if (!Array.isArray(rows))
23
+ rows = [rows];
24
+ for(let p in strategy) {
25
+ if(!(strategy[p] === null || strategy[p]))
26
+ continue;
27
+ for (let i = 0; i < rows.length; i++) {
28
+ await expand(await rows[i][p], strategy[p]);
29
+ }
30
+ }
31
+ }
32
+
33
+ module.exports = getById;
@@ -0,0 +1,10 @@
1
+ var tryGet = require('./tryGetFirstFromDb');
2
+
3
+ function get() {
4
+ var row = tryGet.apply(null,arguments);
5
+ if (row === null)
6
+ throw('Row not found.');
7
+ return row;
8
+ }
9
+
10
+ module.exports = get;
@@ -0,0 +1,17 @@
1
+ let tryGetFromDbById = require('./tryGetFromDbById');
2
+
3
+ function get(table, ...ids) {
4
+ return tryGetFromDbById.apply(null, arguments).then((row) => onResult(table, row, ids));
5
+ }
6
+
7
+ get.exclusive = function(table, ...ids) {
8
+ return tryGetFromDbById.exclusive.apply(null, arguments).then((row) => onResult(table, row, ids));
9
+ };
10
+
11
+ function onResult(table, row, id) {
12
+ if (row === null)
13
+ throw new Error(`${table._dbName }: Row with id ${id} not found.`);
14
+ return row;
15
+ }
16
+
17
+ module.exports = get;
@@ -0,0 +1,14 @@
1
+ var extractStrategy = require('./resultToRows/toDto/extractStrategy');
2
+
3
+ function extractStrategyForId(table, args) {
4
+ args = [...args];
5
+ if (args.length <= table._primaryColumns.length)
6
+ return args;
7
+ let strategyPosition = table._primaryColumns.length;
8
+ let strategy = args[strategyPosition];
9
+ if (strategy === undefined)
10
+ args.splice(strategyPosition, 1, extractStrategy(table));
11
+ return args;
12
+ }
13
+
14
+ module.exports = extractStrategyForId;
@@ -0,0 +1,26 @@
1
+ let newQuery = require('./newQuery');
2
+ let executeQueries = require('./executeQueries');
3
+ let resultToRows = require('./resultToRows');
4
+ let strategyToSpan = require('./strategyToSpan');
5
+ let emptyInnerJoin = require('./query/newParameterized')();
6
+ let negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
7
+
8
+ function getMany(table,filter,strategy) {
9
+ return getManyCore(table,filter,strategy);
10
+ }
11
+
12
+ async function getManyCore(table,filter,strategy,exclusive) {
13
+ let alias = table._dbName;
14
+ let noOrderBy;
15
+ filter = negotiateRawSqlFilter(filter, table);
16
+ let span = strategyToSpan(table,strategy);
17
+ let queries = newQuery([],table,filter,span,alias,emptyInnerJoin,noOrderBy,exclusive);
18
+ let result = await executeQueries(queries);
19
+ return resultToRows(span,result);
20
+ }
21
+
22
+ getMany.exclusive = function(table,filter,strategy) {
23
+ return getManyCore(table,filter,strategy,true);
24
+ };
25
+
26
+ module.exports = getMany;
@@ -0,0 +1,32 @@
1
+ var newPgQuery = require('./pg/newQuery');
2
+ var getSessionContext = require('../getSessionContext');
3
+
4
+ function newQuery() {
5
+ var c = {};
6
+ var _newQuery;
7
+
8
+ c.visitPg = function() {
9
+ _newQuery = newPgQuery;
10
+ };
11
+ c.visitMySql = function() {
12
+ throw new Error('MySql not supported');
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
+ c.visitOracle = function() {
24
+ throw new Error('Oracle not supported');
25
+ };
26
+
27
+ getSessionContext().accept(c);
28
+
29
+ return _newQuery.apply(null, arguments);
30
+ }
31
+
32
+ module.exports = newQuery;
@@ -0,0 +1,8 @@
1
+ var newQueryCore = require('../../readStream/pg/newQueryCore');
2
+
3
+ function newQuery() {
4
+ var query = newQueryCore.apply(null, arguments);
5
+ return query.prepend('select json_strip_nulls(coalesce(json_agg(row_to_json(r)), \'[]\')) as result from (').append(') r');
6
+ }
7
+
8
+ module.exports = newQuery;
@@ -0,0 +1,10 @@
1
+ const tryGetSessionContext = require('../table/tryGetSessionContext');
2
+ const getManyDtoCore = require('../getManyDto');
3
+
4
+
5
+ function getManyDto(_table, _filter, _strategy) {
6
+ const _getManyDto = tryGetSessionContext().getManyDto || getManyDtoCore;
7
+ return _getManyDto.apply(null, arguments);
8
+ }
9
+
10
+ module.exports = getManyDto;
@@ -0,0 +1,172 @@
1
+ var newSingleQuery = require('./query/newSingleQuery');
2
+ var extractOrderBy = require('../../table/query/extractOrderBy');
3
+ var newShallowJoinSql = require('../query/singleQuery/joinSql/newShallowJoinSql');
4
+ const executeQueries = require('../executeQueries');
5
+
6
+ async function getSubRows(parentRows, filter, span, alias, innerJoin, orderBy) {
7
+ var promises = [];
8
+ var c = {};
9
+
10
+ c.visitOne = function(leg) {
11
+ const rightAlias = alias;
12
+ var nextAlias = rightAlias + '_0';
13
+ var parentTable = leg.table;
14
+ var childColumns = parentTable._primaryColumns;
15
+ var parentColumns = leg.columns;
16
+ var shallowJoin = newShallowJoinSql(parentTable, parentColumns, childColumns, nextAlias, rightAlias);
17
+ var nextOrderBy = orderBy + ',' + extractOrderBy(leg.span.table, nextAlias, leg.span.orderBy).substring(9);
18
+ var nextInnerJoin = shallowJoin.append(innerJoin);
19
+ var query = newSingleQuery(leg.span.table, filter, leg.span, nextAlias, nextInnerJoin, nextOrderBy);
20
+
21
+ promises.push(executeQueries([query])
22
+ .then(res => res[0])
23
+ .then(async (rows) => {
24
+ importOne(rows, leg);
25
+ await getSubRows(rows, filter, leg.span, alias + '_0', nextOrderBy);
26
+ }));
27
+ };
28
+
29
+ c.visitMany = function(leg) {
30
+ const rightAlias = alias;
31
+ var nextAlias = rightAlias + '_0';
32
+ var parentTable = leg.table;
33
+ var childColumns = parentTable._primaryColumns;
34
+ var parentColumns = leg.columns;
35
+ var shallowJoin = newShallowJoinSql(parentTable, parentColumns, childColumns, nextAlias, rightAlias);
36
+ var nextOrderBy = orderBy + ',' + extractOrderBy(leg.span.table, nextAlias, leg.span.orderBy).substring(9);
37
+ var nextInnerJoin = shallowJoin.append(innerJoin);
38
+ var query = newSingleQuery(leg.span.table, filter, leg.span, nextAlias, nextInnerJoin, nextOrderBy);
39
+
40
+ promises.push(executeQueries([query])
41
+ .then(res => res[0])
42
+ .then(async (rows) => {
43
+ importMany(rows, leg);
44
+ await getSubRows(rows, filter, leg.span, alias + '_0', nextInnerJoin, nextOrderBy);
45
+ }));
46
+ };
47
+
48
+ c.visitJoin = function(leg) {
49
+ var nextAlias = alias + '_0';
50
+ var span = leg.span;
51
+ var parentTable = leg.table;
52
+ var childColumns = span.table._primaryColumns;
53
+ var parentColumns = leg.columns;
54
+ var shallowJoin = newShallowJoinSql(parentTable, childColumns, parentColumns, nextAlias, alias);
55
+ var nextOrderBy = orderBy + ',' + extractOrderBy(leg.span.table, nextAlias, leg.span.orderBy).substring(9);
56
+ var nextInnerJoin = shallowJoin.append(innerJoin);
57
+ var query = newSingleQuery(span.table, filter, span, nextAlias, nextInnerJoin, nextOrderBy);
58
+
59
+ promises.push(executeQueries([query])
60
+ .then(res => res[0])
61
+ .then(async (rows) => {
62
+ importJoined(rows, leg);
63
+ await getSubRows(rows, filter, leg.span, alias + '_0', nextInnerJoin, nextOrderBy);
64
+ }));
65
+ };
66
+
67
+ const legs = span.legs.toArray();
68
+ for (let i = 0; i < legs.length; i++) {
69
+ legs[i].accept(c);
70
+ await Promise.all(promises);
71
+ }
72
+
73
+ function importOne(rows, leg) {
74
+ const prop = leg.name;
75
+ var parentColumns = leg.table._primaryColumns;
76
+ var childColumns = leg.columns;
77
+ importOneObjects(rows, prop, parentColumns, childColumns);
78
+ }
79
+
80
+ function importMany(rows, leg) {
81
+ const prop = leg.name;
82
+ var parentColumns = leg.table._primaryColumns;
83
+ var childColumns = leg.columns;
84
+ let j = 0;
85
+ for (let i = 0; i < parentRows.length; i++) {
86
+ const array = [rows[j]];
87
+ while (j+1 < rows.length && isChild(parentRows[i], rows[j+1], parentColumns, childColumns)) {
88
+ j++;
89
+ array.push(rows[j]);
90
+ }
91
+ parentRows[i][prop] = array;
92
+ j++;
93
+ if (j >= rows.length)
94
+ return;
95
+ }
96
+
97
+ }
98
+
99
+ function importJoined(rows, leg) {
100
+ const prop = leg.name;
101
+ var parentColumns = leg.columns;
102
+ var childColumns = leg.span.table._primaryColumns;
103
+ for (let i = 0; i < parentRows.length; i++) {
104
+ if (isChild(parentRows[i], rows[i], parentColumns, childColumns))
105
+ parentRows[i][prop] = rows[i];
106
+ else
107
+ parentRows[i][prop] = null;
108
+ }
109
+ }
110
+
111
+ function importOneObjects(rows, prop, parentColumns, childColumns) {
112
+ for (let i = 0; i < parentRows.length; i++) {
113
+ if (isChild(parentRows[i], rows[i], parentColumns, childColumns))
114
+ parentRows[i][prop] = rows[i];
115
+ else
116
+ parentRows[i][prop] = null;
117
+ }
118
+ }
119
+
120
+
121
+ // function importArrays(rows, prop, parentColumns, childColumns) {
122
+ // let j = 0;
123
+ // for (let i = 0; i < parentRows.length; i++) {
124
+ // const array = [rows[j]];
125
+ // while (isChild)
126
+
127
+ // // parentRows[i][prop] = [];
128
+ // // if (isChild(parentRows[i], rows[j], parentColumns, childColumns)) {
129
+ // // parentRows[i][prop] = rows[j];
130
+ // // j++;
131
+ // // if (j == parentRows.length)
132
+ // // return;
133
+ // // while (isChild(parentRows[i], rows[j], parentColumns, childColumns)) {
134
+ // // if (j == parentRows.length)
135
+ // // return;
136
+ // // parentRows[i][prop] = rows[j];
137
+ // // j++;
138
+ // // }
139
+ // // }
140
+ // }
141
+ // let j = 0;
142
+ // for (let i = 0; i < rows.length; i++) {
143
+ // const row = rows[i];
144
+ // while (j < parentRows.length && !isChild(parentRows[j], row, parentColumns, childColumns)) {
145
+ // if (!parentRows[j][prop])
146
+ // parentRows[j][prop] = [];
147
+ // j++;
148
+ // }
149
+ // if (j < parentRows.length)
150
+ // if (parentRows[j][prop])
151
+ // parentRows[j][prop].push(row);
152
+ // else
153
+ // parentRows[j][prop] = [row];
154
+ // else
155
+ // return;
156
+
157
+ // }
158
+ // }
159
+
160
+
161
+ function isChild(parentRow, row, parentColumns, childColumns) {
162
+ for (let i = 0; i < childColumns.length; i++) {
163
+ if (row[childColumns[i].alias] == parentRow[parentColumns[i].alias])
164
+ continue;
165
+ return false;
166
+ }
167
+ return true;
168
+ }
169
+
170
+ }
171
+
172
+ module.exports = getSubRows;
@@ -0,0 +1,8 @@
1
+ var newQueryCore = require('./newQueryCore');
2
+
3
+ function newQuery() {
4
+ var query = newQueryCore.apply(null, arguments);
5
+ return query;
6
+ }
7
+
8
+ module.exports = newQuery;