@warlock.js/cascade 1.0.5 → 1.0.6

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 (275) hide show
  1. package/cjs/aggregate/DeselectPipeline.d.ts +10 -0
  2. package/cjs/aggregate/DeselectPipeline.d.ts.map +1 -0
  3. package/cjs/aggregate/DeselectPipeline.js +17 -0
  4. package/cjs/aggregate/DeselectPipeline.js.map +1 -0
  5. package/cjs/aggregate/GeoNearPipeline.d.ts +34 -0
  6. package/cjs/aggregate/GeoNearPipeline.d.ts.map +1 -0
  7. package/cjs/aggregate/GeoNearPipeline.js +44 -0
  8. package/cjs/aggregate/GeoNearPipeline.js.map +1 -0
  9. package/cjs/aggregate/GroupByPipeline.d.ts +12 -0
  10. package/cjs/aggregate/GroupByPipeline.d.ts.map +1 -0
  11. package/cjs/aggregate/GroupByPipeline.js +28 -0
  12. package/cjs/aggregate/GroupByPipeline.js.map +1 -0
  13. package/cjs/aggregate/LimitPipeline.d.ts +10 -0
  14. package/cjs/aggregate/LimitPipeline.d.ts.map +1 -0
  15. package/cjs/aggregate/LimitPipeline.js +14 -0
  16. package/cjs/aggregate/LimitPipeline.js.map +1 -0
  17. package/cjs/aggregate/LookupPipeline.d.ts +19 -0
  18. package/cjs/aggregate/LookupPipeline.d.ts.map +1 -0
  19. package/cjs/aggregate/LookupPipeline.js +19 -0
  20. package/cjs/aggregate/LookupPipeline.js.map +1 -0
  21. package/cjs/aggregate/OrWherePipeline.d.ts +23 -0
  22. package/cjs/aggregate/OrWherePipeline.d.ts.map +1 -0
  23. package/cjs/aggregate/OrWherePipeline.js +42 -0
  24. package/cjs/aggregate/OrWherePipeline.js.map +1 -0
  25. package/cjs/aggregate/SelectPipeline.d.ts +10 -0
  26. package/cjs/aggregate/SelectPipeline.d.ts.map +1 -0
  27. package/cjs/aggregate/SelectPipeline.js +26 -0
  28. package/cjs/aggregate/SelectPipeline.js.map +1 -0
  29. package/cjs/aggregate/SkipPipeline.d.ts +10 -0
  30. package/cjs/aggregate/SkipPipeline.d.ts.map +1 -0
  31. package/cjs/aggregate/SkipPipeline.js +14 -0
  32. package/cjs/aggregate/SkipPipeline.js.map +1 -0
  33. package/cjs/aggregate/SortByPipeline.d.ts +10 -0
  34. package/cjs/aggregate/SortByPipeline.d.ts.map +1 -0
  35. package/cjs/aggregate/SortByPipeline.js +18 -0
  36. package/cjs/aggregate/SortByPipeline.js.map +1 -0
  37. package/cjs/aggregate/SortPipeline.d.ts +11 -0
  38. package/cjs/aggregate/SortPipeline.d.ts.map +1 -0
  39. package/cjs/aggregate/SortPipeline.js +18 -0
  40. package/cjs/aggregate/SortPipeline.js.map +1 -0
  41. package/cjs/aggregate/SortRandomPipeline.d.ts +10 -0
  42. package/cjs/aggregate/SortRandomPipeline.d.ts.map +1 -0
  43. package/cjs/aggregate/SortRandomPipeline.js +16 -0
  44. package/cjs/aggregate/SortRandomPipeline.js.map +1 -0
  45. package/cjs/aggregate/UnwindPipeline.d.ts +14 -0
  46. package/cjs/aggregate/UnwindPipeline.d.ts.map +1 -0
  47. package/cjs/aggregate/UnwindPipeline.js +19 -0
  48. package/cjs/aggregate/UnwindPipeline.js.map +1 -0
  49. package/cjs/aggregate/WhereExpression.d.ts +17 -0
  50. package/cjs/aggregate/WhereExpression.d.ts.map +1 -0
  51. package/cjs/aggregate/WhereExpression.js +149 -0
  52. package/cjs/aggregate/WhereExpression.js.map +1 -0
  53. package/cjs/aggregate/WhereExpressionPipeline.d.ts +10 -0
  54. package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
  55. package/cjs/aggregate/WhereExpressionPipeline.js +15 -0
  56. package/cjs/aggregate/WhereExpressionPipeline.js.map +1 -0
  57. package/cjs/aggregate/WherePipeline.d.ts +13 -0
  58. package/cjs/aggregate/WherePipeline.d.ts.map +1 -0
  59. package/cjs/aggregate/WherePipeline.js +12 -0
  60. package/cjs/aggregate/WherePipeline.js.map +1 -0
  61. package/cjs/aggregate/aggregate.d.ts +358 -0
  62. package/cjs/aggregate/aggregate.d.ts.map +1 -0
  63. package/cjs/aggregate/aggregate.js +680 -0
  64. package/cjs/aggregate/aggregate.js.map +1 -0
  65. package/cjs/aggregate/expressions.d.ts +361 -0
  66. package/cjs/aggregate/expressions.d.ts.map +1 -0
  67. package/cjs/aggregate/expressions.js +536 -0
  68. package/cjs/aggregate/expressions.js.map +1 -0
  69. package/cjs/aggregate/index.d.ts +21 -0
  70. package/cjs/aggregate/index.d.ts.map +1 -0
  71. package/cjs/aggregate/parsePipelines.d.ts +5 -0
  72. package/cjs/aggregate/parsePipelines.d.ts.map +1 -0
  73. package/cjs/aggregate/parsePipelines.js +6 -0
  74. package/cjs/aggregate/parsePipelines.js.map +1 -0
  75. package/cjs/aggregate/pipeline.d.ts +31 -0
  76. package/cjs/aggregate/pipeline.d.ts.map +1 -0
  77. package/cjs/aggregate/pipeline.js +42 -0
  78. package/cjs/aggregate/pipeline.js.map +1 -0
  79. package/cjs/aggregate/types.d.ts +8 -0
  80. package/cjs/aggregate/types.d.ts.map +1 -0
  81. package/cjs/aggregate/types.js +31 -0
  82. package/cjs/aggregate/types.js.map +1 -0
  83. package/cjs/blueprint/blueprint-column.d.ts +82 -0
  84. package/cjs/blueprint/blueprint-column.d.ts.map +1 -0
  85. package/cjs/blueprint/blueprint.d.ts +162 -0
  86. package/cjs/blueprint/blueprint.d.ts.map +1 -0
  87. package/cjs/blueprint/blueprint.js +340 -0
  88. package/cjs/blueprint/blueprint.js.map +1 -0
  89. package/cjs/blueprint/index.d.ts +3 -0
  90. package/cjs/blueprint/index.d.ts.map +1 -0
  91. package/cjs/blueprint/model-blueprint.d.ts +15 -0
  92. package/cjs/blueprint/model-blueprint.d.ts.map +1 -0
  93. package/cjs/blueprint/model-blueprint.js +16 -0
  94. package/cjs/blueprint/model-blueprint.js.map +1 -0
  95. package/cjs/casts/arrayOf.d.ts +5 -0
  96. package/cjs/casts/arrayOf.d.ts.map +1 -0
  97. package/cjs/casts/arrayOf.js +18 -0
  98. package/cjs/casts/arrayOf.js.map +1 -0
  99. package/cjs/casts/cast-email.d.ts +2 -0
  100. package/cjs/casts/cast-email.d.ts.map +1 -0
  101. package/cjs/casts/cast-email.js +5 -0
  102. package/cjs/casts/cast-email.js.map +1 -0
  103. package/cjs/casts/castModel.d.ts +3 -0
  104. package/cjs/casts/castModel.d.ts.map +1 -0
  105. package/cjs/casts/castModel.js +49 -0
  106. package/cjs/casts/castModel.js.map +1 -0
  107. package/cjs/casts/expiresAfter.d.ts +3 -0
  108. package/cjs/casts/expiresAfter.d.ts.map +1 -0
  109. package/cjs/casts/expiresAfter.js +5 -0
  110. package/cjs/casts/expiresAfter.js.map +1 -0
  111. package/cjs/casts/index.d.ts +9 -0
  112. package/cjs/casts/index.d.ts.map +1 -0
  113. package/cjs/casts/oneOf.d.ts +3 -0
  114. package/cjs/casts/oneOf.d.ts.map +1 -0
  115. package/cjs/casts/oneOf.js +22 -0
  116. package/cjs/casts/oneOf.js.map +1 -0
  117. package/cjs/casts/random-string.d.ts +2 -0
  118. package/cjs/casts/random-string.d.ts.map +1 -0
  119. package/cjs/casts/random-string.js +5 -0
  120. package/cjs/casts/random-string.js.map +1 -0
  121. package/cjs/casts/randomInteger.d.ts +2 -0
  122. package/cjs/casts/randomInteger.d.ts.map +1 -0
  123. package/cjs/casts/randomInteger.js +7 -0
  124. package/cjs/casts/randomInteger.js.map +1 -0
  125. package/cjs/casts/shapedArray.d.ts +26 -0
  126. package/cjs/casts/shapedArray.d.ts.map +1 -0
  127. package/cjs/casts/shapedArray.js +100 -0
  128. package/cjs/casts/shapedArray.js.map +1 -0
  129. package/cjs/config.d.ts +4 -0
  130. package/cjs/config.d.ts.map +1 -0
  131. package/cjs/config.js +10 -0
  132. package/cjs/config.js.map +1 -0
  133. package/cjs/connection.d.ts +45 -0
  134. package/cjs/connection.d.ts.map +1 -0
  135. package/cjs/connection.js +98 -0
  136. package/cjs/connection.js.map +1 -0
  137. package/cjs/database.d.ts +49 -0
  138. package/cjs/database.d.ts.map +1 -0
  139. package/cjs/database.js +85 -0
  140. package/cjs/database.js.map +1 -0
  141. package/cjs/index.d.ts +11 -1
  142. package/cjs/index.d.ts.map +1 -1
  143. package/cjs/index.js +1 -5
  144. package/cjs/index.js.map +1 -1
  145. package/cjs/migration/index.d.ts +4 -0
  146. package/cjs/migration/index.d.ts.map +1 -0
  147. package/cjs/migration/migrate.d.ts +13 -0
  148. package/cjs/migration/migrate.d.ts.map +1 -0
  149. package/cjs/migration/migrate.js +72 -0
  150. package/cjs/migration/migrate.js.map +1 -0
  151. package/cjs/migration/migration-office.d.ts +21 -0
  152. package/cjs/migration/migration-office.d.ts.map +1 -0
  153. package/cjs/migration/migration-office.js +40 -0
  154. package/cjs/migration/migration-office.js.map +1 -0
  155. package/cjs/migration/migration-officer.d.ts +33 -0
  156. package/cjs/migration/migration-officer.d.ts.map +1 -0
  157. package/cjs/migration/migration-officer.js +55 -0
  158. package/cjs/migration/migration-officer.js.map +1 -0
  159. package/cjs/migration/types.d.ts +34 -0
  160. package/cjs/migration/types.d.ts.map +1 -0
  161. package/cjs/model/ModelAggregate.d.ts +84 -0
  162. package/cjs/model/ModelAggregate.d.ts.map +1 -0
  163. package/cjs/model/ModelAggregate.js +164 -0
  164. package/cjs/model/ModelAggregate.js.map +1 -0
  165. package/cjs/model/ModelSync.d.ts +74 -0
  166. package/cjs/model/ModelSync.d.ts.map +1 -0
  167. package/cjs/model/ModelSync.js +215 -0
  168. package/cjs/model/ModelSync.js.map +1 -0
  169. package/cjs/model/RelationshipWithMany.d.ts +24 -0
  170. package/cjs/model/RelationshipWithMany.d.ts.map +1 -0
  171. package/cjs/model/RelationshipWithMany.js +42 -0
  172. package/cjs/model/RelationshipWithMany.js.map +1 -0
  173. package/cjs/model/base-model.d.ts +155 -0
  174. package/cjs/model/base-model.d.ts.map +1 -0
  175. package/cjs/model/base-model.js +230 -0
  176. package/cjs/model/base-model.js.map +1 -0
  177. package/cjs/model/crud-model.d.ts +117 -0
  178. package/cjs/model/crud-model.d.ts.map +1 -0
  179. package/cjs/model/crud-model.js +352 -0
  180. package/cjs/model/crud-model.js.map +1 -0
  181. package/cjs/model/index.d.ts +10 -0
  182. package/cjs/model/index.d.ts.map +1 -0
  183. package/cjs/model/joinable.d.ts +87 -0
  184. package/cjs/model/joinable.d.ts.map +1 -0
  185. package/cjs/model/joinable.js +155 -0
  186. package/cjs/model/joinable.js.map +1 -0
  187. package/cjs/model/master-mind.d.ts +44 -0
  188. package/cjs/model/master-mind.d.ts.map +1 -0
  189. package/cjs/model/master-mind.js +129 -0
  190. package/cjs/model/master-mind.js.map +1 -0
  191. package/cjs/model/model-events.d.ts +57 -0
  192. package/cjs/model/model-events.d.ts.map +1 -0
  193. package/cjs/model/model-events.js +102 -0
  194. package/cjs/model/model-events.js.map +1 -0
  195. package/cjs/model/model.d.ts +401 -0
  196. package/cjs/model/model.d.ts.map +1 -0
  197. package/cjs/model/model.js +1028 -0
  198. package/cjs/model/model.js.map +1 -0
  199. package/cjs/model/types.d.ts +113 -0
  200. package/cjs/model/types.d.ts.map +1 -0
  201. package/cjs/model/types.js +11 -0
  202. package/cjs/model/types.js.map +1 -0
  203. package/cjs/query/index.d.ts +2 -0
  204. package/cjs/query/index.d.ts.map +1 -0
  205. package/cjs/query/query.d.ts +228 -0
  206. package/cjs/query/query.d.ts.map +1 -0
  207. package/cjs/query/query.js +675 -0
  208. package/cjs/query/query.js.map +1 -0
  209. package/cjs/query/types.d.ts +56 -0
  210. package/cjs/query/types.d.ts.map +1 -0
  211. package/cjs/types.d.ts +62 -0
  212. package/cjs/types.d.ts.map +1 -0
  213. package/cjs/utils/connectToDatabase.d.ts +3 -0
  214. package/cjs/utils/connectToDatabase.d.ts.map +1 -0
  215. package/cjs/utils/connectToDatabase.js +3 -0
  216. package/cjs/utils/connectToDatabase.js.map +1 -0
  217. package/cjs/utils/deep-diff.d.ts +9 -0
  218. package/cjs/utils/deep-diff.d.ts.map +1 -0
  219. package/cjs/utils/deep-diff.js +42 -0
  220. package/cjs/utils/deep-diff.js.map +1 -0
  221. package/cjs/utils/dropAllDatabaseIndexes.d.ts +2 -0
  222. package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
  223. package/cjs/utils/dropAllDatabaseIndexes.js +10 -0
  224. package/cjs/utils/dropAllDatabaseIndexes.js.map +1 -0
  225. package/cjs/utils/index.d.ts +5 -0
  226. package/cjs/utils/index.d.ts.map +1 -0
  227. package/cjs/utils/joinable-proxy.d.ts +3 -0
  228. package/cjs/utils/joinable-proxy.d.ts.map +1 -0
  229. package/cjs/utils/joinable-proxy.js +14 -0
  230. package/cjs/utils/joinable-proxy.js.map +1 -0
  231. package/cjs/utils/listDatabaseIndexes.d.ts +4 -0
  232. package/cjs/utils/listDatabaseIndexes.d.ts.map +1 -0
  233. package/cjs/utils/listDatabaseIndexes.js +101 -0
  234. package/cjs/utils/listDatabaseIndexes.js.map +1 -0
  235. package/cjs/utils/onceConnected.d.ts +2 -0
  236. package/cjs/utils/onceConnected.d.ts.map +1 -0
  237. package/cjs/utils/onceConnected.js +8 -0
  238. package/cjs/utils/onceConnected.js.map +1 -0
  239. package/package.json +1 -1
  240. package/cjs/commands/create-new-app/get-app-path.d.ts +0 -2
  241. package/cjs/commands/create-new-app/get-app-path.d.ts.map +0 -1
  242. package/cjs/commands/create-new-app/get-app-path.js +0 -8
  243. package/cjs/commands/create-new-app/get-app-path.js.map +0 -1
  244. package/cjs/commands/create-new-app/index.d.ts +0 -2
  245. package/cjs/commands/create-new-app/index.d.ts.map +0 -1
  246. package/cjs/commands/create-new-app/index.js +0 -44
  247. package/cjs/commands/create-new-app/index.js.map +0 -1
  248. package/cjs/commands/create-new-app/select-app-type.d.ts +0 -2
  249. package/cjs/commands/create-new-app/select-app-type.d.ts.map +0 -1
  250. package/cjs/commands/create-new-app/types.d.ts +0 -9
  251. package/cjs/commands/create-new-app/types.d.ts.map +0 -1
  252. package/cjs/commands/create-warlock-app/index.d.ts +0 -3
  253. package/cjs/commands/create-warlock-app/index.d.ts.map +0 -1
  254. package/cjs/commands/create-warlock-app/index.js +0 -18
  255. package/cjs/commands/create-warlock-app/index.js.map +0 -1
  256. package/cjs/helpers/app.d.ts +0 -51
  257. package/cjs/helpers/app.d.ts.map +0 -1
  258. package/cjs/helpers/app.js +0 -127
  259. package/cjs/helpers/app.js.map +0 -1
  260. package/cjs/helpers/exec.d.ts +0 -10
  261. package/cjs/helpers/exec.d.ts.map +0 -1
  262. package/cjs/helpers/exec.js +0 -69
  263. package/cjs/helpers/exec.js.map +0 -1
  264. package/cjs/helpers/package-manager.d.ts +0 -6
  265. package/cjs/helpers/package-manager.d.ts.map +0 -1
  266. package/cjs/helpers/package-manager.js +0 -22
  267. package/cjs/helpers/package-manager.js.map +0 -1
  268. package/cjs/helpers/paths.d.ts +0 -4
  269. package/cjs/helpers/paths.d.ts.map +0 -1
  270. package/cjs/helpers/paths.js +0 -8
  271. package/cjs/helpers/paths.js.map +0 -1
  272. package/cjs/helpers/project-builder-helpers.d.ts +0 -7
  273. package/cjs/helpers/project-builder-helpers.d.ts.map +0 -1
  274. package/cjs/helpers/project-builder-helpers.js +0 -44
  275. package/cjs/helpers/project-builder-helpers.js.map +0 -1
@@ -0,0 +1,675 @@
1
+ 'use strict';var events=require('@mongez/events'),reinforcements=require('@mongez/reinforcements'),database=require('../database.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var events__default=/*#__PURE__*/_interopDefault(events);class Query {
2
+ /**
3
+ * Connection instance
4
+ */
5
+ database = database.database;
6
+ /**
7
+ * class event name
8
+ */
9
+ eventName = "mongodb.query." + reinforcements.Random.id();
10
+ /**
11
+ * Set the database instance
12
+ */
13
+ setDatabase(database) {
14
+ this.database = database;
15
+ return this;
16
+ }
17
+ /**
18
+ * Get collection query for the given collection name
19
+ */
20
+ query(collection) {
21
+ return this.database.collection(collection);
22
+ }
23
+ /**
24
+ * Get current active session from database object
25
+ */
26
+ getCurrentSession() {
27
+ return this.database.getActiveSession()?.session;
28
+ }
29
+ /**
30
+ * Create a new document in the given collection
31
+ */
32
+ async create(collection, data, { session = this.getCurrentSession() } = {}) {
33
+ const query = this.query(collection);
34
+ await this.trigger("creating saving", {
35
+ collection,
36
+ data,
37
+ query,
38
+ isMany: false,
39
+ });
40
+ const result = await query.insertOne(data, {
41
+ session,
42
+ });
43
+ const document = {
44
+ ...data,
45
+ _id: result.insertedId,
46
+ };
47
+ await this.trigger("created saved", {
48
+ collection,
49
+ document,
50
+ isMany: false,
51
+ });
52
+ return document;
53
+ }
54
+ /**
55
+ * Create many documents in the given collection
56
+ */
57
+ async createMany(collection, data, { session = this.getCurrentSession() } = {}) {
58
+ const query = this.query(collection);
59
+ await this.trigger("creating saving", {
60
+ collection,
61
+ data,
62
+ query,
63
+ isMany: true,
64
+ });
65
+ const result = await query.insertMany(data, {
66
+ session,
67
+ });
68
+ const documents = data.map((data, index) => ({
69
+ ...data,
70
+ _id: result.insertedIds[index],
71
+ }));
72
+ await this.trigger("created saved", {
73
+ collection,
74
+ documents,
75
+ isMany: true,
76
+ });
77
+ return documents;
78
+ }
79
+ /**
80
+ * Update model by the given id
81
+ */
82
+ async update(collection, filter, data, { session = this.getCurrentSession() } = {}) {
83
+ // get the query of the current collection
84
+ const query = this.query(collection);
85
+ await this.trigger("updating saving", {
86
+ collection,
87
+ filter,
88
+ data,
89
+ query,
90
+ isMany: false,
91
+ });
92
+ const result = await query.findOneAndUpdate(filter, {
93
+ $set: data,
94
+ }, {
95
+ returnDocument: "after",
96
+ session,
97
+ });
98
+ const output = result.ok ? result.value : null;
99
+ await this.trigger("updated saved", {
100
+ collection,
101
+ filter,
102
+ data,
103
+ document: output,
104
+ isMany: false,
105
+ });
106
+ return output;
107
+ }
108
+ /**
109
+ * Update many documents
110
+ */
111
+ async updateMany(collection, filter, updateOptions, options, { session = this.getCurrentSession() } = {}) {
112
+ const query = this.query(collection);
113
+ if (!options?.session) {
114
+ options = {
115
+ ...options,
116
+ session,
117
+ };
118
+ }
119
+ await this.trigger("updating saving", {
120
+ collection,
121
+ filter,
122
+ updateOptions,
123
+ options,
124
+ query,
125
+ isMany: true,
126
+ });
127
+ const result = await query.updateMany(filter, updateOptions, options);
128
+ await this.trigger("updated saved", {
129
+ collection,
130
+ filter,
131
+ updateOptions,
132
+ options,
133
+ result: result,
134
+ isMany: true,
135
+ });
136
+ return result;
137
+ }
138
+ /**
139
+ * Replace the entire document for the given document id with the given new data
140
+ */
141
+ async replace(collection, filter, data, { session = this.getCurrentSession() } = {}) {
142
+ const query = this.query(collection);
143
+ await this.trigger("replacing saving", {
144
+ collection,
145
+ filter,
146
+ data,
147
+ query,
148
+ });
149
+ const result = await query.findOneAndReplace(filter, data, {
150
+ returnDocument: "after",
151
+ session,
152
+ });
153
+ const output = result.ok ? result.value : null;
154
+ await this.trigger("replaced saved", {
155
+ collection,
156
+ filter,
157
+ data,
158
+ output,
159
+ });
160
+ return output;
161
+ }
162
+ /**
163
+ * Find and update the document for the given filter with the given data or create a new document/record
164
+ * if filter has no matching
165
+ */
166
+ async upsert(collection, filter, data, { session = this.getCurrentSession() } = {}) {
167
+ // get the query of the current collection
168
+ const query = this.query(collection);
169
+ await this.trigger("upserting saving", {
170
+ collection,
171
+ filter,
172
+ data,
173
+ query,
174
+ });
175
+ // execute the update operation
176
+ const result = await query.findOneAndUpdate(filter, {
177
+ $set: data,
178
+ }, {
179
+ returnDocument: "after",
180
+ upsert: true,
181
+ session,
182
+ });
183
+ const output = result.ok ? result.value : null;
184
+ await this.trigger("upserted saved", {
185
+ collection,
186
+ filter,
187
+ data,
188
+ output,
189
+ });
190
+ return output;
191
+ }
192
+ /**
193
+ * Perform a single delete operation for the given collection
194
+ */
195
+ async deleteOne(collection, filter, { session = this.getCurrentSession() } = {}) {
196
+ const query = this.query(collection);
197
+ await this.trigger("deleting", {
198
+ collection,
199
+ filter,
200
+ query,
201
+ isMany: false,
202
+ });
203
+ const result = await query.deleteOne(filter, {
204
+ session,
205
+ });
206
+ const isDeleted = result.deletedCount > 0;
207
+ await this.trigger("deleted", {
208
+ collection,
209
+ filter,
210
+ isDeleted,
211
+ count: result.deletedCount,
212
+ result,
213
+ isMany: false,
214
+ });
215
+ return isDeleted;
216
+ }
217
+ /**
218
+ * Delete multiple documents from the given collection
219
+ */
220
+ async delete(collection, filter = {}, { session = this.getCurrentSession() } = {}) {
221
+ const query = this.query(collection);
222
+ await this.trigger("deleting", {
223
+ collection,
224
+ filter,
225
+ query,
226
+ isMany: true,
227
+ });
228
+ const result = await query.deleteMany(filter, {
229
+ session,
230
+ });
231
+ const output = result.deletedCount;
232
+ await this.trigger("deleted", {
233
+ collection,
234
+ filter,
235
+ output,
236
+ result,
237
+ count: result.deletedCount,
238
+ isMany: true,
239
+ });
240
+ return output;
241
+ }
242
+ /**
243
+ * Alias to delete
244
+ */
245
+ async deleteMany(collection, filter = {}, { session = this.getCurrentSession() } = {}) {
246
+ return this.delete(collection, filter, { session });
247
+ }
248
+ /**
249
+ * Check if document exists for the given collection with the given filter
250
+ */
251
+ async exists(collection, filter = {}, { session = this.getCurrentSession() } = {}) {
252
+ const query = this.query(collection);
253
+ await this.trigger("counting", {
254
+ collection,
255
+ filter,
256
+ query,
257
+ });
258
+ const output = await query.countDocuments(filter, {
259
+ session,
260
+ });
261
+ await this.trigger("counted", {
262
+ collection,
263
+ filter,
264
+ output,
265
+ });
266
+ return output > 0;
267
+ }
268
+ /**
269
+ * Find a single document for the given collection with the given filter
270
+ */
271
+ async first(collection, filter = {}, findOptions, { session = this.getCurrentSession() } = {}) {
272
+ const query = this.query(collection);
273
+ if (!findOptions?.session) {
274
+ findOptions = {
275
+ ...findOptions,
276
+ session,
277
+ };
278
+ }
279
+ await this.trigger("fetching", {
280
+ collection,
281
+ filter,
282
+ query,
283
+ findOptions,
284
+ isMany: false,
285
+ });
286
+ const output = await query.findOne(filter, findOptions);
287
+ await this.trigger("fetched", {
288
+ collection,
289
+ filter,
290
+ output,
291
+ isMany: false,
292
+ count: output ? 1 : 0,
293
+ });
294
+ return output;
295
+ }
296
+ /**
297
+ * Find last document for the given collection with the given filter
298
+ */
299
+ async last(collection, filter = {}, options, { session = this.getCurrentSession() } = {}) {
300
+ const query = this.query(collection);
301
+ if (!options?.session) {
302
+ options = {
303
+ ...options,
304
+ session,
305
+ };
306
+ }
307
+ await this.trigger("fetching", {
308
+ collection,
309
+ filter,
310
+ query,
311
+ options,
312
+ isMany: false,
313
+ });
314
+ const results = await query
315
+ .find(filter, options)
316
+ .sort({
317
+ id: "desc",
318
+ })
319
+ .limit(1)
320
+ .toArray();
321
+ const output = results.length > 0 ? results[0] : null;
322
+ await this.trigger("fetched", {
323
+ collection,
324
+ filter,
325
+ output,
326
+ isMany: false,
327
+ count: results.length,
328
+ });
329
+ return output;
330
+ }
331
+ /**
332
+ * Find multiple document for the given collection with the given filter
333
+ */
334
+ async list(collection, filter = {}, queryHandler, findOptions, { session = this.getCurrentSession() } = {}) {
335
+ const query = this.query(collection);
336
+ if (!findOptions?.session) {
337
+ findOptions = {
338
+ ...findOptions,
339
+ session,
340
+ };
341
+ }
342
+ await this.trigger("fetching", {
343
+ collection,
344
+ filter,
345
+ query,
346
+ findOptions,
347
+ isMany: true,
348
+ });
349
+ const findOperation = query.find(filter, findOptions);
350
+ if (queryHandler) {
351
+ queryHandler(findOperation);
352
+ }
353
+ const documents = await findOperation.toArray();
354
+ await this.trigger(this.eventName + ".fetched", {
355
+ collection,
356
+ filter,
357
+ documents,
358
+ findOptions,
359
+ isMany: true,
360
+ count: documents.length,
361
+ });
362
+ return documents;
363
+ }
364
+ /**
365
+ * Find latest documents for the given collection with the given filter
366
+ */
367
+ async latest(collection, filter = {}, findOptions, { session = this.getCurrentSession() } = {}) {
368
+ const query = this.query(collection);
369
+ if (!findOptions?.session) {
370
+ findOptions = {
371
+ ...findOptions,
372
+ session,
373
+ };
374
+ }
375
+ await this.trigger("fetching", {
376
+ collection,
377
+ filter,
378
+ query,
379
+ findOptions,
380
+ isMany: true,
381
+ });
382
+ const documents = await query
383
+ .find(filter, findOptions)
384
+ .sort({
385
+ id: "desc",
386
+ })
387
+ .toArray();
388
+ await this.trigger("fetched", {
389
+ collection,
390
+ filter,
391
+ documents,
392
+ findOptions,
393
+ isMany: true,
394
+ count: documents.length,
395
+ });
396
+ return documents;
397
+ }
398
+ /**
399
+ * Find oldest documents for the given collection with the given filter
400
+ */
401
+ async oldest(collection, filter = {}, findOptions, { session = this.getCurrentSession() } = {}) {
402
+ const query = this.query(collection);
403
+ if (!findOptions?.session) {
404
+ findOptions = {
405
+ ...findOptions,
406
+ session,
407
+ };
408
+ }
409
+ await this.trigger("fetching", {
410
+ collection,
411
+ filter,
412
+ query,
413
+ findOptions,
414
+ isMany: true,
415
+ });
416
+ const documents = await query
417
+ .find(filter, findOptions)
418
+ .sort({
419
+ id: "asc",
420
+ })
421
+ .toArray();
422
+ await this.trigger("fetched", {
423
+ collection,
424
+ filter,
425
+ documents,
426
+ findOptions,
427
+ count: documents.length,
428
+ isMany: true,
429
+ });
430
+ return documents;
431
+ }
432
+ /**
433
+ * Get distinct values for the given collection with the given filter
434
+ */
435
+ async distinct(collection, field, filter = {}, { session = this.getCurrentSession() } = {}) {
436
+ const query = this.query(collection);
437
+ await this.trigger("fetching", {
438
+ collection,
439
+ filter,
440
+ query,
441
+ isMany: true,
442
+ });
443
+ const data = await query.distinct(field, filter, {
444
+ session,
445
+ });
446
+ await this.trigger("fetched", {
447
+ collection,
448
+ filter,
449
+ data,
450
+ count: data.length,
451
+ isMany: true,
452
+ });
453
+ return data;
454
+ }
455
+ /**
456
+ * Count documents for the given collection with the given filter
457
+ */
458
+ async count(collection, filter = {}, options, { session = this.getCurrentSession() } = {}) {
459
+ const query = this.query(collection);
460
+ if (!options?.session) {
461
+ options = {
462
+ ...options,
463
+ session,
464
+ };
465
+ }
466
+ await this.trigger("counting", {
467
+ collection,
468
+ filter,
469
+ query,
470
+ });
471
+ const output = await query.countDocuments(filter, options);
472
+ await this.trigger("counted", {
473
+ collection,
474
+ filter,
475
+ output,
476
+ });
477
+ return output;
478
+ }
479
+ /**
480
+ * Create an explain fetch query
481
+ */
482
+ async explain(collection, filter = {}, findOptions, verbosity, { session = this.getCurrentSession() } = {}) {
483
+ const query = this.query(collection);
484
+ if (!findOptions?.session) {
485
+ findOptions = {
486
+ ...findOptions,
487
+ session,
488
+ };
489
+ }
490
+ await this.trigger("explaining", {
491
+ collection,
492
+ filter,
493
+ query,
494
+ });
495
+ const result = await query
496
+ .find(filter, {
497
+ ...(findOptions || {}),
498
+ explain: true,
499
+ })
500
+ .explain(verbosity);
501
+ await this.trigger("explained", {
502
+ collection,
503
+ filter,
504
+ result,
505
+ });
506
+ return result;
507
+ }
508
+ /**
509
+ * Create aggregate query
510
+ */
511
+ async aggregate(collection, pipeline, options, { session = this.getCurrentSession() } = {}) {
512
+ const query = this.query(collection);
513
+ if (!options?.session) {
514
+ options = {
515
+ ...options,
516
+ session,
517
+ };
518
+ }
519
+ await this.trigger("aggregating", {
520
+ collection,
521
+ pipeline,
522
+ options,
523
+ query,
524
+ });
525
+ const aggregate = await query.aggregate(pipeline, options);
526
+ await this.trigger("aggregated", {
527
+ collection,
528
+ pipeline,
529
+ options,
530
+ aggregate,
531
+ });
532
+ return aggregate;
533
+ }
534
+ /**
535
+ * Trigger event
536
+ */
537
+ async trigger(eventName, payload = {}) {
538
+ return Promise.all(eventName
539
+ .split(" ")
540
+ .map(async (eventName) => events__default.default.triggerAllAsync(this.eventName + "." + eventName, payload)));
541
+ }
542
+ /**
543
+ * Listen on creating event
544
+ */
545
+ onCreating(callback) {
546
+ this.on("creating", callback);
547
+ return this;
548
+ }
549
+ /**
550
+ * Listen on created event
551
+ */
552
+ onCreated(callback) {
553
+ this.on("created", callback);
554
+ return this;
555
+ }
556
+ /**
557
+ * Listen on updating event
558
+ */
559
+ onUpdating(callback) {
560
+ this.on("updating", callback);
561
+ return this;
562
+ }
563
+ /**
564
+ * Listen on updated event
565
+ */
566
+ onUpdated(callback) {
567
+ this.on("updated", callback);
568
+ return this;
569
+ }
570
+ /**
571
+ * Listen on upserting event
572
+ */
573
+ onUpserting(callback) {
574
+ this.on("upserting", callback);
575
+ return this;
576
+ }
577
+ /**
578
+ * Listen on upserted event
579
+ */
580
+ onUpserted(callback) {
581
+ this.on("upserted", callback);
582
+ return this;
583
+ }
584
+ /**
585
+ * Listen on replacing event
586
+ */
587
+ onReplacing(callback) {
588
+ this.on("replacing", callback);
589
+ return this;
590
+ }
591
+ /**
592
+ * Listen on replaced event
593
+ */
594
+ onReplaced(callback) {
595
+ this.on("replaced", callback);
596
+ return this;
597
+ }
598
+ /**
599
+ * Listen on saving event
600
+ */
601
+ onSaving(callback) {
602
+ this.on("saving", callback);
603
+ return this;
604
+ }
605
+ /**
606
+ * Listen on saved event
607
+ */
608
+ onSaved(callback) {
609
+ this.on("saved", callback);
610
+ return this;
611
+ }
612
+ /**
613
+ * Listen on fetching event
614
+ */
615
+ onFetching(callback) {
616
+ this.on("fetching", callback);
617
+ return this;
618
+ }
619
+ /**
620
+ * Listen on fetched event
621
+ */
622
+ onFetched(callback) {
623
+ this.on("fetched", callback);
624
+ return this;
625
+ }
626
+ /**
627
+ * Listen on counting event
628
+ */
629
+ onCounting(callback) {
630
+ this.on("counting", callback);
631
+ return this;
632
+ }
633
+ /**
634
+ * Listen on counted event
635
+ */
636
+ onCounted(callback) {
637
+ this.on("counted", callback);
638
+ return this;
639
+ }
640
+ /**
641
+ * Listen on explaining event
642
+ */
643
+ onExplaining(callback) {
644
+ this.on("explaining", callback);
645
+ return this;
646
+ }
647
+ /**
648
+ * Listen on explained event
649
+ */
650
+ onExplained(callback) {
651
+ this.on("explained", callback);
652
+ return this;
653
+ }
654
+ /**
655
+ * Listen on deleting event
656
+ */
657
+ onDeleting(callback) {
658
+ this.on("deleting", callback);
659
+ return this;
660
+ }
661
+ /**
662
+ * Listen on deleted event
663
+ */
664
+ onDeleted(callback) {
665
+ this.on("deleted", callback);
666
+ return this;
667
+ }
668
+ /**
669
+ * Listen to the given event
670
+ */
671
+ on(event, callback) {
672
+ events__default.default.on(this.eventName + "." + event, callback);
673
+ }
674
+ }
675
+ const query = new Query();exports.Query=Query;exports.query=query;//# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sources":["../../src/query/query.ts"],"sourcesContent":[null],"names":["database","Random","events"],"mappings":"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"}