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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +6 -1
  2. package/docs/changelog.md +4 -0
  3. package/package.json +10 -6
  4. package/src/applyPatch.js +5 -2
  5. package/src/client/index.js +3 -2
  6. package/src/client/index.mjs +13552 -6381
  7. package/src/client/rollup.config.js +24 -4
  8. package/src/client/stringify.js +2 -9
  9. package/src/createDomain.js +7 -28
  10. package/src/d1/newDatabase.js +23 -37
  11. package/src/d1/newPool.js +6 -6
  12. package/src/d1/newTransaction.js +1 -0
  13. package/src/d1/pool/newGenericPool.js +2 -14
  14. package/src/emitEvent.js +6 -4
  15. package/src/emptyFilter.js +12 -12
  16. package/src/format.js +9 -0
  17. package/src/generic-pool.js +274 -313
  18. package/src/getManyDto/newQuery.js +5 -5
  19. package/src/getManyDto/query/newSingleQuery.js +5 -5
  20. package/src/getManyDto.js +73 -41
  21. package/src/hostExpress/cycle.ts +211 -0
  22. package/src/hostExpress/executePath.js +361 -357
  23. package/src/hostExpress.js +2 -7
  24. package/src/hostLocal.js +9 -9
  25. package/src/index.js +13 -17
  26. package/src/indexBrowser.js +39 -0
  27. package/src/mssql/newDatabase.js +19 -31
  28. package/src/mssql/newPool.js +2 -2
  29. package/src/mssql/newTransaction.js +4 -3
  30. package/src/mssql/pool/newGenericPool.js +1 -13
  31. package/src/mySql/deleteFromSql.js +5 -5
  32. package/src/mySql/insert.js +5 -5
  33. package/src/mySql/insertSql.js +2 -3
  34. package/src/mySql/lastInsertedSql.js +3 -4
  35. package/src/mySql/newDatabase.js +20 -34
  36. package/src/mySql/newPool.js +10 -10
  37. package/src/mySql/newTransaction.js +2 -2
  38. package/src/mySql/pool/newGenericPool.js +2 -15
  39. package/src/mySql/quote.js +1 -0
  40. package/src/newId.js +2 -1
  41. package/src/newImmutable.js +1 -2
  42. package/src/oracle/deleteFromSql.js +5 -5
  43. package/src/oracle/formatDateOut.js +1 -1
  44. package/src/oracle/insert.js +6 -6
  45. package/src/oracle/insertSql.js +6 -14
  46. package/src/oracle/lastInsertedSql.js +3 -3
  47. package/src/oracle/mergeSql.js +3 -6
  48. package/src/oracle/newDatabase.js +18 -33
  49. package/src/oracle/newInsertCommandCore.js +5 -5
  50. package/src/oracle/newPool.js +10 -10
  51. package/src/oracle/newTransaction.js +2 -1
  52. package/src/oracle/pool/newGenericPool.js +2 -14
  53. package/src/oracle/quote.js +1 -0
  54. package/src/oracle/wrapQuery.js +0 -3
  55. package/src/package.json +5 -0
  56. package/src/patchRow.js +2 -2
  57. package/src/patchTable.js +6 -5
  58. package/src/pg/deleteFromSql.js +5 -5
  59. package/src/pg/formatDateOut.js +1 -2
  60. package/src/pg/insert.js +3 -3
  61. package/src/pg/insertSql.js +2 -7
  62. package/src/pg/lastInsertedSql.js +1 -2
  63. package/src/pg/newDatabase.js +20 -37
  64. package/src/pg/newPool.js +10 -10
  65. package/src/pg/newTransaction.js +2 -1
  66. package/src/pg/pool/newPgPool.js +23 -16
  67. package/src/pg/pool/parseSearchPathParam.js +10 -0
  68. package/src/pg/quote.js +2 -0
  69. package/src/pg/schema.js +2 -2
  70. package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
  71. package/src/promisify.js +24 -0
  72. package/src/query.js +2 -2
  73. package/src/sap/deleteFromSql.js +3 -3
  74. package/src/sap/formatDateOut.js +1 -1
  75. package/src/sap/insert.js +5 -5
  76. package/src/sap/insertSql.js +4 -5
  77. package/src/sap/lastInsertedSql.js +3 -3
  78. package/src/sap/mergeSql.js +1 -2
  79. package/src/sap/newDatabase.js +23 -34
  80. package/src/sap/newPool.js +2 -2
  81. package/src/sap/newTransaction.js +2 -1
  82. package/src/sap/quote.js +1 -0
  83. package/src/sqlite/deleteFromSql.js +5 -5
  84. package/src/sqlite/insert.js +5 -5
  85. package/src/sqlite/insertSql.js +2 -2
  86. package/src/sqlite/lastInsertedSql.js +2 -2
  87. package/src/sqlite/newDatabase.js +16 -32
  88. package/src/sqlite/newPool.js +10 -10
  89. package/src/sqlite/newTransaction.js +2 -1
  90. package/src/sqlite/pool/newGenericPool.js +1 -13
  91. package/src/sqlite/quote.js +1 -0
  92. package/src/table/aggregate.js +1 -1
  93. package/src/table/begin.js +5 -5
  94. package/src/table/cascadeDelete.js +2 -2
  95. package/src/table/column/binary/newDecode.js +2 -2
  96. package/src/table/column/binary/newEncode.js +3 -4
  97. package/src/table/column/boolean/newDecode.js +1 -1
  98. package/src/table/column/boolean/newEncode.js +6 -6
  99. package/src/table/column/date/formatOut.js +3 -5
  100. package/src/table/column/date/newDecode.js +2 -2
  101. package/src/table/column/date/newEncode.js +8 -8
  102. package/src/table/column/date/tryParseISO.js +6 -8
  103. package/src/table/column/date.js +1 -1
  104. package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
  105. package/src/table/column/dateWithTimeZone.js +1 -1
  106. package/src/table/column/encodeFilterArg.js +3 -3
  107. package/src/table/column/equal.js +3 -3
  108. package/src/table/column/extractAlias.js +0 -2
  109. package/src/table/column/greaterThan.js +3 -3
  110. package/src/table/column/greaterThanOrEqual.js +3 -3
  111. package/src/table/column/guid/newDecode.js +1 -1
  112. package/src/table/column/guid/newEncode.js +3 -3
  113. package/src/table/column/in.js +3 -3
  114. package/src/table/column/json/formatOut.js +3 -3
  115. package/src/table/column/json/newDecode.js +3 -3
  116. package/src/table/column/json/newEncode.js +6 -6
  117. package/src/table/column/json.js +2 -1
  118. package/src/table/column/lessThan.js +3 -3
  119. package/src/table/column/lessThanOrEqual.js +4 -4
  120. package/src/table/column/negotiateRawSqlFilter.js +1 -72
  121. package/src/table/column/newBoolean.js +2 -53
  122. package/src/table/column/newColumn.js +21 -21
  123. package/src/table/column/newDecodeCore.js +1 -1
  124. package/src/table/column/notEqual.js +3 -3
  125. package/src/table/column/numeric/newDecode.js +2 -2
  126. package/src/table/column/numeric/newEncode.js +3 -3
  127. package/src/table/column/string/contains.js +2 -1
  128. package/src/table/column/string/containsCore.js +5 -5
  129. package/src/table/column/string/endsWith.js +1 -1
  130. package/src/table/column/string/endsWithCore.js +4 -4
  131. package/src/table/column/string/iContains.js +2 -1
  132. package/src/table/column/string/iEndsWith.js +1 -1
  133. package/src/table/column/string/iEqual.js +3 -3
  134. package/src/table/column/string/iStartsWith.js +1 -1
  135. package/src/table/column/string/newEncode.js +3 -3
  136. package/src/table/column/string/startsWith.js +1 -1
  137. package/src/table/column/string/startsWithCore.js +4 -4
  138. package/src/table/column/string.js +14 -14
  139. package/src/table/column/utils.js +113 -0
  140. package/src/table/column.js +6 -2
  141. package/src/table/commands/beginCommand.js +2 -2
  142. package/src/table/commands/compressChanges.js +2 -2
  143. package/src/table/commands/delete/newSingleCommand.js +5 -5
  144. package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
  145. package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
  146. package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
  147. package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
  148. package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
  149. package/src/table/commands/getChangeSet.js +2 -2
  150. package/src/table/commands/insert/getSqlTemplate.js +16 -16
  151. package/src/table/commands/lastCommandMatches.js +2 -2
  152. package/src/table/commands/newDeleteCommand.js +5 -10
  153. package/src/table/commands/newGetLastInsertedCommand.js +4 -4
  154. package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
  155. package/src/table/commands/newInsertCommand.js +5 -3
  156. package/src/table/commands/newInsertCommandCore.js +12 -12
  157. package/src/table/commands/newRow.js +4 -4
  158. package/src/table/commands/newUpdateCommand.js +4 -4
  159. package/src/table/commands/newUpdateCommandCore.js +4 -4
  160. package/src/table/commands/pushCommand.js +2 -2
  161. package/src/table/commit.js +13 -11
  162. package/src/table/count.js +8 -8
  163. package/src/table/delete.js +4 -4
  164. package/src/table/deleteSessionContext.js +2 -14
  165. package/src/table/executeQueries/executeChanges.js +3 -3
  166. package/src/table/executeQueries/executeQueriesCore.js +2 -2
  167. package/src/table/executeQueries/executeQuery.js +2 -2
  168. package/src/table/executeQueries/resolveExecuteQuery.js +3 -10
  169. package/src/table/executeQueries.js +4 -4
  170. package/src/table/getFromDbById.js +1 -1
  171. package/src/table/getMany.js +7 -7
  172. package/src/table/getManyDto.js +3 -4
  173. package/src/table/getSessionContext.js +4 -4
  174. package/src/table/getSessionSingleton.js +3 -2
  175. package/src/table/groupBy/newQuery.js +4 -4
  176. package/src/table/groupBy.js +9 -9
  177. package/src/table/insert.js +10 -13
  178. package/src/table/joinRelation/getRelatives.js +6 -6
  179. package/src/table/newCascadeDeleteStrategy.js +1 -7
  180. package/src/table/newGetRelated.js +3 -3
  181. package/src/table/newManyRelation.js +9 -9
  182. package/src/table/newOneRelation.js +9 -9
  183. package/src/table/newPrimaryKeyFilter.js +6 -6
  184. package/src/table/newQuery.js +5 -5
  185. package/src/table/newRelatedTable.js +6 -12
  186. package/src/table/newRowCache.js +17 -17
  187. package/src/table/newThrow.js +2 -2
  188. package/src/table/oneRelation/getRelatives.js +5 -5
  189. package/src/table/popChanges.js +3 -3
  190. package/src/table/promise.js +2 -8
  191. package/src/table/query/extractLimit.js +2 -2
  192. package/src/table/query/extractOffset.js +2 -2
  193. package/src/table/query/extractOrderBy.js +2 -2
  194. package/src/table/query/newParameterized.js +8 -11
  195. package/src/table/query/newSingleQuery.js +7 -7
  196. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
  197. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
  198. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
  199. package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
  200. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -7
  201. package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
  202. package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
  203. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
  204. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
  205. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -8
  206. package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
  207. package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
  208. package/src/table/query/singleQuery/newColumnSql.js +3 -3
  209. package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
  210. package/src/table/query/singleQuery/newJoinSql.js +7 -7
  211. package/src/table/query/singleQuery/newWhereSql.js +3 -3
  212. package/src/table/quote.js +4 -4
  213. package/src/table/relatedTable/aggregate.js +2 -8
  214. package/src/table/relatedTable/all.js +6 -12
  215. package/src/table/relatedTable/any.js +4 -11
  216. package/src/table/relatedTable/childColumn.js +12 -12
  217. package/src/table/relatedTable/columnAggregate.js +3 -3
  218. package/src/table/relatedTable/columnAggregateGroup.js +11 -11
  219. package/src/table/relatedTable/joinSql.js +5 -5
  220. package/src/table/relatedTable/joinSqlArray.js +3 -3
  221. package/src/table/relatedTable/none.js +4 -10
  222. package/src/table/relatedTable/relatedColumn.js +13 -13
  223. package/src/table/relatedTable/selectSql.js +2 -2
  224. package/src/table/relatedTable/subFilter.js +4 -4
  225. package/src/table/relatedTable/where.js +3 -9
  226. package/src/table/relatedTable/whereSql.js +2 -2
  227. package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
  228. package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
  229. package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
  230. package/src/table/relation/newForeignKeyFilter.js +2 -2
  231. package/src/table/relation/newManyCache.js +25 -17
  232. package/src/table/relation/newOneCache.js +6 -6
  233. package/src/table/releaseDbClient.js +4 -4
  234. package/src/table/resultToPromise.js +1 -3
  235. package/src/table/resultToRows/dbRowToRow.js +6 -13
  236. package/src/table/resultToRows/dbRowsToRows.js +2 -2
  237. package/src/table/resultToRows/decodeDbRow.js +2 -2
  238. package/src/table/resultToRows/delete/removeFromCache.js +4 -11
  239. package/src/table/resultToRows/delete.js +6 -6
  240. package/src/table/resultToRows/newDecodeDbRow.js +19 -25
  241. package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
  242. package/src/table/resultToRows/toDto.js +3 -3
  243. package/src/table/resultToRows.js +3 -3
  244. package/src/table/rollback.js +21 -11
  245. package/src/table/rowArray/negotiateNextTick.js +1 -2
  246. package/src/table/setSessionSingleton.js +6 -3
  247. package/src/table/tryGetFirstFromDb.js +4 -4
  248. package/src/table/tryGetFromCacheById.js +3 -3
  249. package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
  250. package/src/table/tryGetFromDbById.js +8 -6
  251. package/src/table/tryGetSessionContext.js +3 -13
  252. package/src/table/tryReleaseDbClient.js +2 -2
  253. package/src/table/updateField.js +4 -4
  254. package/src/table/where.js +2 -2
  255. package/src/table.js +56 -53
  256. package/src/tedious/deleteFromSql.js +5 -5
  257. package/src/tedious/formatDateOut.js +1 -1
  258. package/src/tedious/getManyDto/newQueryCore.js +5 -5
  259. package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
  260. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +4 -5
  261. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +4 -5
  262. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
  263. package/src/tedious/getManyDto/query/newSubQueries.js +9 -26
  264. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
  265. package/src/tedious/getManyDto.js +6 -6
  266. package/src/tedious/insert.js +3 -3
  267. package/src/tedious/insertSql.js +3 -3
  268. package/src/tedious/newDatabase.js +17 -30
  269. package/src/tedious/newPool.js +10 -10
  270. package/src/tedious/newTransaction.js +3 -4
  271. package/src/tedious/pool/newGenericPool.js +1 -13
  272. package/src/tedious/quote.js +1 -0
  273. package/src/validateDeleteConflict.js +4 -2
  274. package/src/createDomain/negotiateForwardProperty.js +0 -23
  275. package/src/d1/pool/defaults.js +0 -45
  276. package/src/mssql/pool/defaults.js +0 -45
  277. package/src/oracle/pool/defaults.js +0 -45
  278. package/src/pg/pool/defaults.js +0 -45
  279. package/src/sqlite/pool/defaults.js +0 -45
  280. package/src/table/createJSONReadStream.js +0 -7
  281. package/src/table/createJSONReadStreamDefault.js +0 -33
  282. package/src/table/createJSONReadStreamNative.js +0 -31
  283. package/src/table/createReadStream.js +0 -24
  284. package/src/table/createReadStreamCoreNative.js +0 -40
  285. package/src/table/createReadStreamDefault.js +0 -102
  286. package/src/table/createReadStreamNative.js +0 -17
  287. package/src/table/readStream/extractLimit.js +0 -7
  288. package/src/table/readStream/extractOrderBy.js +0 -59
  289. package/src/table/readStream/mySql/newQuery.js +0 -16
  290. package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
  291. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
  292. package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
  293. package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
  294. package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
  295. package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
  296. package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
  297. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
  298. package/src/table/readStream/newQuery.js +0 -32
  299. package/src/table/readStream/newQueryStream.js +0 -8
  300. package/src/table/readStream/pg/newQuery.js +0 -8
  301. package/src/table/readStream/pg/newQueryCore.js +0 -17
  302. package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
  303. package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
  304. package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
  305. package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
  306. package/src/table/readStream/pg/query/newSubQueries.js +0 -47
  307. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
  308. package/src/table/readStreamDefault/createBatchFilter.js +0 -39
  309. package/src/tedious/pool/defaults.js +0 -45
  310. package/src/useHook.js +0 -9
@@ -1,5 +1,6 @@
1
1
  var getSessionContext = require('./getSessionContext');
2
2
 
3
- module.exports = function(name) {
4
- return getSessionContext()[name];
3
+ module.exports = function(context, name) {
4
+ const rdb = getSessionContext(context);
5
+ return rdb[name];
5
6
  };
@@ -4,13 +4,13 @@ var extractLimit = require('../query/extractLimit');
4
4
  var newParameterized = require('../query/newParameterized');
5
5
  var extractOffset = require('../query/extractOffset');
6
6
 
7
- function newQuery(table,filter,span,alias) {
7
+ function newQuery(context, table,filter,span,alias) {
8
8
  filter = extractFilter(filter);
9
9
  var orderBy = '';
10
- var limit = extractLimit(span);
11
- var offset = extractOffset(span);
10
+ var limit = extractLimit(context, span);
11
+ var offset = extractOffset(context, span);
12
12
 
13
- var query = newSingleQuery(table,filter,span,alias,orderBy,limit,offset);
13
+ var query = newSingleQuery(context, table,filter,span,alias,orderBy,limit,offset);
14
14
  const groupClause = groupBy(span);
15
15
  return newParameterized(query.sql(), query.parameters).append(groupClause);
16
16
  }
@@ -3,11 +3,11 @@ const negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
3
3
  const strategyToSpan = require('./strategyToSpan');
4
4
  const executeQueries = require('./executeQueries');
5
5
 
6
- async function groupBy(table, filter, strategy) {
7
- filter = negotiateRawSqlFilter(filter, table);
6
+ async function groupBy(context, table, filter, strategy) {
7
+ filter = negotiateRawSqlFilter(context, filter, table);
8
8
  if (strategy && strategy.where) {
9
9
  let arg = typeof strategy.where === 'function' ? strategy.where(table) : strategy.where;
10
- filter = filter.and(arg);
10
+ filter = filter.and(context, arg);
11
11
  }
12
12
 
13
13
  let span = strategyToSpan(table, strategy);
@@ -15,9 +15,9 @@ async function groupBy(table, filter, strategy) {
15
15
 
16
16
  let alias = table._dbName;
17
17
 
18
- const query = newQuery(table, filter, span, alias);
19
- const res = await executeQueries([query]);
20
- return decode(span, await res[0]);
18
+ const query = newQuery(context, table, filter, span, alias);
19
+ const res = await executeQueries(context, [query]);
20
+ return decode(context, span, await res[0]);
21
21
  }
22
22
 
23
23
  function newCreateRow(span) {
@@ -40,7 +40,7 @@ function createProto(span) {
40
40
  }
41
41
 
42
42
 
43
- async function decode(span, rows, keys = rows.length > 0 ? Object.keys(rows[0]) : []) {
43
+ async function decode(context, span, rows, keys = rows.length > 0 ? Object.keys(rows[0]) : []) {
44
44
  const rowsLength = rows.length;
45
45
  const aggregateKeys = Object.keys(span.aggregates);
46
46
 
@@ -52,8 +52,8 @@ async function decode(span, rows, keys = rows.length > 0 ? Object.keys(rows[0])
52
52
 
53
53
  for (let j = 0; j < aggregateKeys.length; j++) {
54
54
  const key = aggregateKeys[j];
55
- const parse = span.aggregates[key].column?.decode || Number.parseFloat;
56
- outRow[key] = parse(row[keys[j]]);
55
+ const parse = span.aggregates[key].column?.decode || ((_context, arg) => Number.parseFloat(arg));
56
+ outRow[key] = parse(context, row[keys[j]]);
57
57
  }
58
58
 
59
59
  outRows[i] = outRow;
@@ -1,21 +1,18 @@
1
1
  let getSessionContext = require('./getSessionContext');
2
2
  let newRow = require('./commands/newRow');
3
- let insertDefault = require('./insertDefault');
4
3
 
5
- function insert({ table, options }, arg) {
6
- // return insertDefault.apply(null, arguments);
4
+ function insert(context, { table, options }, arg) {
7
5
  if (Array.isArray(arg)) {
8
6
  let all = [];
9
7
  for (let i = 0; i < arg.length; i++) {
10
- all.push(insert(table, arg[i]));
8
+ all.push(insert(context, table, arg[i]));
11
9
  }
12
10
  return Promise.all(all);
13
11
  }
14
- let args = [table].slice.call(arguments);
15
- let row = newRow.apply(null, args);
12
+ let row = newRow.apply(null, [...arguments]);
16
13
  let hasPrimary = getHasPrimary(table, row);
17
14
  if (hasPrimary) {
18
- row = table._cache.tryAdd(row);
15
+ row = table._cache.tryAdd(context, row);
19
16
  }
20
17
  expand(table, row);
21
18
  Object.defineProperty(row, 'then', {
@@ -24,8 +21,8 @@ function insert({ table, options }, arg) {
24
21
  enumerable: false,
25
22
  configurable: true
26
23
  });
27
- const context = getSessionContext();
28
- const insertP = (context.insert || insertDefault)(table, row, options).then(onResult);
24
+ const rdb = getSessionContext(context);
25
+ const insertP = rdb.insert(context, table, row, options).then(onResult);
29
26
 
30
27
 
31
28
  // }
@@ -51,10 +48,10 @@ function insert({ table, options }, arg) {
51
48
  return row;
52
49
 
53
50
  function onResult([result]) {
54
- row.hydrate(result);
55
- if (!hasPrimary)
56
- row = table._cache.tryAdd(row);
57
- table._cache.tryAdd(row);
51
+ row.hydrate(context, result);
52
+ // if (!hasPrimary)
53
+ // row = table._cache.tryAdd(context, row);
54
+ row = table._cache.tryAdd(context, row);
58
55
  return row;
59
56
  }
60
57
  }
@@ -2,7 +2,7 @@ var newPrimaryKeyFilter = require('../newPrimaryKeyFilter');
2
2
  var emptyFilter = require('../../emptyFilter');
3
3
  var negotiateExpandInverse = require('../negotiateExpandInverse');
4
4
 
5
- function getRelatives(parent, relation) {
5
+ function getRelatives(context, parent, relation) {
6
6
  var queryContext = parent.queryContext;
7
7
  let strategy = queryContext && queryContext.strategy[relation.leftAlias];
8
8
  var filter = emptyFilter;
@@ -24,15 +24,15 @@ function getRelatives(parent, relation) {
24
24
  }
25
25
 
26
26
  if (ids.length > 0)
27
- filter = relation.childTable._primaryColumns[0].in(ids);
27
+ filter = relation.childTable._primaryColumns[0].in(context, ids);
28
28
  }
29
29
 
30
30
  function createCompositeFilter() {
31
31
  var keyFilter;
32
32
  for (var i = 0; i < queryContext.rows.length; i++) {
33
- keyFilter = rowToPrimaryKeyFilter(queryContext.rows[i], relation);
33
+ keyFilter = rowToPrimaryKeyFilter(context, queryContext.rows[i], relation);
34
34
  if (keyFilter)
35
- filter = filter.or(keyFilter);
35
+ filter = filter.or(context, keyFilter);
36
36
  }
37
37
  }
38
38
 
@@ -46,14 +46,14 @@ function getRelatives(parent, relation) {
46
46
 
47
47
  }
48
48
 
49
- function rowToPrimaryKeyFilter(row, relation) {
49
+ function rowToPrimaryKeyFilter(context, row, relation) {
50
50
  var key = relation.columns.map( function(column) {
51
51
  return row[column.alias];
52
52
  });
53
53
  if (key.some(isNullOrUndefined)) {
54
54
  return;
55
55
  }
56
- var args = [relation.childTable].concat(key);
56
+ var args = [context, relation.childTable].concat(key);
57
57
  return newPrimaryKeyFilter.apply(null, args);
58
58
  }
59
59
 
@@ -1,4 +1,3 @@
1
- var addSubStrategies = _addSubStrategies;
2
1
  var newObject = require('../newObject');
3
2
 
4
3
  function newCascadeDeleteStrategy(strategy, table) {
@@ -10,7 +9,7 @@ function newCascadeDeleteStrategy(strategy, table) {
10
9
  c.visitOne = function(relation) {
11
10
  var subStrategy = newObject();
12
11
  strategy[relationName] = subStrategy;
13
- addSubStrategies(subStrategy, relation.childTable);
12
+ newCascadeDeleteStrategy(subStrategy, relation.childTable);
14
13
  };
15
14
 
16
15
  c.visitMany = c.visitOne;
@@ -22,9 +21,4 @@ function newCascadeDeleteStrategy(strategy, table) {
22
21
  return strategy;
23
22
  }
24
23
 
25
- function _addSubStrategies(strategy, table) {
26
- addSubStrategies = require('./newCascadeDeleteStrategy');
27
- addSubStrategies(strategy, table);
28
- }
29
-
30
24
  module.exports = newCascadeDeleteStrategy;
@@ -1,10 +1,10 @@
1
- function newGetRelated(parent, relation) {
1
+ function newGetRelated(context, parent, relation) {
2
2
  function getRelated() {
3
3
  if (getRelated.expanded)
4
4
  return relation.getFromCache(parent);
5
5
  if (parent.queryContext)
6
- return relation.getRelatives(parent).then(onRelatives);
7
- return relation.getFromDb(parent).then(onFromDb);
6
+ return relation.getRelatives(context, parent).then(onRelatives);
7
+ return relation.getFromDb(context, parent).then(onFromDb);
8
8
 
9
9
  function onFromDb(rows) {
10
10
  getRelated.expanded = true;
@@ -23,17 +23,17 @@ function newManyRelation(joinRelation) {
23
23
  return fuzzyPromise(result);
24
24
  };
25
25
 
26
- c.getFromDb = function(parent) {
27
- var filter = newForeignKeyFilter(joinRelation, parent);
28
- return c.childTable.getMany(filter, null);
26
+ c.getFromDb = function(context, parent) {
27
+ var filter = newForeignKeyFilter(context, joinRelation, parent);
28
+ return c.childTable.getMany(context, filter, null);
29
29
  };
30
30
 
31
- c.getRelatives = function(parent) {
32
- return getRelatives(parent, c);
31
+ c.getRelatives = function(context, parent) {
32
+ return getRelatives(context, parent, c);
33
33
  };
34
34
 
35
- c.toGetRelated = function(parent) {
36
- return newGetRelated(parent, c);
35
+ c.toGetRelated = function(context, parent) {
36
+ return newGetRelated(context, parent, c);
37
37
  };
38
38
 
39
39
  c.expand = function(parent) {
@@ -51,8 +51,8 @@ function newManyRelation(joinRelation) {
51
51
  return newLeg(c);
52
52
  };
53
53
 
54
- c.getInnerCache = function() {
55
- return manyCache.getInnerCache();
54
+ c.getInnerCache = function(context) {
55
+ return manyCache.getInnerCache(context);
56
56
  };
57
57
 
58
58
  return c;
@@ -23,17 +23,17 @@ function newOneRelation(joinRelation) {
23
23
  return fuzzyPromise(row);
24
24
  };
25
25
 
26
- c.getFromDb = function(parent) {
27
- var filter = newForeignKeyFilter(joinRelation, parent);
28
- return c.childTable.tryGetFirst(filter, null);
26
+ c.getFromDb = function(context, parent) {
27
+ var filter = newForeignKeyFilter(context, joinRelation, parent);
28
+ return c.childTable.tryGetFirst(context, filter, null);
29
29
  };
30
30
 
31
- c.getRelatives = function(parent) {
32
- return getRelatives(parent, c);
31
+ c.getRelatives = function(context, parent) {
32
+ return getRelatives(context, parent, c);
33
33
  };
34
34
 
35
- c.toGetRelated = function(parent) {
36
- return newGetRelated(parent, c);
35
+ c.toGetRelated = function(context, parent) {
36
+ return newGetRelated(context, parent, c);
37
37
  };
38
38
 
39
39
  c.expand = function(parent) {
@@ -51,8 +51,8 @@ function newOneRelation(joinRelation) {
51
51
  return newLeg(c);
52
52
  };
53
53
 
54
- c.getInnerCache = function() {
55
- return oneCache.getInnerCache();
54
+ c.getInnerCache = function(context) {
55
+ return oneCache.getInnerCache(context);
56
56
  };
57
57
 
58
58
  return c;
@@ -1,11 +1,11 @@
1
- function primaryKeyFilter(table) {
1
+ function primaryKeyFilter(context, table) {
2
2
  var primaryColumns = table._primaryColumns;
3
- var key = arguments[1];
4
- var filter = primaryColumns[0].equal(key);
5
- for (var i = 1; i < primaryColumns.length; i++) {
3
+ var key = arguments[2];
4
+ var filter = primaryColumns[0].equal(context, key);
5
+ for (var i = 2; i < primaryColumns.length; i++) {
6
6
  key = arguments[i+1];
7
- var colFilter = primaryColumns[i].equal(key);
8
- filter = filter.and(colFilter);
7
+ var colFilter = primaryColumns[i].equal(context, key);
8
+ filter = filter.and(context, colFilter);
9
9
  }
10
10
  return filter;
11
11
  }
@@ -4,12 +4,12 @@ var extractOrderBy = require('./query/extractOrderBy');
4
4
  var extractLimit = require('./query/extractLimit');
5
5
  var extractOffset = require('./query/extractOffset');
6
6
 
7
- function newQuery(queries,table,filter,span,alias,innerJoin,orderBy,exclusive) {
7
+ function newQuery(context, queries,table,filter,span,alias,innerJoin,orderBy,exclusive) {
8
8
  filter = extractFilter(filter);
9
- orderBy = extractOrderBy(table,alias,span.orderBy,orderBy);
10
- var limit = extractLimit(span);
11
- var offset = extractOffset(span);
12
- var singleQuery = newSingleQuery(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive);
9
+ orderBy = extractOrderBy(context, table,alias,span.orderBy,orderBy);
10
+ var limit = extractLimit(context, span);
11
+ var offset = extractOffset(context, span);
12
+ var singleQuery = newSingleQuery(context, table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive);
13
13
  queries.push(singleQuery);
14
14
 
15
15
  return queries;
@@ -1,5 +1,4 @@
1
1
  var newRelatedColumn = require('./relatedTable/relatedColumn');
2
- var nextRelatedTable = _nextRelatedTable;
3
2
  var subFilter = require('./relatedTable/subFilter');
4
3
  var any = require('./relatedTable/any');
5
4
  var all = require('./relatedTable/all');
@@ -15,14 +14,14 @@ function newRelatedTable(relations, isShallow, depth = 0) {
15
14
  // if (isShallow)
16
15
  // c = any(relations.slice(-1), depth);
17
16
  // else
18
- c = any(relations, depth);
17
+ c = any(newRelatedTable, relations, depth);
19
18
  // @ts-ignore
20
- c.all = all(relations, depth);
19
+ c.all = all(newRelatedTable, relations, depth);
21
20
  // @ts-ignore
22
21
  c.any = c;
23
22
 
24
23
  // @ts-ignore
25
- c.none = none(relations, depth);
24
+ c.none = none(newRelatedTable, relations, depth);
26
25
 
27
26
  // @ts-ignore
28
27
  c.where = where(relations, depth);
@@ -58,17 +57,17 @@ function newRelatedTable(relations, isShallow, depth = 0) {
58
57
 
59
58
  Object.defineProperty(c, alias, {
60
59
  get: function() {
61
- return nextRelatedTable(children, false, depth);
60
+ return newRelatedTable(children, false, depth);
62
61
  }
63
62
  });
64
63
  }
65
64
 
66
65
 
67
66
  // @ts-ignore
68
- c.exists = function() {
67
+ c.exists = function(context) {
69
68
  if (isShallow)
70
69
  return '';
71
- return subFilter(relations, false, depth);
70
+ return subFilter(context, relations, false, depth);
72
71
  };
73
72
 
74
73
  let cProxy = new Proxy(c, {
@@ -91,9 +90,4 @@ function newRelatedTable(relations, isShallow, depth = 0) {
91
90
  return cProxy;
92
91
  }
93
92
 
94
- function _nextRelatedTable(relations, isShallow, depth) {
95
- nextRelatedTable = require('./newRelatedTable');
96
- return nextRelatedTable(relations, isShallow, depth);
97
- }
98
-
99
93
  module.exports = newRelatedTable;
@@ -6,43 +6,43 @@ function newRowCache(table) {
6
6
  let id = Symbol();
7
7
  let c = {};
8
8
 
9
- c.tryGet = function(row) {
10
- return getCache(table, id).tryGet(row);
9
+ c.tryGet = function(context, row) {
10
+ return getCache(context, table, id).tryGet(row);
11
11
  };
12
12
 
13
- c.tryAdd = function(row) {
14
- return getCache(table, id).tryAdd(row);
13
+ c.tryAdd = function(context, row) {
14
+ return getCache(context, table, id).tryAdd(row);
15
15
  };
16
16
 
17
- c.tryRemove = function(row) {
18
- return getCache(table, id).tryRemove(row);
17
+ c.tryRemove = function(context, row) {
18
+ return getCache(context, table, id).tryRemove(row);
19
19
  };
20
20
 
21
- c.subscribeAdded = function() {
22
- return getCache(table, id).subscribeAdded.apply(null, arguments);
21
+ c.subscribeAdded = function(context, ...rest) {
22
+ return getCache(context, table, id).subscribeAdded.apply(null, rest);
23
23
  };
24
24
 
25
- c.subscribeRemoved = function() {
26
- return getCache(table, id).subscribeRemoved.apply(null, arguments);
25
+ c.subscribeRemoved = function(context, ...rest) {
26
+ return getCache(context, table, id).subscribeRemoved.apply(null, rest);
27
27
  };
28
28
 
29
- c.getAll = function() {
30
- return getCache(table, id).getAll.apply(null, arguments);
29
+ c.getAll = function(context) {
30
+ return getCache(context, table, id).getAll.apply(null, arguments);
31
31
  };
32
32
 
33
- c.getInnerCache = function() {
34
- return getCache(table, id);
33
+ c.getInnerCache = function(context) {
34
+ return getCache(context, table, id);
35
35
  };
36
36
  return c;
37
37
  }
38
38
 
39
39
 
40
- function getCache(table, id) {
41
- let cache = getSessionSingleton(id);
40
+ function getCache(context, table, id) {
41
+ let cache = getSessionSingleton(context, id);
42
42
  if (cache)
43
43
  return cache;
44
44
  cache = _newRowCache(table);
45
- setSessionSingleton(id, cache);
45
+ setSessionSingleton(context, id, cache);
46
46
  return cache;
47
47
  }
48
48
 
@@ -1,9 +1,9 @@
1
1
  var tryReleaseDbClient = require('./tryReleaseDbClient');
2
2
 
3
- function newThrow(e, previousPromise) {
3
+ function newThrow(context, e, previousPromise) {
4
4
  return previousPromise.then(throwError, throwError);
5
5
  function throwError() {
6
- tryReleaseDbClient();
6
+ tryReleaseDbClient(context);
7
7
  throw e;
8
8
  }
9
9
  }
@@ -2,7 +2,7 @@ let emptyFilter = require('../../emptyFilter');
2
2
  let newForeignKeyFilter = require('../relation/newForeignKeyFilter');
3
3
  let negotiateExpandInverse = require('../negotiateExpandInverse');
4
4
 
5
- function getRelatives(parent, relation) {
5
+ function getRelatives(context, parent, relation) {
6
6
  let queryContext = parent.queryContext;
7
7
  let strategy = queryContext && queryContext.strategy[relation.joinRelation.rightAlias];
8
8
 
@@ -22,17 +22,17 @@ function getRelatives(parent, relation) {
22
22
  return row[parentAlias];
23
23
  });
24
24
  let column = relation.joinRelation.columns[0];
25
- return column.in(ids);
25
+ return column.in(context, ids);
26
26
  }
27
27
 
28
28
  function createCompositeFilter() {
29
29
  let filters = queryContext.rows.map(function(row) {
30
- return newForeignKeyFilter(relation.joinRelation, row);
30
+ return newForeignKeyFilter(context, relation.joinRelation, row);
31
31
  });
32
- return emptyFilter.or.apply(emptyFilter, filters);
32
+ return emptyFilter.or.apply(emptyFilter, [context, ...filters]);
33
33
  }
34
34
 
35
- return relation.childTable.getMany(filter, strategy).then(onRows);
35
+ return relation.childTable.getMany(context, filter, strategy).then(onRows);
36
36
 
37
37
  function onRows(rows) {
38
38
  queryContext.expand(relation);
@@ -1,14 +1,14 @@
1
1
  var getChangeSet = require('./commands/getChangeSet');
2
2
  var compressChanges = require('./commands/compressChanges');
3
3
 
4
- function popChanges() {
5
- var changeSet = getChangeSet();
4
+ function popChanges(context) {
5
+ var changeSet = getChangeSet(context);
6
6
  var length = changeSet.length;
7
7
  if (length > 0) {
8
8
  var lastCmd = changeSet[length-1];
9
9
  if (lastCmd.endEdit)
10
10
  lastCmd.endEdit();
11
- var compressed = compressChanges(changeSet);
11
+ var compressed = compressChanges(context, changeSet);
12
12
  changeSet.length = 0;
13
13
  return compressed;
14
14
  }
@@ -1,14 +1,8 @@
1
- var promise = require('promise/domains');
2
- var deferred = require('deferred');
3
- let promisify = require('util').promisify;
4
-
5
-
6
1
  function newPromise(func) {
7
2
  if (!func)
8
- return deferred.resolve.apply(deferred, arguments);
9
- return new promise(func);
3
+ return Promise.resolve.apply(Promise, arguments);
4
+ return new Promise(func);
10
5
  }
11
6
 
12
7
  newPromise.all = Promise.all;
13
- newPromise.denodeify = promisify || promise.denodeify;
14
8
  module.exports = newPromise;
@@ -1,7 +1,7 @@
1
1
  var getSessionContext = require('../getSessionContext');
2
2
 
3
- function extractLimit(span) {
4
- let limit = getSessionContext().limit;
3
+ function extractLimit(context, span) {
4
+ let limit = getSessionContext(context).limit;
5
5
  if (limit)
6
6
  return limit(span);
7
7
  else
@@ -1,7 +1,7 @@
1
1
  var getSessionContext = require('../getSessionContext');
2
2
 
3
- function extractOffset(span) {
4
- let {limitAndOffset} = getSessionContext();
3
+ function extractOffset(context, span) {
4
+ let {limitAndOffset} = getSessionContext(context);
5
5
  if (limitAndOffset)
6
6
  return limitAndOffset(span);
7
7
  else
@@ -1,7 +1,7 @@
1
1
  const getSessionSingleton = require('../getSessionSingleton');
2
2
 
3
- function extractOrderBy(table, alias, orderBy, originalOrderBy) {
4
- const quote = getSessionSingleton('quote');
3
+ function extractOrderBy(context, table, alias, orderBy, originalOrderBy) {
4
+ const quote = getSessionSingleton(context, 'quote');
5
5
  alias = quote(alias);
6
6
  var dbNames = [];
7
7
  var i;
@@ -1,11 +1,6 @@
1
1
  var extractSql = require('./extractSql');
2
2
  var extractParameters = require('./parameterized/extractParameters');
3
3
 
4
- var nextParameterized = function(text, params) {
5
- nextParameterized = require('../query/newParameterized');
6
- return nextParameterized(text, params);
7
- };
8
-
9
4
  function Parameterized(text, parameters) {
10
5
  this._text = text;
11
6
  this.parameters = parameters;
@@ -18,21 +13,23 @@ Parameterized.prototype.sql = function() {
18
13
  Parameterized.prototype.prepend = function(other) {
19
14
  if (other.sql) {
20
15
  var params = other.parameters.concat(this.parameters);
21
- return nextParameterized(other.sql() + this._text, params);
16
+ return newParameterized(other.sql() + this._text, params);
22
17
  } else
23
- return nextParameterized(other + this._text, this.parameters);
18
+ return newParameterized(other + this._text, this.parameters);
24
19
  };
25
20
 
26
21
  Parameterized.prototype.append = function(other) {
27
22
  if (other.sql) {
28
23
  var params = this.parameters.concat(other.parameters);
29
- return nextParameterized(this._text + other.sql(), params);
24
+ return newParameterized(this._text + other.sql(), params);
30
25
  } else
31
- return nextParameterized(this._text + other, this.parameters);
26
+ return newParameterized(this._text + other, this.parameters);
32
27
  };
33
28
 
34
- module.exports = function(text, parameters) {
29
+ function newParameterized(text, parameters) {
35
30
  text = extractSql(text);
36
31
  parameters = extractParameters(parameters);
37
32
  return new Parameterized(text, parameters);
38
- };
33
+ }
34
+
35
+ module.exports = newParameterized;
@@ -6,15 +6,15 @@ var negotiateExclusive = require('./singleQuery/negotiateExclusive');
6
6
  var newParameterized = require('../../table/query/newParameterized');
7
7
  var quote = require('../quote');
8
8
 
9
- function _new(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive) {
9
+ function _new(context, table, filter, span, alias, innerJoin, orderBy, limit, offset, exclusive) {
10
10
 
11
- var name = quote(table._dbName);
12
- var columnSql = newColumnSql(table,span,alias);
13
- var joinSql = newJoinSql(span,alias);
14
- var whereSql = newWhereSql(table,filter,alias);
11
+ var name = quote(context, table._dbName);
12
+ var columnSql = newColumnSql(context, table, span, alias);
13
+ var joinSql = newJoinSql(context, span, alias);
14
+ var whereSql = newWhereSql(context, table, filter, alias);
15
15
  var safeLimit = negotiateLimit(limit);
16
- var exclusiveClause = negotiateExclusive(table,alias,exclusive);
17
- return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + quote(alias))
16
+ var exclusiveClause = negotiateExclusive(table, alias, exclusive);
17
+ return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + quote(context, alias))
18
18
  .append(innerJoin)
19
19
  .append(joinSql)
20
20
  .append(whereSql)
@@ -1,16 +1,3 @@
1
- var newShallowColumnSql = require('./newShallowColumnSql');
2
- var newJoinedColumnSql = _initJoinedColumnSql;
1
+ const { joinLegToColumnSql} = require('./sharedJoinUtils');
3
2
 
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;
3
+ module.exports = joinLegToColumnSql;