@warlock.js/cascade 1.0.4 → 1.0.5

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 (300) hide show
  1. package/cjs/commands/create-new-app/get-app-path.d.ts +2 -0
  2. package/cjs/commands/create-new-app/get-app-path.d.ts.map +1 -0
  3. package/cjs/commands/create-new-app/get-app-path.js +8 -0
  4. package/cjs/commands/create-new-app/get-app-path.js.map +1 -0
  5. package/cjs/commands/create-new-app/index.d.ts +2 -0
  6. package/cjs/commands/create-new-app/index.d.ts.map +1 -0
  7. package/cjs/commands/create-new-app/index.js +44 -0
  8. package/cjs/commands/create-new-app/index.js.map +1 -0
  9. package/cjs/commands/create-new-app/select-app-type.d.ts +2 -0
  10. package/cjs/commands/create-new-app/select-app-type.d.ts.map +1 -0
  11. package/cjs/commands/create-new-app/types.d.ts +9 -0
  12. package/cjs/commands/create-new-app/types.d.ts.map +1 -0
  13. package/cjs/commands/create-warlock-app/index.d.ts +3 -0
  14. package/cjs/commands/create-warlock-app/index.d.ts.map +1 -0
  15. package/cjs/commands/create-warlock-app/index.js +18 -0
  16. package/cjs/commands/create-warlock-app/index.js.map +1 -0
  17. package/cjs/helpers/app.d.ts +51 -0
  18. package/cjs/helpers/app.d.ts.map +1 -0
  19. package/cjs/helpers/app.js +127 -0
  20. package/cjs/helpers/app.js.map +1 -0
  21. package/cjs/helpers/exec.d.ts +10 -0
  22. package/cjs/helpers/exec.d.ts.map +1 -0
  23. package/cjs/helpers/exec.js +69 -0
  24. package/cjs/helpers/exec.js.map +1 -0
  25. package/cjs/helpers/package-manager.d.ts +6 -0
  26. package/cjs/helpers/package-manager.d.ts.map +1 -0
  27. package/cjs/helpers/package-manager.js +22 -0
  28. package/cjs/helpers/package-manager.js.map +1 -0
  29. package/cjs/helpers/paths.d.ts +4 -0
  30. package/cjs/helpers/paths.d.ts.map +1 -0
  31. package/cjs/helpers/paths.js +8 -0
  32. package/cjs/helpers/paths.js.map +1 -0
  33. package/cjs/helpers/project-builder-helpers.d.ts +7 -0
  34. package/cjs/helpers/project-builder-helpers.d.ts.map +1 -0
  35. package/cjs/helpers/project-builder-helpers.js +44 -0
  36. package/cjs/helpers/project-builder-helpers.js.map +1 -0
  37. package/cjs/index.d.ts +1 -11
  38. package/cjs/index.d.ts.map +1 -1
  39. package/cjs/index.js +5 -1
  40. package/cjs/index.js.map +1 -1
  41. package/esm/blueprint/blueprint.d.ts +2 -2
  42. package/esm/blueprint/blueprint.d.ts.map +1 -1
  43. package/esm/blueprint/blueprint.js +2 -0
  44. package/esm/blueprint/blueprint.js.map +1 -1
  45. package/esm/migration/migrate.d.ts.map +1 -1
  46. package/esm/migration/migrate.js +2 -6
  47. package/esm/migration/migrate.js.map +1 -1
  48. package/esm/migration/migration-office.d.ts +3 -3
  49. package/esm/migration/migration-office.d.ts.map +1 -1
  50. package/esm/migration/migration-office.js +15 -1
  51. package/esm/migration/migration-office.js.map +1 -1
  52. package/esm/migration/types.d.ts +10 -0
  53. package/esm/migration/types.d.ts.map +1 -1
  54. package/esm/model/ModelAggregate.js +1 -1
  55. package/esm/model/ModelAggregate.js.map +1 -1
  56. package/esm/model/base-model.d.ts +2 -2
  57. package/esm/model/base-model.d.ts.map +1 -1
  58. package/esm/model/base-model.js +14 -4
  59. package/esm/model/base-model.js.map +1 -1
  60. package/esm/model/model.d.ts +13 -2
  61. package/esm/model/model.d.ts.map +1 -1
  62. package/esm/model/model.js +41 -3
  63. package/esm/model/model.js.map +1 -1
  64. package/esm/types.d.ts +30 -0
  65. package/esm/types.d.ts.map +1 -1
  66. package/esm/utils/deep-diff.d.ts +9 -0
  67. package/esm/utils/deep-diff.d.ts.map +1 -0
  68. package/esm/utils/deep-diff.js +42 -0
  69. package/esm/utils/deep-diff.js.map +1 -0
  70. package/package.json +1 -1
  71. package/cjs/aggregate/DeselectPipeline.d.ts +0 -10
  72. package/cjs/aggregate/DeselectPipeline.d.ts.map +0 -1
  73. package/cjs/aggregate/DeselectPipeline.js +0 -17
  74. package/cjs/aggregate/DeselectPipeline.js.map +0 -1
  75. package/cjs/aggregate/GeoNearPipeline.d.ts +0 -34
  76. package/cjs/aggregate/GeoNearPipeline.d.ts.map +0 -1
  77. package/cjs/aggregate/GeoNearPipeline.js +0 -44
  78. package/cjs/aggregate/GeoNearPipeline.js.map +0 -1
  79. package/cjs/aggregate/GroupByPipeline.d.ts +0 -12
  80. package/cjs/aggregate/GroupByPipeline.d.ts.map +0 -1
  81. package/cjs/aggregate/GroupByPipeline.js +0 -28
  82. package/cjs/aggregate/GroupByPipeline.js.map +0 -1
  83. package/cjs/aggregate/LimitPipeline.d.ts +0 -10
  84. package/cjs/aggregate/LimitPipeline.d.ts.map +0 -1
  85. package/cjs/aggregate/LimitPipeline.js +0 -14
  86. package/cjs/aggregate/LimitPipeline.js.map +0 -1
  87. package/cjs/aggregate/LookupPipeline.d.ts +0 -19
  88. package/cjs/aggregate/LookupPipeline.d.ts.map +0 -1
  89. package/cjs/aggregate/LookupPipeline.js +0 -19
  90. package/cjs/aggregate/LookupPipeline.js.map +0 -1
  91. package/cjs/aggregate/OrWherePipeline.d.ts +0 -23
  92. package/cjs/aggregate/OrWherePipeline.d.ts.map +0 -1
  93. package/cjs/aggregate/OrWherePipeline.js +0 -42
  94. package/cjs/aggregate/OrWherePipeline.js.map +0 -1
  95. package/cjs/aggregate/SelectPipeline.d.ts +0 -10
  96. package/cjs/aggregate/SelectPipeline.d.ts.map +0 -1
  97. package/cjs/aggregate/SelectPipeline.js +0 -26
  98. package/cjs/aggregate/SelectPipeline.js.map +0 -1
  99. package/cjs/aggregate/SkipPipeline.d.ts +0 -10
  100. package/cjs/aggregate/SkipPipeline.d.ts.map +0 -1
  101. package/cjs/aggregate/SkipPipeline.js +0 -14
  102. package/cjs/aggregate/SkipPipeline.js.map +0 -1
  103. package/cjs/aggregate/SortByPipeline.d.ts +0 -10
  104. package/cjs/aggregate/SortByPipeline.d.ts.map +0 -1
  105. package/cjs/aggregate/SortByPipeline.js +0 -18
  106. package/cjs/aggregate/SortByPipeline.js.map +0 -1
  107. package/cjs/aggregate/SortPipeline.d.ts +0 -11
  108. package/cjs/aggregate/SortPipeline.d.ts.map +0 -1
  109. package/cjs/aggregate/SortPipeline.js +0 -18
  110. package/cjs/aggregate/SortPipeline.js.map +0 -1
  111. package/cjs/aggregate/SortRandomPipeline.d.ts +0 -10
  112. package/cjs/aggregate/SortRandomPipeline.d.ts.map +0 -1
  113. package/cjs/aggregate/SortRandomPipeline.js +0 -16
  114. package/cjs/aggregate/SortRandomPipeline.js.map +0 -1
  115. package/cjs/aggregate/UnwindPipeline.d.ts +0 -14
  116. package/cjs/aggregate/UnwindPipeline.d.ts.map +0 -1
  117. package/cjs/aggregate/UnwindPipeline.js +0 -19
  118. package/cjs/aggregate/UnwindPipeline.js.map +0 -1
  119. package/cjs/aggregate/WhereExpression.d.ts +0 -17
  120. package/cjs/aggregate/WhereExpression.d.ts.map +0 -1
  121. package/cjs/aggregate/WhereExpression.js +0 -149
  122. package/cjs/aggregate/WhereExpression.js.map +0 -1
  123. package/cjs/aggregate/WhereExpressionPipeline.d.ts +0 -10
  124. package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +0 -1
  125. package/cjs/aggregate/WhereExpressionPipeline.js +0 -15
  126. package/cjs/aggregate/WhereExpressionPipeline.js.map +0 -1
  127. package/cjs/aggregate/WherePipeline.d.ts +0 -13
  128. package/cjs/aggregate/WherePipeline.d.ts.map +0 -1
  129. package/cjs/aggregate/WherePipeline.js +0 -12
  130. package/cjs/aggregate/WherePipeline.js.map +0 -1
  131. package/cjs/aggregate/aggregate.d.ts +0 -358
  132. package/cjs/aggregate/aggregate.d.ts.map +0 -1
  133. package/cjs/aggregate/aggregate.js +0 -680
  134. package/cjs/aggregate/aggregate.js.map +0 -1
  135. package/cjs/aggregate/expressions.d.ts +0 -361
  136. package/cjs/aggregate/expressions.d.ts.map +0 -1
  137. package/cjs/aggregate/expressions.js +0 -536
  138. package/cjs/aggregate/expressions.js.map +0 -1
  139. package/cjs/aggregate/index.d.ts +0 -21
  140. package/cjs/aggregate/index.d.ts.map +0 -1
  141. package/cjs/aggregate/parsePipelines.d.ts +0 -5
  142. package/cjs/aggregate/parsePipelines.d.ts.map +0 -1
  143. package/cjs/aggregate/parsePipelines.js +0 -6
  144. package/cjs/aggregate/parsePipelines.js.map +0 -1
  145. package/cjs/aggregate/pipeline.d.ts +0 -31
  146. package/cjs/aggregate/pipeline.d.ts.map +0 -1
  147. package/cjs/aggregate/pipeline.js +0 -42
  148. package/cjs/aggregate/pipeline.js.map +0 -1
  149. package/cjs/aggregate/types.d.ts +0 -8
  150. package/cjs/aggregate/types.d.ts.map +0 -1
  151. package/cjs/aggregate/types.js +0 -31
  152. package/cjs/aggregate/types.js.map +0 -1
  153. package/cjs/blueprint/blueprint-column.d.ts +0 -82
  154. package/cjs/blueprint/blueprint-column.d.ts.map +0 -1
  155. package/cjs/blueprint/blueprint.d.ts +0 -162
  156. package/cjs/blueprint/blueprint.d.ts.map +0 -1
  157. package/cjs/blueprint/blueprint.js +0 -338
  158. package/cjs/blueprint/blueprint.js.map +0 -1
  159. package/cjs/blueprint/index.d.ts +0 -3
  160. package/cjs/blueprint/index.d.ts.map +0 -1
  161. package/cjs/blueprint/model-blueprint.d.ts +0 -15
  162. package/cjs/blueprint/model-blueprint.d.ts.map +0 -1
  163. package/cjs/blueprint/model-blueprint.js +0 -16
  164. package/cjs/blueprint/model-blueprint.js.map +0 -1
  165. package/cjs/casts/arrayOf.d.ts +0 -5
  166. package/cjs/casts/arrayOf.d.ts.map +0 -1
  167. package/cjs/casts/arrayOf.js +0 -18
  168. package/cjs/casts/arrayOf.js.map +0 -1
  169. package/cjs/casts/cast-email.d.ts +0 -2
  170. package/cjs/casts/cast-email.d.ts.map +0 -1
  171. package/cjs/casts/cast-email.js +0 -5
  172. package/cjs/casts/cast-email.js.map +0 -1
  173. package/cjs/casts/castModel.d.ts +0 -3
  174. package/cjs/casts/castModel.d.ts.map +0 -1
  175. package/cjs/casts/castModel.js +0 -49
  176. package/cjs/casts/castModel.js.map +0 -1
  177. package/cjs/casts/expiresAfter.d.ts +0 -3
  178. package/cjs/casts/expiresAfter.d.ts.map +0 -1
  179. package/cjs/casts/expiresAfter.js +0 -5
  180. package/cjs/casts/expiresAfter.js.map +0 -1
  181. package/cjs/casts/index.d.ts +0 -9
  182. package/cjs/casts/index.d.ts.map +0 -1
  183. package/cjs/casts/oneOf.d.ts +0 -3
  184. package/cjs/casts/oneOf.d.ts.map +0 -1
  185. package/cjs/casts/oneOf.js +0 -22
  186. package/cjs/casts/oneOf.js.map +0 -1
  187. package/cjs/casts/random-string.d.ts +0 -2
  188. package/cjs/casts/random-string.d.ts.map +0 -1
  189. package/cjs/casts/random-string.js +0 -5
  190. package/cjs/casts/random-string.js.map +0 -1
  191. package/cjs/casts/randomInteger.d.ts +0 -2
  192. package/cjs/casts/randomInteger.d.ts.map +0 -1
  193. package/cjs/casts/randomInteger.js +0 -7
  194. package/cjs/casts/randomInteger.js.map +0 -1
  195. package/cjs/casts/shapedArray.d.ts +0 -26
  196. package/cjs/casts/shapedArray.d.ts.map +0 -1
  197. package/cjs/casts/shapedArray.js +0 -100
  198. package/cjs/casts/shapedArray.js.map +0 -1
  199. package/cjs/config.d.ts +0 -4
  200. package/cjs/config.d.ts.map +0 -1
  201. package/cjs/config.js +0 -10
  202. package/cjs/config.js.map +0 -1
  203. package/cjs/connection.d.ts +0 -45
  204. package/cjs/connection.d.ts.map +0 -1
  205. package/cjs/connection.js +0 -98
  206. package/cjs/connection.js.map +0 -1
  207. package/cjs/database.d.ts +0 -49
  208. package/cjs/database.d.ts.map +0 -1
  209. package/cjs/database.js +0 -85
  210. package/cjs/database.js.map +0 -1
  211. package/cjs/migration/index.d.ts +0 -4
  212. package/cjs/migration/index.d.ts.map +0 -1
  213. package/cjs/migration/migrate.d.ts +0 -13
  214. package/cjs/migration/migrate.d.ts.map +0 -1
  215. package/cjs/migration/migrate.js +0 -76
  216. package/cjs/migration/migrate.js.map +0 -1
  217. package/cjs/migration/migration-office.d.ts +0 -21
  218. package/cjs/migration/migration-office.d.ts.map +0 -1
  219. package/cjs/migration/migration-office.js +0 -26
  220. package/cjs/migration/migration-office.js.map +0 -1
  221. package/cjs/migration/migration-officer.d.ts +0 -33
  222. package/cjs/migration/migration-officer.d.ts.map +0 -1
  223. package/cjs/migration/migration-officer.js +0 -55
  224. package/cjs/migration/migration-officer.js.map +0 -1
  225. package/cjs/migration/types.d.ts +0 -24
  226. package/cjs/migration/types.d.ts.map +0 -1
  227. package/cjs/model/ModelAggregate.d.ts +0 -84
  228. package/cjs/model/ModelAggregate.d.ts.map +0 -1
  229. package/cjs/model/ModelAggregate.js +0 -164
  230. package/cjs/model/ModelAggregate.js.map +0 -1
  231. package/cjs/model/ModelSync.d.ts +0 -74
  232. package/cjs/model/ModelSync.d.ts.map +0 -1
  233. package/cjs/model/ModelSync.js +0 -215
  234. package/cjs/model/ModelSync.js.map +0 -1
  235. package/cjs/model/RelationshipWithMany.d.ts +0 -24
  236. package/cjs/model/RelationshipWithMany.d.ts.map +0 -1
  237. package/cjs/model/RelationshipWithMany.js +0 -42
  238. package/cjs/model/RelationshipWithMany.js.map +0 -1
  239. package/cjs/model/base-model.d.ts +0 -155
  240. package/cjs/model/base-model.d.ts.map +0 -1
  241. package/cjs/model/base-model.js +0 -220
  242. package/cjs/model/base-model.js.map +0 -1
  243. package/cjs/model/crud-model.d.ts +0 -117
  244. package/cjs/model/crud-model.d.ts.map +0 -1
  245. package/cjs/model/crud-model.js +0 -352
  246. package/cjs/model/crud-model.js.map +0 -1
  247. package/cjs/model/index.d.ts +0 -10
  248. package/cjs/model/index.d.ts.map +0 -1
  249. package/cjs/model/joinable.d.ts +0 -87
  250. package/cjs/model/joinable.d.ts.map +0 -1
  251. package/cjs/model/joinable.js +0 -155
  252. package/cjs/model/joinable.js.map +0 -1
  253. package/cjs/model/master-mind.d.ts +0 -44
  254. package/cjs/model/master-mind.d.ts.map +0 -1
  255. package/cjs/model/master-mind.js +0 -129
  256. package/cjs/model/master-mind.js.map +0 -1
  257. package/cjs/model/model-events.d.ts +0 -57
  258. package/cjs/model/model-events.d.ts.map +0 -1
  259. package/cjs/model/model-events.js +0 -102
  260. package/cjs/model/model-events.js.map +0 -1
  261. package/cjs/model/model.d.ts +0 -390
  262. package/cjs/model/model.d.ts.map +0 -1
  263. package/cjs/model/model.js +0 -990
  264. package/cjs/model/model.js.map +0 -1
  265. package/cjs/model/types.d.ts +0 -113
  266. package/cjs/model/types.d.ts.map +0 -1
  267. package/cjs/model/types.js +0 -11
  268. package/cjs/model/types.js.map +0 -1
  269. package/cjs/query/index.d.ts +0 -2
  270. package/cjs/query/index.d.ts.map +0 -1
  271. package/cjs/query/query.d.ts +0 -228
  272. package/cjs/query/query.d.ts.map +0 -1
  273. package/cjs/query/query.js +0 -675
  274. package/cjs/query/query.js.map +0 -1
  275. package/cjs/query/types.d.ts +0 -56
  276. package/cjs/query/types.d.ts.map +0 -1
  277. package/cjs/types.d.ts +0 -32
  278. package/cjs/types.d.ts.map +0 -1
  279. package/cjs/utils/connectToDatabase.d.ts +0 -3
  280. package/cjs/utils/connectToDatabase.d.ts.map +0 -1
  281. package/cjs/utils/connectToDatabase.js +0 -3
  282. package/cjs/utils/connectToDatabase.js.map +0 -1
  283. package/cjs/utils/dropAllDatabaseIndexes.d.ts +0 -2
  284. package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +0 -1
  285. package/cjs/utils/dropAllDatabaseIndexes.js +0 -10
  286. package/cjs/utils/dropAllDatabaseIndexes.js.map +0 -1
  287. package/cjs/utils/index.d.ts +0 -5
  288. package/cjs/utils/index.d.ts.map +0 -1
  289. package/cjs/utils/joinable-proxy.d.ts +0 -3
  290. package/cjs/utils/joinable-proxy.d.ts.map +0 -1
  291. package/cjs/utils/joinable-proxy.js +0 -14
  292. package/cjs/utils/joinable-proxy.js.map +0 -1
  293. package/cjs/utils/listDatabaseIndexes.d.ts +0 -4
  294. package/cjs/utils/listDatabaseIndexes.d.ts.map +0 -1
  295. package/cjs/utils/listDatabaseIndexes.js +0 -101
  296. package/cjs/utils/listDatabaseIndexes.js.map +0 -1
  297. package/cjs/utils/onceConnected.d.ts +0 -2
  298. package/cjs/utils/onceConnected.d.ts.map +0 -1
  299. package/cjs/utils/onceConnected.js +0 -8
  300. package/cjs/utils/onceConnected.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/aggregate/aggregate.ts"],"names":[],"mappings":"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"}
@@ -1,680 +0,0 @@
1
- 'use strict';var reinforcements=require('@mongez/reinforcements'),logger=require('@warlock.js/logger'),mongodb=require('mongodb'),modelEvents=require('../model/model-events.js'),query=require('../query/query.js'),DeselectPipeline=require('./DeselectPipeline.js'),GroupByPipeline=require('./GroupByPipeline.js'),LimitPipeline=require('./LimitPipeline.js'),LookupPipeline=require('./LookupPipeline.js'),OrWherePipeline=require('./OrWherePipeline.js'),SelectPipeline=require('./SelectPipeline.js'),SkipPipeline=require('./SkipPipeline.js'),SortByPipeline=require('./SortByPipeline.js'),SortPipeline=require('./SortPipeline.js'),SortRandomPipeline=require('./SortRandomPipeline.js'),UnwindPipeline=require('./UnwindPipeline.js'),WhereExpression=require('./WhereExpression.js'),WherePipeline=require('./WherePipeline.js'),expressions=require('./expressions.js'),parsePipelines=require('./parsePipelines.js');class Aggregate {
2
- collection;
3
- /**
4
- * Collection pipelines
5
- */
6
- pipelines = [];
7
- /**
8
- * Aggregate events
9
- */
10
- static _events = new modelEvents.ModelEvents();
11
- /**
12
- * Query manager
13
- */
14
- query = query.query;
15
- /**
16
- * Constructor
17
- */
18
- constructor(collection) {
19
- this.collection = collection;
20
- // get the events instance
21
- const events = Aggregate._events;
22
- Aggregate._events.trigger("fetching", this);
23
- events.collection = collection;
24
- }
25
- /**
26
- * Get the events instance
27
- */
28
- static events() {
29
- return Aggregate._events;
30
- }
31
- /**
32
- * Sort by the given column
33
- */
34
- sort(column, direction = "asc") {
35
- return this.pipeline(new SortPipeline.SortPipeline(column, direction));
36
- }
37
- /**
38
- * @alias sort
39
- */
40
- orderBy(column, direction = "asc") {
41
- return this.sort(column, direction);
42
- }
43
- /**
44
- * Order by descending
45
- */
46
- sortByDesc(column) {
47
- return this.sort(column, "desc");
48
- }
49
- /**
50
- * Order by descending
51
- */
52
- orderByDesc(column) {
53
- return this.sort(column, "desc");
54
- }
55
- /**
56
- * Sort by multiple columns
57
- */
58
- sortBy(columns) {
59
- return this.pipeline(new SortByPipeline.SortByPipeline(columns));
60
- }
61
- /**
62
- * Sort randomly
63
- */
64
- random(limit) {
65
- if (!limit) {
66
- // get limit pipeline
67
- const limitPipeline = this.pipelines.find(pipeline => pipeline.name === "limit");
68
- if (limitPipeline) {
69
- limit = limitPipeline.getData();
70
- }
71
- if (!limit) {
72
- throw new Error("You must provide a limit when using random() or use limit() pipeline");
73
- }
74
- }
75
- // order by random in mongodb using $sample
76
- return this.pipeline(new SortRandomPipeline.SortRandomPipeline(limit));
77
- }
78
- /**
79
- * Order by latest created records
80
- */
81
- latest(column = "createdAt") {
82
- return this.sort(column, "desc");
83
- }
84
- /**
85
- * Order by oldest created records
86
- */
87
- oldest(column = "createdAt") {
88
- return this.sort(column, "asc");
89
- }
90
- groupBy(...args) {
91
- const [groupBy_id, groupByData] = args;
92
- if (groupBy_id instanceof GroupByPipeline.GroupByPipeline) {
93
- return this.pipeline(groupBy_id);
94
- }
95
- return this.pipeline(new GroupByPipeline.GroupByPipeline(groupBy_id, groupByData));
96
- }
97
- /**
98
- * Group by year
99
- */
100
- groupByYear(column, groupByData) {
101
- return this.groupBy({
102
- year: expressions.year(expressions.$agg.columnName(column)),
103
- }, groupByData);
104
- }
105
- /**
106
- * Group by month and year
107
- */
108
- groupByMonthAndYear(column, groupByData) {
109
- column = expressions.$agg.columnName(column);
110
- return this.groupBy({
111
- year: expressions.year(column),
112
- month: expressions.month(column),
113
- }, groupByData);
114
- }
115
- /**
116
- * Group by month only
117
- */
118
- groupByMonth(column, groupByData) {
119
- column = expressions.$agg.columnName(column);
120
- return this.groupBy({
121
- month: expressions.month(column),
122
- }, groupByData);
123
- }
124
- /**
125
- * Group by day, month and year
126
- */
127
- groupByDate(column, groupByData) {
128
- column = expressions.$agg.columnName(column);
129
- return this.groupBy({
130
- year: expressions.year(column),
131
- month: expressions.month(column),
132
- day: expressions.dayOfMonth(column),
133
- }, groupByData);
134
- }
135
- /**
136
- * Group by week and year
137
- */
138
- groupByWeek(column, groupByData) {
139
- column = expressions.$agg.columnName(column);
140
- return this.groupBy({
141
- year: expressions.year(column),
142
- week: expressions.week(column),
143
- }, groupByData);
144
- }
145
- /**
146
- * Group by day only
147
- */
148
- groupByDayOfMonth(column, groupByData) {
149
- column = expressions.$agg.columnName(column);
150
- return this.groupBy({
151
- day: expressions.dayOfMonth(column),
152
- }, groupByData);
153
- }
154
- /**
155
- * Pluck only the given column
156
- */
157
- async pluck(column) {
158
- return await this.select([column]).get(record => reinforcements.get(record, column));
159
- }
160
- /**
161
- * Get average of the given column
162
- */
163
- async avg(column) {
164
- const document = await this.groupBy(null, {
165
- avg: expressions.$agg.avg(column),
166
- }).first(document => document);
167
- return document?.avg || 0;
168
- }
169
- /**
170
- * {@alias} avg
171
- */
172
- average(column) {
173
- return this.avg(column);
174
- }
175
- /**
176
- * Sum values of the given column
177
- */
178
- async sum(column) {
179
- const document = await this.groupBy(null, {
180
- sum: expressions.$agg.sum(column),
181
- }).first(document => document);
182
- return document?.sum || 0;
183
- }
184
- /**
185
- * Get minimum value of the given column
186
- */
187
- async min(column) {
188
- const document = await this.groupBy(null, {
189
- min: expressions.$agg.min(column),
190
- }).first(document => document);
191
- return document?.min || 0;
192
- }
193
- /**
194
- * Get maximum value of the given column
195
- */
196
- async max(column) {
197
- const document = await this.groupBy(null, {
198
- max: expressions.$agg.max(column),
199
- }).first(document => document);
200
- return document?.max || 0;
201
- }
202
- /**
203
- * Get distinct value for the given column using aggregation
204
- */
205
- async distinct(column) {
206
- return (await this.groupBy(null, {
207
- // use addToSet to get unique values
208
- [column]: expressions.$agg.addToSet(column),
209
- })
210
- .select([column])
211
- .get(data => data[column]));
212
- }
213
- /**
214
- * {@alias} distinct
215
- */
216
- unique(column) {
217
- return this.distinct(column);
218
- }
219
- /**
220
- * Get distinct values that are not empty
221
- */
222
- async distinctHeavy(column) {
223
- return await this.whereNotNull(column).distinct(column);
224
- }
225
- /**
226
- * {@alias} distinctHeavy
227
- */
228
- async uniqueHeavy(column) {
229
- return await this.distinctHeavy(column);
230
- }
231
- /**
232
- * Get values list of the given column
233
- */
234
- async values(column) {
235
- return (await this.groupBy(null, {
236
- values: expressions.$agg.push(column),
237
- })
238
- .select(["values"])
239
- .get(data => data.values));
240
- }
241
- /**
242
- * Limit the number of results
243
- */
244
- limit(limit) {
245
- return this.pipeline(new LimitPipeline.LimitPipeline(limit));
246
- }
247
- /**
248
- * Skip the given number of results
249
- */
250
- skip(skip) {
251
- return this.pipeline(new SkipPipeline.SkipPipeline(skip));
252
- }
253
- select(...columns) {
254
- if (columns.length === 1 && Array.isArray(columns[0])) {
255
- columns = columns[0];
256
- }
257
- return this.pipeline(new SelectPipeline.SelectPipeline(columns));
258
- }
259
- /**
260
- * Deselect the given columns
261
- */
262
- deselect(columns) {
263
- return this.pipeline(new DeselectPipeline.DeselectPipeline(columns));
264
- }
265
- /**
266
- * Unwind/Extract the given column
267
- */
268
- unwind(column, options) {
269
- return this.pipeline(new UnwindPipeline.UnwindPipeline(column, options));
270
- }
271
- where(...args) {
272
- return this.pipeline(new WherePipeline.WherePipeline(WhereExpression.WhereExpression.parse.apply(null, args)));
273
- }
274
- /**
275
- * Add comparison between two or more columns
276
- */
277
- whereColumns(column1, operator, ...otherColumns) {
278
- const mongoOperator = WhereExpression.toOperator(operator) || operator;
279
- return this.where(expressions.$agg.expr({
280
- [mongoOperator]: [
281
- expressions.$agg.columnName(column1),
282
- ...otherColumns.map(column => expressions.$agg.columnName(column)),
283
- ],
284
- }));
285
- }
286
- orWhere(column) {
287
- return this.pipeline(new OrWherePipeline.OrWherePipeline(column));
288
- }
289
- /**
290
- * Perform a text search
291
- * Please note that this method will add the `match` stage to the beginning of the pipeline
292
- * Also it will add `score` field to the result automatically
293
- *
294
- * @warning This method will not work if the collection is not indexed for text search
295
- */
296
- textSearch(query, moreFilters) {
297
- this.pipelines.unshift({
298
- $match: {
299
- $text: { $search: query },
300
- ...moreFilters,
301
- },
302
- });
303
- this.addField("score", { $meta: "textScore" });
304
- return this;
305
- }
306
- /**
307
- * Where null
308
- */
309
- whereNull(column) {
310
- return this.where(column, null);
311
- }
312
- /**
313
- * Where not null
314
- */
315
- whereNotNull(column) {
316
- return this.where(column, "!=", null);
317
- }
318
- /**
319
- * Where like operator
320
- */
321
- whereLike(column, value) {
322
- return this.where(column, "like", value);
323
- }
324
- /**
325
- * Where not like operator
326
- */
327
- whereNotLike(column, value) {
328
- return this.where(column, "notLike", value);
329
- }
330
- /**
331
- * Where column starts with the given value
332
- */
333
- whereStartsWith(column, value) {
334
- return this.where(column, "startsWith", value);
335
- }
336
- /**
337
- * Where column not starts with the given value
338
- */
339
- whereNotStartsWith(column, value) {
340
- return this.where(column, "notStartsWith", value);
341
- }
342
- /**
343
- * Where column ends with the given value
344
- */
345
- whereEndsWith(column, value) {
346
- return this.where(column, "endsWith", value);
347
- }
348
- /**
349
- * Where column not ends with the given value
350
- */
351
- whereNotEndsWith(column, value) {
352
- return this.where(column, "notEndsWith", value);
353
- }
354
- /**
355
- * Where between operator
356
- */
357
- whereBetween(column, value) {
358
- return this.where(column, "between", value);
359
- }
360
- /**
361
- * Where date between operator
362
- */
363
- whereDateBetween(column, value) {
364
- return this.where(column, "between", value);
365
- }
366
- /**
367
- * Where date not between operator
368
- */
369
- whereDateNotBetween(column, value) {
370
- return this.where(column, "notBetween", value);
371
- }
372
- /**
373
- * Where not between operator
374
- */
375
- whereNotBetween(column, value) {
376
- return this.where(column, "notBetween", value);
377
- }
378
- /**
379
- * Where exists operator
380
- */
381
- whereExists(column) {
382
- return this.where(column, "exists", true);
383
- }
384
- /**
385
- * Where not exists operator
386
- */
387
- whereNotExists(column) {
388
- return this.where(column, "exists", false);
389
- }
390
- whereSize(...args) {
391
- // first we need to project the column to get the size
392
- const [column, operator, columnSize] = args;
393
- this.project({
394
- [column + "_size"]: {
395
- $size: expressions.$agg.columnName(column),
396
- },
397
- });
398
- // then we can use the size operator
399
- this.where(column + "_size", operator, columnSize);
400
- // now we need to deselect the column size
401
- // this.project({
402
- // [column + "_size"]: 0,
403
- // });
404
- return this;
405
- }
406
- /**
407
- * Add project pipeline
408
- *
409
- */
410
- project(data) {
411
- return this.addPipeline({
412
- $project: data,
413
- });
414
- }
415
- /**
416
- * Where in operator
417
- * If value is a string, it will be treated as a column name
418
- */
419
- whereIn(column, values) {
420
- return this.where(column, "in", values);
421
- }
422
- /**
423
- * Where not in operator
424
- * If value is a string, it will be treated as a column name
425
- */
426
- whereNotIn(column, values) {
427
- return this.where(column, "notIn", values);
428
- }
429
- /**
430
- * // TODO: Make a proper implementation
431
- * Where location near
432
- */
433
- whereNear(column, value, _distance) {
434
- return this.where(column, "near", value);
435
- }
436
- /**
437
- * // TODO: Make a proper implementation
438
- * Get nearby location between the given min and max distance
439
- */
440
- async whereNearByIn(column, value, _minDistance, _maxDistance) {
441
- return this.where(column, value);
442
- }
443
- /**
444
- * Lookup the given collection
445
- */
446
- lookup(options) {
447
- this.pipeline(new LookupPipeline.LookupPipeline(options));
448
- if (options.single && options.as) {
449
- const as = options.as;
450
- this.addField(as, expressions.last(as));
451
- }
452
- return this;
453
- }
454
- /**
455
- * Add field to the pipeline
456
- */
457
- addField(field, value) {
458
- return this.addPipeline({
459
- $addFields: {
460
- [field]: value,
461
- },
462
- });
463
- }
464
- /**
465
- * Add fields to the pipeline
466
- */
467
- addFields(fields) {
468
- return this.addPipeline({
469
- $addFields: fields,
470
- });
471
- }
472
- /**
473
- * Get new pipeline instance
474
- */
475
- pipeline(...pipelines) {
476
- this.pipelines.push(...pipelines);
477
- return this;
478
- }
479
- /**
480
- * Unshift pipeline to the beginning of the pipelines
481
- */
482
- unshiftPipelines(pipelines) {
483
- this.pipelines.unshift(...pipelines);
484
- return this;
485
- }
486
- /**
487
- * Add mongodb plain stage
488
- */
489
- addPipeline(pipeline) {
490
- this.pipelines.push(pipeline);
491
- return this;
492
- }
493
- /**
494
- * Add mongodb plain stages
495
- */
496
- addPipelines(pipelines) {
497
- this.pipelines.push(...pipelines);
498
- return this;
499
- }
500
- /**
501
- * Get pipelines
502
- */
503
- getPipelines() {
504
- return this.pipelines;
505
- }
506
- /**
507
- * Get only first result
508
- */
509
- async first(mapData) {
510
- const results = await this.limit(1).get(mapData);
511
- return results[0];
512
- }
513
- /**
514
- * Get last result
515
- */
516
- async last(filters) {
517
- if (filters) {
518
- this.where(filters);
519
- }
520
- const results = await this.orderByDesc("id").limit(1).get();
521
- return results[0];
522
- }
523
- /**
524
- * Delete records
525
- */
526
- async delete() {
527
- const ids = await (await this.select(["_id"]).pluck("_id")).map(_id => new mongodb.ObjectId(_id));
528
- Aggregate._events.trigger("deleting", this);
529
- return await query.query.delete(this.collection, {
530
- _id: ids,
531
- });
532
- }
533
- /**
534
- * Get the data
535
- */
536
- async get(mapData) {
537
- const records = await this.execute();
538
- return mapData ? records.map(mapData) : records;
539
- }
540
- /**
541
- * Chunk documents based on the given limit
542
- */
543
- async chunk(limit, callback, mapData) {
544
- const totalDocuments = await this.clone().count();
545
- const totalPages = Math.ceil(totalDocuments / limit);
546
- for (let page = 1; page <= totalPages; page++) {
547
- const results = await this.clone().paginate(page, limit, mapData);
548
- const { documents, paginationInfo } = results;
549
- const output = await callback(documents, paginationInfo);
550
- if (output === false)
551
- break;
552
- }
553
- }
554
- /**
555
- * Paginate records based on the given filter
556
- */
557
- async paginate(page = 1, limit = 15, mapData) {
558
- const totalDocumentsQuery = this.parse();
559
- this.skip((page - 1) * limit).limit(limit);
560
- const records = await this.get(mapData);
561
- this.pipelines = totalDocumentsQuery;
562
- const totalDocuments = await this.count();
563
- const result = {
564
- documents: records,
565
- paginationInfo: {
566
- limit,
567
- page,
568
- result: records.length,
569
- total: totalDocuments,
570
- pages: Math.ceil(totalDocuments / limit),
571
- },
572
- };
573
- return result;
574
- }
575
- /**
576
- * Explain the query
577
- */
578
- async explain() {
579
- return (await this.query.aggregate(this.collection, this.parse(), {
580
- explain: true,
581
- })).explain();
582
- }
583
- /**
584
- * Update the given data
585
- */
586
- async update(data) {
587
- try {
588
- const query = [];
589
- const filters = {};
590
- this.parse().forEach(pipeline => {
591
- if (pipeline.$match) {
592
- Object.assign(filters, pipeline.$match);
593
- }
594
- else {
595
- query.push(pipeline);
596
- }
597
- });
598
- Aggregate._events.trigger("updating", this);
599
- const results = await this.query.updateMany(this.collection, filters, [
600
- ...query,
601
- {
602
- $set: WhereExpression.parseValuesInObject(data),
603
- },
604
- ]);
605
- return results.modifiedCount;
606
- }
607
- catch (error) {
608
- logger.log.error("database", "aggregate.update", error);
609
- throw error;
610
- }
611
- }
612
- /**
613
- * Unset the given columns
614
- */
615
- async unset(...columns) {
616
- try {
617
- const query = [];
618
- const filters = {};
619
- this.parse().forEach(pipeline => {
620
- if (pipeline.$match) {
621
- Object.assign(filters, pipeline.$match);
622
- }
623
- else {
624
- query.push(pipeline);
625
- }
626
- });
627
- Aggregate._events.trigger("updating", this);
628
- const results = await this.query.updateMany(this.collection, filters, [
629
- ...query,
630
- {
631
- $unset: columns,
632
- },
633
- ]);
634
- return results.modifiedCount;
635
- }
636
- catch (error) {
637
- logger.log.error("database", "aggregate.unset", error);
638
- console.log(error);
639
- throw error;
640
- }
641
- }
642
- /**
643
- * Execute the query
644
- */
645
- async execute() {
646
- const results = (await this.query.aggregate(this.collection, this.parse())).toArray();
647
- return results;
648
- }
649
- /**
650
- * Count the results
651
- */
652
- async count() {
653
- this.groupBy(null, {
654
- total: expressions.count(),
655
- });
656
- const results = await this.execute();
657
- return reinforcements.get(results, "0.total", 0);
658
- }
659
- /**
660
- * Parse pipelines
661
- */
662
- parse() {
663
- return parsePipelines.parsePipelines(this.pipelines);
664
- }
665
- /**
666
- * Reset the pipeline
667
- */
668
- reset() {
669
- this.pipelines = [];
670
- return this;
671
- }
672
- /**
673
- * Clone the aggregate class
674
- */
675
- clone() {
676
- const aggregate = new this.constructor(this.collection);
677
- aggregate.pipelines = this.pipelines.slice();
678
- return aggregate;
679
- }
680
- }exports.Aggregate=Aggregate;//# sourceMappingURL=aggregate.js.map