@warlock.js/cascade 1.0.0

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