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,54 +1,3 @@
1
- var nextNewBoolean = _nextNewBoolean;
2
- var negotiateRawSqlFilter = require('./negotiateRawSqlFilter');
3
- var negotiateNextAndFilter = require('./negotiateNextAndFilter');
4
- var negotiateNextOrFilter = require('./negotiateNextOrFilter');
1
+ const { newBoolean } = require('./utils');
5
2
 
6
- function newBoolean(filter) {
7
- var c = {};
8
- c.sql = filter.sql.bind(filter);
9
- c.parameters = filter.parameters;
10
-
11
- c.append = function(other) {
12
- var nextFilter = filter.append(other);
13
- return nextNewBoolean(nextFilter);
14
- };
15
-
16
- c.prepend = function(other) {
17
- var nextFilter = filter.prepend(other);
18
- return nextNewBoolean(nextFilter);
19
- };
20
-
21
- c.and = function(other) {
22
- other = negotiateRawSqlFilter(other);
23
- var nextFilter = negotiateNextAndFilter(filter, other);
24
- var next = nextNewBoolean(nextFilter);
25
- for (var i = 1; i < arguments.length; i++) {
26
- next = next.and(arguments[i]);
27
- }
28
- return next;
29
- };
30
-
31
- c.or = function(other) {
32
- other = negotiateRawSqlFilter(other);
33
- var nextFilter = negotiateNextOrFilter(filter, other);
34
- var next = nextNewBoolean(nextFilter);
35
- for (var i = 1; i < arguments.length; i++) {
36
- next = next.or(arguments[i]);
37
- }
38
- return next;
39
- };
40
-
41
- c.not = function() {
42
- var nextFilter = filter.prepend('NOT (').append(')');
43
- return nextNewBoolean(nextFilter);
44
- };
45
-
46
- return c;
47
- }
48
-
49
- function _nextNewBoolean(filter) {
50
- nextNewBoolean = require('./newBoolean');
51
- return nextNewBoolean(filter);
52
- }
53
-
54
- module.exports = newBoolean;
3
+ module.exports = newBoolean;
@@ -19,46 +19,46 @@ module.exports = function(table, name) {
19
19
  table._columns.push(c);
20
20
  table[name] = c;
21
21
 
22
- c.equal = function(arg, alias) {
22
+ c.equal = function(context, arg, alias) {
23
23
  alias = extractAlias(alias);
24
- return equal(c, arg, alias);
24
+ return equal(context, c, arg, alias);
25
25
  };
26
26
 
27
- c.notEqual = function(arg, alias) {
27
+ c.notEqual = function(context, arg, alias) {
28
28
  alias = extractAlias(alias);
29
- return notEqual(c, arg, alias);
29
+ return notEqual(context, c, arg, alias);
30
30
  };
31
31
 
32
- c.lessThan = function(arg, alias) {
32
+ c.lessThan = function(context, arg, alias) {
33
33
  alias = extractAlias(alias);
34
- return lessThan(c, arg, alias);
34
+ return lessThan(context, c, arg, alias);
35
35
  };
36
36
 
37
- c.lessThanOrEqual = function(arg, alias) {
37
+ c.lessThanOrEqual = function(context, arg, alias) {
38
38
  alias = extractAlias(alias);
39
- return lessThanOrEqual(c, arg, alias);
39
+ return lessThanOrEqual(context, c, arg, alias);
40
40
  };
41
41
 
42
- c.greaterThan = function(arg, alias) {
42
+ c.greaterThan = function(context, arg, alias) {
43
43
  alias = extractAlias(alias);
44
- return greaterThan(c, arg, alias);
44
+ return greaterThan(context, c, arg, alias);
45
45
  };
46
46
 
47
- c.greaterThanOrEqual = function(arg, alias) {
47
+ c.greaterThanOrEqual = function(context, arg, alias) {
48
48
  alias = extractAlias(alias);
49
- return greaterThanOrEqual(c, arg, alias);
49
+ return greaterThanOrEqual(context, c, arg, alias);
50
50
  };
51
51
 
52
- c.between = function(from, to, alias) {
52
+ c.between = function(context, from, to, alias) {
53
53
  alias = extractAlias(alias);
54
- from = c.greaterThanOrEqual(from, alias);
55
- to = c.lessThanOrEqual(to, alias);
54
+ from = c.greaterThanOrEqual(context, from, alias);
55
+ to = c.lessThanOrEqual(context, to, alias);
56
56
  return from.and(to);
57
57
  };
58
58
 
59
- c.in = function(arg, alias) {
59
+ c.in = function(context, arg, alias) {
60
60
  alias = extractAlias(alias);
61
- return _in(c, arg, alias);
61
+ return _in(context, c, arg, alias);
62
62
  };
63
63
 
64
64
  c.eq = c.equal;
@@ -76,12 +76,12 @@ module.exports = function(table, name) {
76
76
  c.IN = c.in;
77
77
  c.self = self;
78
78
 
79
- function self() {
80
- const tableAlias = quote(table._rootAlias || table._dbName);
81
- const columnName = quote(c._dbName);
79
+ function self(context) {
80
+ const tableAlias = quote(context,table._rootAlias || table._dbName);
81
+ const columnName = quote(context, c._dbName);
82
82
 
83
83
  return {
84
- expression: (alias) => `${tableAlias}.${columnName} ${quote(alias)}`,
84
+ expression: (alias) => `${tableAlias}.${columnName} ${quote(context, alias)}`,
85
85
  joins: [''],
86
86
  column: c,
87
87
  groupBy: `${tableAlias}.${columnName}`
@@ -1,6 +1,6 @@
1
1
  function _new(column) {
2
2
 
3
- return function(value) {
3
+ return function(_context, value) {
4
4
  if (value == column.dbNull)
5
5
  return null;
6
6
  return value;
@@ -3,12 +3,12 @@ var encodeFilterArg = require('./encodeFilterArg');
3
3
  var nullOperator = ' is not ';
4
4
  var quote = require('../quote');
5
5
 
6
- function notEqual(column,arg,alias) {
6
+ function notEqual(context, column,arg,alias) {
7
7
  var operator = '<>';
8
- var encoded = encodeFilterArg(column, arg);
8
+ var encoded = encodeFilterArg(context, column, arg);
9
9
  if (encoded.sql() == 'null')
10
10
  operator = nullOperator;
11
- var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
11
+ var firstPart = quote(context, alias) + '.' + quote(context, column._dbName) + operator;
12
12
  var filter = encoded.prepend(firstPart);
13
13
  return newBoolean(filter);
14
14
  }
@@ -3,8 +3,8 @@ var newDecodeCore = require('../newDecodeCore');
3
3
  function _new(column) {
4
4
  var decodeCore = newDecodeCore(column);
5
5
 
6
- return function(value) {
7
- value = decodeCore(value);
6
+ return function(context, value) {
7
+ value = decodeCore(context, value);
8
8
  if (value === null)
9
9
  return value;
10
10
  if (typeof(value) !== 'number')
@@ -3,7 +3,7 @@ var newParam = require('../../query/newParameterized');
3
3
 
4
4
  module.exports = function(column) {
5
5
 
6
- function encode(value) {
6
+ function encode(_context, value) {
7
7
  value = purify(value);
8
8
  if (value == null) {
9
9
  var dbNull = column.dbNull;
@@ -12,7 +12,7 @@ module.exports = function(column) {
12
12
  return newParam('' + value);
13
13
  }
14
14
 
15
- encode.unsafe = function(value) {
15
+ encode.unsafe = function(_context, value) {
16
16
  value = purify(value);
17
17
  if (value == null) {
18
18
  var dbNull = column.dbNull;
@@ -21,7 +21,7 @@ module.exports = function(column) {
21
21
  return '' + value;
22
22
  };
23
23
 
24
- encode.direct = function(value) {
24
+ encode.direct = function(_context, value) {
25
25
  return value ;
26
26
  };
27
27
 
@@ -1,3 +1,4 @@
1
1
  var containsCore = require('./containsCore');
2
2
 
3
- module.exports = containsCore.bind(null, 'LIKE');
3
+ module.exports = (context, ...rest) => containsCore.apply(null, [context, 'LIKE', ...rest]);
4
+
@@ -2,15 +2,15 @@ const quote = require('../../quote');
2
2
  var newBoolean = require('../newBoolean');
3
3
  var nullOperator = ' is ';
4
4
 
5
- function endsWithCore(operator, column,arg,alias) {
6
- alias = quote(alias);
5
+ function endsWithCore(context, operator, column,arg,alias) {
6
+ alias = quote(context, alias);
7
7
  operator = ' ' + operator + ' ';
8
- var encoded = column.encode(arg);
8
+ var encoded = column.encode(context, arg);
9
9
  if (encoded.sql() == 'null')
10
10
  operator = nullOperator;
11
11
  else
12
- encoded = column.encode('%' + arg + '%');
13
- var firstPart = alias + '.' + quote(column._dbName) + operator;
12
+ encoded = column.encode(context, '%' + arg + '%');
13
+ var firstPart = alias + '.' + quote(context, column._dbName) + operator;
14
14
  var filter = encoded.prepend(firstPart);
15
15
  return newBoolean(filter);
16
16
  }
@@ -1,3 +1,3 @@
1
1
  var endsWithCore = require('./endsWithCore');
2
2
 
3
- module.exports = endsWithCore.bind(null, 'LIKE');
3
+ module.exports = (context, ...rest) => endsWithCore.apply(null, [context, 'LIKE', ...rest]);
@@ -2,15 +2,15 @@ const quote = require('../../quote');
2
2
  var newBoolean = require('../newBoolean');
3
3
  var nullOperator = ' is ';
4
4
 
5
- function endsWithCore(operator, column,arg,alias) {
5
+ function endsWithCore(context, operator, column,arg,alias) {
6
6
  alias = quote(alias);
7
7
  operator = ' ' + operator + ' ';
8
- var encoded = column.encode(arg);
8
+ var encoded = column.encode(context, arg);
9
9
  if (encoded.sql() == 'null')
10
10
  operator = nullOperator;
11
11
  else
12
- encoded = column.encode('%' + arg);
13
- var firstPart = alias + '.' + quote(column._dbName) + operator;
12
+ encoded = column.encode(context, '%' + arg);
13
+ var firstPart = alias + '.' + quote(context, column._dbName) + operator;
14
14
  var filter = encoded.prepend(firstPart);
15
15
  return newBoolean(filter);
16
16
  }
@@ -1,3 +1,4 @@
1
1
  var containsCore = require('./containsCore');
2
2
 
3
- module.exports = containsCore.bind(null, 'ILIKE');
3
+ module.exports = (context, ...rest) => containsCore.apply(null, [context, 'ILIKE', ...rest]);
4
+
@@ -1,3 +1,3 @@
1
1
  var endsWithCore = require('./endsWithCore');
2
2
 
3
- module.exports = endsWithCore.bind(null, 'ILIKE');
3
+ module.exports = (context, ...rest) => endsWithCore.apply(null, [context, 'ILIKE', ...rest]);
@@ -3,12 +3,12 @@ var nullOperator = ' is ';
3
3
  var encodeFilterArg = require('../encodeFilterArg');
4
4
  const quote = require('../../quote');
5
5
 
6
- function iEqual(column,arg,alias) {
6
+ function iEqual(context, column,arg,alias) {
7
7
  var operator = ' ILIKE ';
8
- var encoded = encodeFilterArg(column, arg);
8
+ var encoded = encodeFilterArg(context, column, arg);
9
9
  if (encoded.sql() == 'null')
10
10
  operator = nullOperator;
11
- var firstPart = alias + '.' + quote(column._dbName) + operator;
11
+ var firstPart = alias + '.' + quote(context, column._dbName) + operator;
12
12
  var filter = encoded.prepend(firstPart);
13
13
  return newBoolean(filter);
14
14
  }
@@ -1,3 +1,3 @@
1
1
  var startsWithCore = require('./startsWithCore');
2
2
 
3
- module.exports = startsWithCore.bind(null, 'ILIKE');
3
+ module.exports = (context, ...rest) => startsWithCore.apply(null, [context, 'ILIKE', ...rest]);
@@ -3,7 +3,7 @@ var purify = require('./purify');
3
3
 
4
4
  function _new(column) {
5
5
 
6
- var encode = function(value) {
6
+ var encode = function(_context, value) {
7
7
  value = purify(value);
8
8
  if (value == null) {
9
9
  if (column.dbNull === null)
@@ -13,7 +13,7 @@ function _new(column) {
13
13
  return newPara('?', [value]);
14
14
  };
15
15
 
16
- encode.unsafe = function(value) {
16
+ encode.unsafe = function(_context, value) {
17
17
  value = purify(value);
18
18
  if (value == null) {
19
19
  if (column.dbNull === null)
@@ -23,7 +23,7 @@ function _new(column) {
23
23
  return '\'' + value + '\'';
24
24
  };
25
25
 
26
- encode.direct = function(value) {
26
+ encode.direct = function(_context, value) {
27
27
  return value ;
28
28
  };
29
29
 
@@ -1,3 +1,3 @@
1
1
  var startsWithCore = require('./startsWithCore');
2
2
 
3
- module.exports = startsWithCore.bind(null, 'LIKE');
3
+ module.exports = (context, ...rest) => startsWithCore.apply(null, [context, 'LIKE', ...rest]);
@@ -2,14 +2,14 @@ var newBoolean = require('../newBoolean');
2
2
  var nullOperator = ' is ';
3
3
  var quote = require('../../quote');
4
4
 
5
- function startsWithCore(operator, column,arg,alias) {
5
+ function startsWithCore(context, operator, column,arg,alias) {
6
6
  operator = ' ' + operator + ' ';
7
- var encoded = column.encode(arg);
7
+ var encoded = column.encode(context, arg);
8
8
  if (encoded.sql() == 'null')
9
9
  operator = nullOperator;
10
10
  else
11
- encoded = column.encode(arg + '%');
12
- var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
11
+ encoded = column.encode(context, arg + '%');
12
+ var firstPart = quote(context, alias) + '.' + quote(context, column._dbName) + operator;
13
13
  var filter = encoded.prepend(firstPart);
14
14
  return newBoolean(filter);
15
15
  }
@@ -17,34 +17,34 @@ function _new(table, column) {
17
17
  column.decode = newDecode(column);
18
18
  var extractAlias = _extractAlias.bind(null, table);
19
19
 
20
- column.startsWith = function(arg, alias) {
20
+ column.startsWith = function(context, arg, alias) {
21
21
  alias = extractAlias(alias);
22
- return startsWith(column, arg, alias);
22
+ return startsWith(context, column, arg, alias);
23
23
  };
24
- column.endsWith = function(arg, alias) {
24
+ column.endsWith = function(context, arg, alias) {
25
25
  alias = extractAlias(alias);
26
- return endsWith(column, arg, alias);
26
+ return endsWith(context, column, arg, alias);
27
27
  };
28
- column.contains = function(arg, alias) {
28
+ column.contains = function(context, arg, alias) {
29
29
  alias = extractAlias(alias);
30
- return contains(column, arg, alias);
30
+ return contains(context, column, arg, alias);
31
31
  };
32
- column.iStartsWith = function(arg, alias) {
32
+ column.iStartsWith = function(context, arg, alias) {
33
33
  alias = extractAlias(alias);
34
- return iStartsWith(column, arg, alias);
34
+ return iStartsWith(context, column, arg, alias);
35
35
  };
36
- column.iEndsWith = function(arg, alias) {
36
+ column.iEndsWith = function(context, arg, alias) {
37
37
  alias = extractAlias(alias);
38
- return iEndsWith(column, arg, alias);
38
+ return iEndsWith(context, column, arg, alias);
39
39
  };
40
- column.iContains = function(arg, alias) {
40
+ column.iContains = function(context, arg, alias) {
41
41
  alias = extractAlias(alias);
42
- return iContains(column, arg, alias);
42
+ return iContains(context, column, arg, alias);
43
43
  };
44
44
 
45
- column.iEqual = function(arg, alias) {
45
+ column.iEqual = function(context, arg, alias) {
46
46
  alias = extractAlias(alias);
47
- return iEqual(column, arg, alias);
47
+ return iEqual(context, column, arg, alias);
48
48
  };
49
49
 
50
50
  column.iEq = column.iEqual;
@@ -0,0 +1,113 @@
1
+ const newParameterized = require('../query/newParameterized');
2
+ const negotiateNextAndFilter = require('./negotiateNextAndFilter');
3
+ const negotiateNextOrFilter = require('./negotiateNextOrFilter');
4
+
5
+ function newBoolean(filter) {
6
+ var c = {};
7
+ c.sql = filter.sql.bind(filter);
8
+ c.parameters = filter.parameters;
9
+
10
+ c.append = function(other) {
11
+ var nextFilter = filter.append(other);
12
+ return newBoolean(nextFilter);
13
+ };
14
+
15
+ c.prepend = function(other) {
16
+ var nextFilter = filter.prepend(other);
17
+ return newBoolean(nextFilter);
18
+ };
19
+
20
+ c.and = function(context, other) {
21
+ other = negotiateRawSqlFilter(context, other);
22
+ var nextFilter = negotiateNextAndFilter(filter, other);
23
+ var next = newBoolean(nextFilter);
24
+ for (var i = 2; i < arguments.length; i++) {
25
+ next = next.and(context, arguments[i]);
26
+ }
27
+ return next;
28
+ };
29
+
30
+ c.or = function(context, other) {
31
+ other = negotiateRawSqlFilter(context, other);
32
+ var nextFilter = negotiateNextOrFilter(filter, other);
33
+ var next = newBoolean(nextFilter);
34
+ for (var i = 2; i < arguments.length; i++) {
35
+ next = next.or(context, arguments[i]);
36
+ }
37
+ return next;
38
+ };
39
+
40
+ c.not = function(_context) {
41
+ var nextFilter = filter.prepend('NOT (').append(')');
42
+ return newBoolean(nextFilter);
43
+ };
44
+
45
+ return c;
46
+ }
47
+
48
+
49
+ function negotiateRawSqlFilter(context, filter, optionalTable, emptyArrayMeansFalse) {
50
+ if (Array.isArray(filter) && filter.length === 0) {
51
+ const sql = emptyArrayMeansFalse ? '1 = 2' : '1 = 1';
52
+ return newBoolean(newParameterized(sql));
53
+ }
54
+ else if (Array.isArray(filter)) {
55
+ let curFilter;
56
+ let curObjectFilter;
57
+ for (let i = 0; i < filter.length; i++) {
58
+ let nextFilter = negotiateRawSqlFilter(context,filter[i], optionalTable);
59
+ if (nextFilter.isObjectFilter)
60
+ curObjectFilter = curObjectFilter ? curObjectFilter.or(context, nextFilter) : nextFilter;
61
+ else
62
+ curFilter = curFilter ? curFilter.and(context, nextFilter) : nextFilter;
63
+ }
64
+ if (curFilter && curObjectFilter)
65
+ return curFilter.and(context, curObjectFilter);
66
+ else if (curFilter)
67
+ return curFilter;
68
+ else
69
+ return curObjectFilter;
70
+ }
71
+ else {
72
+ let params = [];
73
+ if (filter) {
74
+ if (filter.and)
75
+ return filter;
76
+ if (filter.sql) {
77
+ let sql = filter.sql;
78
+ if (typeof filter.sql === 'function') {
79
+ sql = filter.sql();
80
+ }
81
+ params.push(sql, filter.parameters);
82
+ }
83
+ else if (isObjectFilter(filter, optionalTable))
84
+ return newObjectFilter(context, filter, optionalTable);
85
+ else
86
+ params = [filter];
87
+ } else {
88
+ params = [filter];
89
+ }
90
+
91
+ let parameterized = newParameterized.apply(null, params);
92
+ return newBoolean(parameterized);
93
+ }
94
+ }
95
+
96
+ function isObjectFilter(object, optionalTable) {
97
+ return optionalTable && object;
98
+ }
99
+
100
+ function newObjectFilter(context, object, table) {
101
+ let primaryColumns = table._primaryColumns;
102
+ let filter;
103
+ for (let i = 0; i < primaryColumns.length; i++) {
104
+ let column = primaryColumns[i];
105
+ let colFilter = column.equal(context, object[column.alias]);
106
+ filter = filter ? filter.and(context, colFilter) : colFilter ;
107
+ }
108
+ filter.isObjectFilter = true;
109
+ return filter;
110
+ }
111
+
112
+
113
+ module.exports = { negotiateRawSqlFilter, newBoolean};
@@ -1,5 +1,4 @@
1
1
  const Ajv = require('ajv');
2
- const inspect = require('util').inspect;
3
2
 
4
3
  function defineColumn(column, table) {
5
4
  var c = {};
@@ -139,7 +138,7 @@ function defineColumn(column, table) {
139
138
  previousValidate.apply(null, arguments);
140
139
  let valid = validate.apply(null, arguments);
141
140
  if (!valid) {
142
- let e = new Error(`Column ${table._dbName}.${column._dbName} violates JSON Schema: ${inspect(validate.errors, false, 10)}`);
141
+ let e = new Error(`Column ${table._dbName}.${column._dbName} violates JSON Schema: ${inspect(validate.errors)}`);
143
142
  e.errors = validate.errors;
144
143
  e.status = 400;
145
144
  throw e;
@@ -151,4 +150,9 @@ function defineColumn(column, table) {
151
150
  return c;
152
151
  }
153
152
 
153
+ function inspect(obj) {
154
+ return JSON.stringify(obj, null, 2);
155
+ }
156
+
157
+
154
158
  module.exports = defineColumn;
@@ -1,8 +1,8 @@
1
1
  let newParameterized = require('../query/newParameterized');
2
2
  let getSessionContext = require('../getSessionContext');
3
3
 
4
- module.exports = function() {
5
- let command = newParameterized(getSessionContext().begin || 'BEGIN');
4
+ module.exports = function(context) {
5
+ let command = newParameterized(getSessionContext(context).begin || 'BEGIN');
6
6
  command.endEdit = empty;
7
7
  command.matches = empty;
8
8
 
@@ -1,8 +1,8 @@
1
1
  var newParameterized = require('../query/newParameterized');
2
2
  var getSessionSingleton = require('../getSessionSingleton');
3
3
 
4
- function compress(queries) {
5
- var multipleStatements = getSessionSingleton('multipleStatements');
4
+ function compress(context, queries) {
5
+ var multipleStatements = getSessionSingleton(context, 'multipleStatements');
6
6
  var compressed = [];
7
7
  var queryCount = queries.length;
8
8
 
@@ -4,14 +4,14 @@ var extractFilter = require('../../query/extractFilter');
4
4
  var newSingleCommandCore = require('./singleCommand/newSingleCommandCore');
5
5
  var createAlias = require('./createAlias');
6
6
 
7
- function _new(table,filter,relations) {
7
+ function _new(context, table, filter, relations) {
8
8
  var alias = createAlias(table, relations.length);
9
9
  filter = extractFilter(filter);
10
- filter = newSubFilter(relations, filter);
11
- var discriminator = newDiscriminatorSql(table, alias);
10
+ filter = newSubFilter(context, relations, filter);
11
+ var discriminator = newDiscriminatorSql(context, table, alias);
12
12
  if (discriminator !== '')
13
- filter = filter.and(discriminator);
14
- return newSingleCommandCore(table, filter, alias);
13
+ filter = filter.and(context, discriminator);
14
+ return newSingleCommandCore(context, table, filter, alias);
15
15
  }
16
16
 
17
17
  module.exports = _new;
@@ -1,21 +1,21 @@
1
- var newShallowJoinSql = require('../../../query/singleQuery/joinSql/newShallowJoinSql');
2
- var createAlias = require('../createAlias');
1
+ const newShallowJoinSql = require('../../../query/singleQuery/joinSql/newShallowJoinSql');
2
+ const createAlias = require('../createAlias');
3
3
 
4
- function newJoinSql(relations) {
5
- var length = relations.length;
6
- var leftAlias,
4
+ function newJoinSql(context, relations) {
5
+ const length = relations.length;
6
+ let leftAlias,
7
7
  rightAlias;
8
- var sql = '';
8
+ let sql = '';
9
9
 
10
10
  function addSql(relation) {
11
- var rightColumns = relation.childTable._primaryColumns;
12
- var leftColumns = relation.columns;
13
- sql += ' INNER' + newShallowJoinSql(relation.childTable,leftColumns,rightColumns,leftAlias,rightAlias).sql();
11
+ const rightColumns = relation.childTable._primaryColumns;
12
+ const leftColumns = relation.columns;
13
+ sql += ' INNER' + newShallowJoinSql(context, relation.childTable, leftColumns, rightColumns, leftAlias, rightAlias).sql();
14
14
  }
15
15
 
16
- relations.forEach(function(relation, i){
17
- leftAlias = 'x' + (length-i);
18
- rightAlias = createAlias(relation.childTable, length-i-1);
16
+ relations.forEach(function(relation, i) {
17
+ leftAlias = 'x' + (length - i);
18
+ rightAlias = createAlias(relation.childTable, length - i - 1);
19
19
  addSql(relation);
20
20
 
21
21
  });
@@ -1,13 +1,13 @@
1
1
  var getSessionSingleton = require('../../../getSessionSingleton');
2
2
 
3
- function newSingleCommandCore(table,filter,alias) {
3
+ function newSingleCommandCore(context, table, filter, alias) {
4
4
  var c = {};
5
5
 
6
6
  c.sql = function() {
7
7
  var whereSql = filter.sql();
8
8
  if (whereSql)
9
9
  whereSql = ' where ' + whereSql;
10
- var deleteFromSql = getSessionSingleton('deleteFromSql');
10
+ var deleteFromSql = getSessionSingleton(context, 'deleteFromSql');
11
11
  return deleteFromSql(table, alias, whereSql);
12
12
  };
13
13
 
@@ -1,11 +1,11 @@
1
- var newParameterized = require('../../../query/newParameterized');
2
- var newBoolean = require('../../../column/newBoolean');
1
+ const newParameterized = require('../../../query/newParameterized');
2
+ const newBoolean = require('../../../column/newBoolean');
3
3
  const quote = require('../../../quote');
4
4
 
5
- function newSelectSql(table, alias) {
6
- var colName = quote(table._primaryColumns[0]._dbName);
7
- alias = quote(alias);
8
- var sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + quote(table._dbName) + ' ' + alias;
5
+ function newSelectSql(context, table, alias) {
6
+ const colName = quote(context, table._primaryColumns[0]._dbName);
7
+ alias = quote(context, alias);
8
+ let sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + quote(context, table._dbName) + ' ' + alias;
9
9
  sql = newParameterized(sql);
10
10
  return newBoolean(sql);
11
11
  }