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,45 @@
1
+ let emptyFilter = require('../../emptyFilter');
2
+ let newForeignKeyFilter = require('../relation/newForeignKeyFilter');
3
+ let negotiateExpandInverse = require('../negotiateExpandInverse');
4
+
5
+ function getRelatives(parent, relation) {
6
+ let queryContext = parent.queryContext;
7
+ let strategy = queryContext && queryContext.strategy[relation.joinRelation.rightAlias];
8
+
9
+
10
+ let filter;
11
+ let parentTable = relation.joinRelation.childTable;
12
+
13
+ if (parentTable._primaryColumns.length === 1)
14
+ filter = createInFilter();
15
+ else
16
+ filter = createCompositeFilter();
17
+
18
+
19
+ function createInFilter() {
20
+ let parentAlias = parentTable._primaryColumns[0].alias;
21
+ let ids = queryContext.rows.map(function(row) {
22
+ return row[parentAlias];
23
+ });
24
+ let column = relation.joinRelation.columns[0];
25
+ return column.in(ids);
26
+ }
27
+
28
+ function createCompositeFilter() {
29
+ let filters = queryContext.rows.map(function(row) {
30
+ return newForeignKeyFilter(relation.joinRelation, row);
31
+ });
32
+ return emptyFilter.or.apply(emptyFilter, filters);
33
+ }
34
+
35
+ return relation.childTable.getMany(filter, strategy).then(onRows);
36
+
37
+ function onRows(rows) {
38
+ queryContext.expand(relation);
39
+ negotiateExpandInverse(parent, relation, rows);
40
+ return rows;
41
+ }
42
+
43
+ }
44
+
45
+ module.exports = getRelatives;
@@ -0,0 +1,19 @@
1
+ var getChangeSet = require('./commands/getChangeSet');
2
+ var compressChanges = require('./commands/compressChanges');
3
+
4
+ function popChanges() {
5
+ var changeSet = getChangeSet();
6
+ var length = changeSet.length;
7
+ if (length > 0) {
8
+ var lastCmd = changeSet[length-1];
9
+ if (lastCmd.endEdit)
10
+ lastCmd.endEdit();
11
+ var compressed = compressChanges(changeSet);
12
+ changeSet.length = 0;
13
+ return compressed;
14
+ }
15
+ return changeSet;
16
+
17
+ }
18
+
19
+ module.exports = popChanges;
@@ -0,0 +1,14 @@
1
+ var promise = require('promise/domains');
2
+ var deferred = require('deferred');
3
+ let promisify = require('util').promisify;
4
+
5
+
6
+ function newPromise(func) {
7
+ if (!func)
8
+ return deferred.resolve.apply(deferred, arguments);
9
+ return new promise(func);
10
+ }
11
+
12
+ newPromise.all = Promise.all;
13
+ newPromise.denodeify = promisify || promise.denodeify;
14
+ module.exports = newPromise;
@@ -0,0 +1,49 @@
1
+ function purifyStrategy(table, strategy, columns = new Map()) {
2
+ strategy = { ...strategy };
3
+ for (let p in strategy) {
4
+ if (strategy[p] === null)
5
+ strategy[p] = true;
6
+ }
7
+
8
+ let hasIncludedColumns;
9
+ for (let name in strategy) {
10
+ if (table._relations[name] && !strategy[name])
11
+ continue;
12
+ else if (table._relations[name])
13
+ strategy[name] = addLeg(table._relations[name], strategy[name], columns);
14
+ else if (table[name] && table[name].eq ) {
15
+ if (!columns.has(table[name]))
16
+ columns.set(table[name], strategy[name]);
17
+ hasIncludedColumns = hasIncludedColumns || strategy[name];
18
+ }
19
+ }
20
+ for (let i = 0; i < table._columns.length; i++) {
21
+ let column = table._columns[i];
22
+ strategy[column.alias] = !hasIncludedColumns;
23
+ }
24
+
25
+ table._primaryColumns.forEach(column => {
26
+ strategy[column.alias] = true;
27
+ });
28
+ columns.forEach((value, key) => strategy[key.alias] = value);
29
+
30
+ return strategy;
31
+
32
+ }
33
+
34
+ function addLeg(relation, strategy, columns) {
35
+ let nextColumns = new Map();
36
+ if (!relation.joinRelation)
37
+ for (let i = 0; i < relation.columns.length; i++) {
38
+ columns.set(relation.columns[i], true);
39
+ }
40
+ else {
41
+ relation.joinRelation.columns.forEach(column => {
42
+ nextColumns.set(column, true);
43
+ });
44
+ }
45
+ let childTable = relation.childTable;
46
+ return purifyStrategy(childTable, strategy, nextColumns);
47
+ }
48
+
49
+ module.exports = purifyStrategy;
@@ -0,0 +1,9 @@
1
+ var emptyFilter = require('../../emptyFilter');
2
+
3
+ function extract(filter) {
4
+ if (filter)
5
+ return filter;
6
+ return emptyFilter;
7
+ }
8
+
9
+ module.exports = extract;
@@ -0,0 +1,11 @@
1
+ var getSessionContext = require('../getSessionContext');
2
+
3
+ function extractLimit(span) {
4
+ let limit = getSessionContext().limit;
5
+ if (limit)
6
+ return limit(span);
7
+ else
8
+ return '';
9
+ }
10
+
11
+ module.exports = extractLimit;
@@ -0,0 +1,23 @@
1
+ var newWhereSql = require('./singleQuery/newWhereSql');
2
+ var negotiateLimit = require('./singleQuery/negotiateLimit');
3
+ var newParameterized = require('./newParameterized');
4
+ var getSessionContext = require('../getSessionContext');
5
+
6
+ function _new(table, filter, span, alias, orderBy, limit) {
7
+ //unused ?
8
+
9
+ if (!limit)
10
+ return;
11
+ var whereSql = newWhereSql(table, filter, alias);
12
+ var safeLimit = negotiateLimit(limit);
13
+ var sql;
14
+ if (getSessionContext().limit === 'TOP') {
15
+ safeLimit = safeLimit.replace('limit', 'top');
16
+ sql = 'select ' + safeLimit + ' * from ' + table._dbName + ' ' + alias + whereSql + orderBy;
17
+ }
18
+ sql = 'select * from ' + table._dbName + ' ' + alias + whereSql + orderBy + safeLimit;
19
+
20
+ return newParameterized(sql, filter.parameters);
21
+ }
22
+
23
+ module.exports = _new;
@@ -0,0 +1,11 @@
1
+ var getSessionContext = require('../getSessionContext');
2
+
3
+ function extractOffset(span) {
4
+ let {limitAndOffset} = getSessionContext();
5
+ if (limitAndOffset)
6
+ return limitAndOffset(span);
7
+ else
8
+ return '';
9
+ }
10
+
11
+ module.exports = extractOffset;
@@ -0,0 +1,57 @@
1
+ function extractOrderBy(table, alias, orderBy, originalOrderBy) {
2
+ var dbNames = [];
3
+ var i;
4
+ if (orderBy) {
5
+ if (typeof orderBy === 'string')
6
+ orderBy = [orderBy];
7
+ for (i = 0; i < orderBy.length; i++) {
8
+ var nameAndDirection = extractNameAndDirection(orderBy[i]);
9
+ pushColumn(nameAndDirection.name, nameAndDirection.direction);
10
+ }
11
+ } else {
12
+ if(originalOrderBy)
13
+ return originalOrderBy;
14
+
15
+ for (i = 0; i < table._primaryColumns.length; i++) {
16
+ pushColumn(table._primaryColumns[i].alias);
17
+ }
18
+ }
19
+
20
+ function extractNameAndDirection(orderBy) {
21
+ var elements = orderBy.split(' ');
22
+ var direction = '';
23
+ if (elements.length > 1) {
24
+ direction = ' ' + elements[1];
25
+ }
26
+ return {
27
+ name: elements[0],
28
+ direction: direction
29
+ };
30
+ }
31
+ function pushColumn(property, direction) {
32
+ direction = direction || '';
33
+ var column = getTableColumn(property);
34
+ var jsonQuery = getJsonQuery(property, column.alias);
35
+
36
+ dbNames.push(alias + '.' + column._dbName + jsonQuery + direction);
37
+ }
38
+
39
+ function getTableColumn(property) {
40
+ var column = table[property] || table[property.split(/(-|#)>+/g)[0]];
41
+ if(!column){
42
+ 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.`);
43
+ }
44
+ return column;
45
+ }
46
+ function getJsonQuery(property, column) {
47
+ let containsJson = (/(-|#)>+/g).test(property);
48
+ if(!containsJson){
49
+ return '';
50
+ }
51
+ return property.replace(column, '');
52
+ }
53
+
54
+ return ' order by ' + dbNames.join(',');
55
+ }
56
+
57
+ module.exports = extractOrderBy;
@@ -0,0 +1,10 @@
1
+ function extract(sql) {
2
+ if (sql && typeof(sql) === 'function')
3
+ return sql();
4
+ else if (sql === undefined)
5
+ return '';
6
+ else
7
+ return sql;
8
+ }
9
+
10
+ module.exports = extract;
@@ -0,0 +1,38 @@
1
+ var extractSql = require('./extractSql');
2
+ var extractParameters = require('./parameterized/extractParameters');
3
+
4
+ var nextParameterized = function(text, params) {
5
+ nextParameterized = require('../query/newParameterized');
6
+ return nextParameterized(text, params);
7
+ };
8
+
9
+ function Parameterized(text, parameters) {
10
+ this._text = text;
11
+ this.parameters = parameters;
12
+ }
13
+
14
+ Parameterized.prototype.sql = function() {
15
+ return this._text;
16
+ };
17
+
18
+ Parameterized.prototype.prepend = function(other) {
19
+ if (other.sql) {
20
+ var params = other.parameters.concat(this.parameters);
21
+ return nextParameterized(other.sql() + this._text, params);
22
+ } else
23
+ return nextParameterized(other + this._text, this.parameters);
24
+ };
25
+
26
+ Parameterized.prototype.append = function(other) {
27
+ if (other.sql) {
28
+ var params = this.parameters.concat(other.parameters);
29
+ return nextParameterized(this._text + other.sql(), params);
30
+ } else
31
+ return nextParameterized(this._text + other, this.parameters);
32
+ };
33
+
34
+ module.exports = function(text, parameters) {
35
+ text = extractSql(text);
36
+ parameters = extractParameters(parameters);
37
+ return new Parameterized(text, parameters);
38
+ };
@@ -0,0 +1,23 @@
1
+ var newColumnSql = require('./singleQuery/newColumnSql');
2
+ var newJoinSql = require('./singleQuery/newJoinSql');
3
+ var newWhereSql = require('./singleQuery/newWhereSql');
4
+ var negotiateLimit = require('./singleQuery/negotiateLimit');
5
+ var negotiateExclusive = require('./singleQuery/negotiateExclusive');
6
+ var newParameterized = require('../../table/query/newParameterized');
7
+
8
+ function _new(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive) {
9
+
10
+ var name = table._dbName;
11
+ var columnSql = newColumnSql(table,span,alias);
12
+ var joinSql = newJoinSql(span,alias);
13
+ var whereSql = newWhereSql(table,filter,alias);
14
+ var safeLimit = negotiateLimit(limit);
15
+ var exclusiveClause = negotiateExclusive(table,alias,exclusive);
16
+ return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + alias)
17
+ .append(innerJoin)
18
+ .append(joinSql)
19
+ .append(whereSql)
20
+ .append(orderBy + offset + exclusiveClause);
21
+ }
22
+
23
+ module.exports = _new;
@@ -0,0 +1,8 @@
1
+ function extract(parameters) {
2
+ if (parameters) {
3
+ return parameters.slice(0);
4
+ }
5
+ return [];
6
+ }
7
+
8
+ module.exports = extract;
@@ -0,0 +1,16 @@
1
+ var newShallowColumnSql = require('./newShallowColumnSql');
2
+ var newJoinedColumnSql = _initJoinedColumnSql;
3
+
4
+ function sql(leg,alias,ignoreNull) {
5
+ var span = leg.span;
6
+ var shallowColumnSql = newShallowColumnSql(span.table,alias, span, ignoreNull);
7
+ var joinedColumnSql = newJoinedColumnSql(span,alias,ignoreNull);
8
+ return ',' + shallowColumnSql + joinedColumnSql;
9
+ }
10
+
11
+ function _initJoinedColumnSql(span,alias,ignoreNull) {
12
+ newJoinedColumnSql = require('./newJoinedColumnSql');
13
+ return newJoinedColumnSql(span,alias,ignoreNull);
14
+ }
15
+
16
+ module.exports = sql;
@@ -0,0 +1,27 @@
1
+ var joinLegToColumnSql = require('./joinLegToColumnSql');
2
+
3
+ module.exports = function(span, alias, ignoreNull) {
4
+ var c = {};
5
+ var sql = '';
6
+
7
+ c.visitJoin = function(leg) {
8
+ var joinSql = joinLegToColumnSql(leg, alias + leg.name, ignoreNull);
9
+ sql = sql + joinSql;
10
+ };
11
+
12
+ c.visitOne = function(leg) {
13
+ c.visitJoin(leg);
14
+ };
15
+
16
+ c.visitMany = function() {
17
+ };
18
+
19
+
20
+ span.legs.forEach(onEach);
21
+
22
+ function onEach(leg) {
23
+ leg.accept(c);
24
+ }
25
+
26
+ return sql;
27
+ };
@@ -0,0 +1,37 @@
1
+ function _new(table, alias, span, ignoreNulls) {
2
+ let columnsMap = span.columns;
3
+ var columns = table._columns;
4
+ var sql = '';
5
+ var separator = '';
6
+
7
+ for (let i = 0; i < columns.length; i++) {
8
+ var column = columns[i];
9
+ if (!columnsMap || (columnsMap.get(column))) {
10
+ sql = sql + separator + formatColumn(column) + ' as s' + alias + i;
11
+ separator = ',';
12
+ }
13
+ else if (!ignoreNulls) {
14
+ sql = sql + separator + 'null as s' + alias + i;
15
+ separator = ',';
16
+ }
17
+ }
18
+
19
+ for (let name in span.aggregates || {}) {
20
+ sql = sql + separator + span.aggregates[name].expression(name);
21
+ separator = ',';
22
+ }
23
+
24
+ return sql;
25
+
26
+ function formatColumn(column) {
27
+ const formatted = column.formatOut ? column.formatOut(alias) : alias + '.' + column._dbName;
28
+ if (column.dbNull === null)
29
+ return formatted;
30
+ else {
31
+ const encoded = column.encode.unsafe(column.dbNull);
32
+ return `CASE WHEN ${formatted}=${encoded} THEN null ELSE ${formatted} END`;
33
+ }
34
+ }
35
+ }
36
+
37
+ module.exports = _new;
@@ -0,0 +1,13 @@
1
+ var joinLegToShallowJoinSql = require('./joinLegToShallowJoinSql');
2
+ var newJoinSql = _newJoinSql;
3
+
4
+ function toJoinSql(leg,alias,childAlias) {
5
+ return joinLegToShallowJoinSql(leg,alias,childAlias).append(newJoinSql(leg.span,childAlias));
6
+ }
7
+
8
+ function _newJoinSql() {
9
+ newJoinSql = require('../newJoinSql');
10
+ return newJoinSql.apply(null,arguments);
11
+ }
12
+
13
+ module.exports = toJoinSql;
@@ -0,0 +1,9 @@
1
+ var newShallowJoinSql = require('./newShallowJoinSql');
2
+
3
+ function toJoinSql(leg,alias,childAlias) {
4
+ var columns = leg.columns;
5
+ var childTable = leg.span.table;
6
+ return newShallowJoinSql(childTable,columns,childTable._primaryColumns,alias,childAlias,leg.span.where).prepend(' LEFT');
7
+ }
8
+
9
+ module.exports = toJoinSql;
@@ -0,0 +1,11 @@
1
+ var newDiscriminatorSqlCore = require('../newDiscriminatorSql');
2
+
3
+ function newDiscriminatorSql(table, alias) {
4
+ var result = newDiscriminatorSqlCore(table,alias);
5
+ if (result)
6
+ return ' AND' + result;
7
+ return result;
8
+
9
+ }
10
+
11
+ module.exports = newDiscriminatorSql;
@@ -0,0 +1,9 @@
1
+ var newJoinCore = require('./newShallowJoinSqlCore');
2
+
3
+ function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias, filter) {
4
+ var sql = ' JOIN ' + rightTable._dbName + ' ' + rightAlias + ' ON (';
5
+ var joinCore = newJoinCore(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter);
6
+ return joinCore.prepend(sql).append(')');
7
+ }
8
+
9
+ module.exports = _new;
@@ -0,0 +1,25 @@
1
+ var newDiscriminatorSql = require('./newDiscriminatorSql');
2
+ var newParameterized = require('../../newParameterized');
3
+
4
+ function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter) {
5
+ var sql = '';
6
+ var delimiter = '';
7
+ for (var i = 0; i < leftColumns.length; i++) {
8
+ addColumn(i);
9
+ delimiter = ' AND ';
10
+ }
11
+
12
+ function addColumn(index) {
13
+ var leftColumn = leftColumns[index];
14
+ var rightColumn = rightColumns[index];
15
+ sql += delimiter + leftAlias + '.' + leftColumn._dbName + '=' + rightAlias + '.' + rightColumn._dbName;
16
+ }
17
+
18
+ sql += newDiscriminatorSql(rightTable,rightAlias);
19
+ var result = newParameterized(sql);
20
+ if (filter)
21
+ result = result.append(delimiter).append(filter);
22
+ return result;
23
+ }
24
+
25
+ module.exports = _new;
@@ -0,0 +1,13 @@
1
+ var oneLegToShallowJoinSql = require('./oneLegToShallowJoinSql');
2
+ var newJoinSql = _newJoinSql;
3
+
4
+ function toJoinSql(leg,alias,childAlias) {
5
+ return oneLegToShallowJoinSql(leg,alias,childAlias).append(newJoinSql(leg.span,childAlias));
6
+ }
7
+
8
+ function _newJoinSql() {
9
+ newJoinSql = require('../newJoinSql');
10
+ return newJoinSql.apply(null,arguments);
11
+ }
12
+
13
+ module.exports = toJoinSql;
@@ -0,0 +1,10 @@
1
+ var newShallowJoinSql = require('./newShallowJoinSql');
2
+
3
+ function toJoinSql(leg,alias,childAlias) {
4
+ var parentTable = leg.table;
5
+ var columns = leg.columns;
6
+ var childTable = leg.span.table;
7
+ return newShallowJoinSql(childTable,parentTable._primaryColumns,columns,alias,childAlias, leg.span.where).prepend(' LEFT');
8
+ }
9
+
10
+ module.exports = toJoinSql;
@@ -0,0 +1,11 @@
1
+ var getSessionSingleton = require('../../getSessionSingleton');
2
+
3
+ function negotiateExclusive(table, alias, _exclusive) {
4
+ if (table._exclusive || _exclusive) {
5
+ var encode = getSessionSingleton('selectForUpdateSql');
6
+ return encode(alias);
7
+ }
8
+ return '';
9
+ }
10
+
11
+ module.exports = negotiateExclusive;
@@ -0,0 +1,10 @@
1
+ function negotiateLimit(limit) {
2
+ if(!limit)
3
+ return ' ';
4
+
5
+ if(limit.charAt(0) !== ' ')
6
+ return ' ' + limit;
7
+ return limit;
8
+ }
9
+
10
+ module.exports = negotiateLimit;
@@ -0,0 +1,8 @@
1
+ var newShallowColumnSql = require('./columnSql/newShallowColumnSql');
2
+ var newJoinedColumnSql = require('./columnSql/newJoinedColumnSql');
3
+
4
+ module.exports = function(table,span,alias,ignoreNull) {
5
+ var shallowColumnSql = newShallowColumnSql(table,alias, span, ignoreNull);
6
+ var joinedColumnSql = newJoinedColumnSql(span,alias, ignoreNull);
7
+ return shallowColumnSql + joinedColumnSql;
8
+ };
@@ -0,0 +1,33 @@
1
+ function newDiscriminatorSql(table, alias) {
2
+ var result = '';
3
+ var formulaDiscriminators = table._formulaDiscriminators;
4
+ var columnDiscriminators = table._columnDiscriminators;
5
+ addFormula();
6
+ addColumn();
7
+ return result;
8
+
9
+ function addFormula() {
10
+ for (var i = 0; i<formulaDiscriminators.length; i++) {
11
+ var current = formulaDiscriminators[i].replace('@this',alias);
12
+ and();
13
+ result += '(' + current + ')';
14
+ }
15
+ }
16
+
17
+ function addColumn() {
18
+ for (var i = 0; i< columnDiscriminators.length; i++) {
19
+ var current = columnDiscriminators[i];
20
+ and();
21
+ result += alias + '.' + current;
22
+ }
23
+ }
24
+
25
+ function and() {
26
+ if(result)
27
+ result += ' AND ';
28
+ else
29
+ result = ' ';
30
+ }
31
+ }
32
+
33
+ module.exports = newDiscriminatorSql;
@@ -0,0 +1,41 @@
1
+ var joinLegToJoinSql = require('./joinSql/joinLegToJoinSql');
2
+ var oneLegToJoinSql = require('./joinSql/oneLegToJoinSql');
3
+ var newParameterized = require('../newParameterized');
4
+
5
+ function _new(span,alias = '') {
6
+ var sql = newParameterized('');
7
+ var childAlias;
8
+
9
+ var c = {};
10
+ c.visitJoin = function(leg) {
11
+ sql = joinLegToJoinSql(leg,alias,childAlias).prepend(sql);
12
+ };
13
+
14
+ c.visitOne = function(leg) {
15
+ sql = oneLegToJoinSql(leg,alias,childAlias).prepend(sql);
16
+ };
17
+
18
+ c.visitMany = function() {};
19
+
20
+ function onEachLeg(leg) {
21
+ childAlias = alias + leg.name;
22
+ leg.accept(c);
23
+ }
24
+
25
+ span.legs.forEach(onEachLeg);
26
+
27
+ const set = new Set();
28
+ for(let key in span.aggregates) {
29
+ const agg = span.aggregates[key];
30
+ for(let join of agg.joins) {
31
+ if (!set.has(join)) {
32
+ sql = sql.append(join);
33
+ set.add(join);
34
+ }
35
+ }
36
+ }
37
+
38
+ return sql;
39
+ }
40
+
41
+ module.exports = _new;
@@ -0,0 +1,20 @@
1
+ function newQueryContext() {
2
+ var rows = [];
3
+
4
+ var c = {};
5
+ c.rows = rows;
6
+
7
+ c.expand = function(relation) {
8
+ rows.forEach(function(row) {
9
+ relation.expand(row);
10
+ });
11
+ };
12
+
13
+ c.add = function(row) {
14
+ rows.push(row);
15
+ };
16
+
17
+ return c;
18
+ }
19
+
20
+ module.exports = newQueryContext;
@@ -0,0 +1,19 @@
1
+ var newDiscriminatorSql = require('./newDiscriminatorSql');
2
+ var newParameterized = require('../../../table/query/newParameterized');
3
+
4
+ function newWhereSql(table,filter,alias) {
5
+ var separator = ' where';
6
+ var result = newParameterized('');
7
+ var sql = filter.sql();
8
+ var discriminator = newDiscriminatorSql(table, alias);
9
+ if (sql) {
10
+ result = filter.prepend(separator + ' ');
11
+ separator = ' AND';
12
+ }
13
+ if(discriminator)
14
+ result = result.append(separator + discriminator);
15
+
16
+ return result;
17
+ }
18
+
19
+ module.exports = newWhereSql;