@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,215 @@
1
+ 'use strict';var reinforcements=require('@mongez/reinforcements');class ModelSync {
2
+ model;
3
+ columns;
4
+ embedMethod;
5
+ /**
6
+ * What do do when model is deleted
7
+ */
8
+ whenDelete = "unset";
9
+ /**
10
+ * Embed on create
11
+ */
12
+ embedOnCreate = "";
13
+ /**
14
+ * Sync mode
15
+ */
16
+ syncMode = "single";
17
+ /**
18
+ * Query runner using `when` method
19
+ */
20
+ queryRunner;
21
+ /**
22
+ * Define when should the synced model starts to update when any of the given columns is updated in the original model
23
+ */
24
+ _updateWhenChange;
25
+ /**
26
+ * Constructor
27
+ */
28
+ constructor(model, columns, embedMethod = "embedData") {
29
+ this.model = model;
30
+ this.columns = columns;
31
+ this.embedMethod = embedMethod;
32
+ //
33
+ }
34
+ /**
35
+ * Define when should the synced model starts to update when any of the given columns is updated in the original model
36
+ */
37
+ updateWhenChange(columns) {
38
+ this._updateWhenChange = Array.isArray(columns) ? columns : [columns];
39
+ return this;
40
+ }
41
+ /**
42
+ * Set query runner
43
+ */
44
+ where(queryRunner) {
45
+ this.queryRunner = queryRunner;
46
+ return this;
47
+ }
48
+ /**
49
+ * Unset on delete
50
+ */
51
+ unsetOnDelete() {
52
+ this.whenDelete = "unset";
53
+ return this;
54
+ }
55
+ /**
56
+ * Ignore on delete
57
+ */
58
+ ignoreOnDelete() {
59
+ this.whenDelete = "ignore";
60
+ return this;
61
+ }
62
+ /**
63
+ * Remove all matched documents on delete to be fully deleted
64
+ */
65
+ removeOnDelete() {
66
+ this.whenDelete = "remove";
67
+ return this;
68
+ }
69
+ /**
70
+ * Embed on create to injected model one the original model is created
71
+ */
72
+ embedOnCreateFrom(column) {
73
+ this.embedOnCreate = column;
74
+ return this;
75
+ }
76
+ /**
77
+ * Mark as many sync
78
+ */
79
+ syncMany() {
80
+ this.syncMode = "many";
81
+ return this;
82
+ }
83
+ /**
84
+ * Start syncing the model
85
+ */
86
+ async sync(model, saveMode, oldModel) {
87
+ if (saveMode === "update") {
88
+ return this.syncUpdate(model, oldModel);
89
+ }
90
+ if (!this.embedOnCreate)
91
+ return;
92
+ const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
93
+ const syncedModel = await this.model.first({
94
+ id: model.get(this.embedOnCreate + ".id"),
95
+ });
96
+ if (!syncedModel)
97
+ return;
98
+ try {
99
+ const modelData = typeof model[this.embedMethod] !== "undefined"
100
+ ? model[this.embedMethod]
101
+ : model.data;
102
+ for (const column of columns) {
103
+ if (this.syncMode === "single") {
104
+ syncedModel.set(column, modelData);
105
+ }
106
+ else {
107
+ syncedModel.associate(column, modelData);
108
+ }
109
+ }
110
+ await syncedModel.save();
111
+ }
112
+ catch (error) {
113
+ console.log("Error in Sync", error.message);
114
+ console.log(model);
115
+ throw error;
116
+ }
117
+ }
118
+ /**
119
+ * Sync update
120
+ */
121
+ async syncUpdate(model, oldModel) {
122
+ if (this._updateWhenChange && oldModel) {
123
+ // now check if any of the columns has changed
124
+ // if all of them are the same, then we don't need to update
125
+ if (this._updateWhenChange.every(column => reinforcements.areEqual(model.get(column), oldModel.get(column)))) {
126
+ return;
127
+ }
128
+ }
129
+ const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
130
+ const whereOptions = {};
131
+ for (const column of columns) {
132
+ whereOptions[column + ".id"] = model.id;
133
+ }
134
+ const query = this.model.aggregate().orWhere(whereOptions);
135
+ if (this.queryRunner) {
136
+ this.queryRunner(query);
137
+ }
138
+ const models = await query.get();
139
+ try {
140
+ const modelData = typeof model[this.embedMethod] !== "undefined"
141
+ ? model[this.embedMethod]
142
+ : model.embeddedData;
143
+ for (const updatingModel of models) {
144
+ for (const column of columns) {
145
+ if (this.syncMode === "single") {
146
+ updatingModel.set(column, modelData);
147
+ }
148
+ else {
149
+ if (column.includes(".")) {
150
+ // if column includes dot, then it's a nested column
151
+ // so we need to get the top document key as it should be an array.
152
+ const [topKey, nestedKey] = column.split(".");
153
+ const documentsList = updatingModel.get(topKey) || [];
154
+ // as we're updating, so there should be at least one document
155
+ if (documentsList?.length === 0)
156
+ continue;
157
+ // now we need to find the document that has the same id as the model we're updating
158
+ const documentIndex = documentsList.findIndex((document) => document[nestedKey]?.id === model.get("id"));
159
+ // if document is not found, then we don't need to update
160
+ if (documentIndex === -1)
161
+ continue;
162
+ // now we need to update the document
163
+ documentsList[documentIndex][nestedKey] = modelData;
164
+ // and finally set the updated documents list
165
+ updatingModel.set(topKey, documentsList);
166
+ }
167
+ else {
168
+ // otherwise, it is a direct column update so we can just set it
169
+ updatingModel.reassociate(column, modelData);
170
+ }
171
+ }
172
+ }
173
+ // disable casting so we can save the data as it is
174
+ await updatingModel.save(undefined, {
175
+ cast: false,
176
+ });
177
+ }
178
+ }
179
+ catch (error) {
180
+ console.log("Error in Sync", error.message);
181
+ console.log(model);
182
+ throw error;
183
+ }
184
+ }
185
+ /**
186
+ * Sync model destruction
187
+ */
188
+ async syncDestruction(model) {
189
+ const columns = Array.isArray(this.columns) ? this.columns : [this.columns];
190
+ const query = {};
191
+ for (const column of columns) {
192
+ query[column + ".id"] = model.get("id");
193
+ }
194
+ const models = await this.model
195
+ .aggregate()
196
+ .orWhere(query)
197
+ .get();
198
+ for (const currentModel of models) {
199
+ if (this.whenDelete === "unset") {
200
+ for (const column of columns) {
201
+ if (this.syncMode === "single") {
202
+ currentModel.unset(column);
203
+ }
204
+ else {
205
+ currentModel.disassociate(column, model);
206
+ }
207
+ }
208
+ await currentModel.save();
209
+ }
210
+ else if (this.whenDelete === "remove") {
211
+ await currentModel.destroy();
212
+ }
213
+ }
214
+ }
215
+ }exports.ModelSync=ModelSync;//# sourceMappingURL=ModelSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelSync.js","sources":["../../src/model/ModelSync.ts"],"sourcesContent":[null],"names":["areEqual"],"mappings":"wEAMa,SAAS,CAAA;AA8BR,IAAA,KAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,WAAA,CAAA;AA/BZ;;AAEG;IACO,UAAU,GAAa,OAAO,CAAC;AAEzC;;AAEG;IACO,aAAa,GAAG,EAAE,CAAC;AAE7B;;AAEG;IACO,QAAQ,GAAsB,QAAQ,CAAC;AAEjD;;AAEG;AACO,IAAA,WAAW,CAA0C;AAE/D;;AAEG;AACO,IAAA,iBAAiB,CAAY;AAEvC;;AAEG;AACH,IAAA,WAAA,CACY,KAAmB,EACnB,OAA0B,EAC1B,cAAc,WAAW,EAAA;QAFzB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QACnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QAC1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAc;;KAGpC;AAED;;AAEG;AACI,IAAA,gBAAgB,CAAC,OAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;AAEtE,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;AACI,IAAA,KAAK,CAAC,WAAmD,EAAA;AAC9D,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAE/B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAE1B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAE3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAE3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAE5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AAEvB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;AACI,IAAA,MAAM,IAAI,CACf,KAAY,EACZ,QAA6B,EAC7B,QAAgB,EAAA;QAEhB,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAU,MAAO,IAAI,CAAC,KAAa,CAAC,KAAK,CAAC;YACzD,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC1C,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,IAAI;YACF,MAAM,SAAS,GACb,OAAQ,KAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,WAAW;AACrD,kBAAG,KAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,kBAAE,KAAK,CAAC,IAAI,CAAC;AAEjB,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,oBAAA,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC1C,iBAAA;AACF,aAAA;AAED,YAAA,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;AAC1B,SAAA;AAAC,QAAA,OAAO,KAAU,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,YAAA,MAAM,KAAK,CAAC;AACb,SAAA;KACF;AAED;;AAEG;AACI,IAAA,MAAM,UAAU,CAAC,KAAY,EAAE,QAAgB,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,QAAQ,EAAE;;;YAGtC,IACE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,IACjCA,uBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAClD,EACD;gBACA,OAAO;AACR,aAAA;AACF,SAAA;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5E,MAAM,YAAY,GAAQ,EAAE,CAAC;AAE7B,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AACzC,SAAA;AAED,QAAA,MAAM,KAAK,GAAI,IAAI,CAAC,KAAa,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,MAAM,GAAY,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAE1C,IAAI;YACF,MAAM,SAAS,GACb,OAAQ,KAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,WAAW;AACrD,kBAAG,KAAa,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,kBAAE,KAAK,CAAC,YAAY,CAAC;AAEzB,YAAA,KAAK,MAAM,aAAa,IAAI,MAAM,EAAE;AAClC,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,wBAAA,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtC,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;;AAGxB,4BAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAC9C,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;;AAEtD,4BAAA,IAAI,aAAa,EAAE,MAAM,KAAK,CAAC;gCAAE,SAAS;;4BAE1C,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAC3C,CAAC,QAAa,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/D,CAAC;;4BAEF,IAAI,aAAa,KAAK,CAAC,CAAC;gCAAE,SAAS;;4BAGnC,aAAa,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;;AAGpD,4BAAA,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC1C,yBAAA;AAAM,6BAAA;;AAEL,4BAAA,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9C,yBAAA;AACF,qBAAA;AACF,iBAAA;;AAGD,gBAAA,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE;AAClC,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAU,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,YAAA,MAAM,KAAK,CAAC;AACb,SAAA;KACF;AAED;;AAEG;IACI,MAAM,eAAe,CAAC,KAAY,EAAA;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAQ,EAAE,CAAC;AAEtB,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,MAAM,MAAM,GAAY,MAAO,IAAI,CAAC,KAAa;AAC9C,aAAA,SAAS,EAAE;aACX,OAAO,CAAC,KAAK,CAAC;AACd,aAAA,GAAG,EAAE,CAAC;AAET,QAAA,KAAK,MAAM,YAAY,IAAI,MAAM,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;AAC/B,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,wBAAA,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,qBAAA;AAAM,yBAAA;AACL,wBAAA,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,qBAAA;AACF,iBAAA;AAED,gBAAA,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvC,gBAAA,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;AACF"}
@@ -0,0 +1,29 @@
1
+ import { GenericObject } from "@mongez/reinforcements";
2
+ import { Model } from "./model";
3
+ import { Filter } from "./types";
4
+ export declare class RelationshipWithMany<T> {
5
+ protected model: Model;
6
+ protected relatedModel: typeof Model;
7
+ protected column: string;
8
+ /**
9
+ * Constructor
10
+ */
11
+ constructor(model: Model, relatedModel: typeof Model, column: string);
12
+ /**
13
+ * Add the given model to the relationship
14
+ */
15
+ add(model: Model | GenericObject): Promise<void>;
16
+ /**
17
+ * Create and add the given model to the relationship
18
+ */
19
+ create(data: any): Promise<Model>;
20
+ /**
21
+ * Remove the given model from the relationship
22
+ */
23
+ remove(model: Model): Promise<void>;
24
+ /**
25
+ * Get all related models
26
+ */
27
+ list(filter?: Filter): Promise<T[]>;
28
+ }
29
+ //# sourceMappingURL=RelationshipWithMany.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationshipWithMany.d.ts","sourceRoot":"","sources":["../../src/model/RelationshipWithMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAiB,MAAM,SAAS,CAAC;AAEhD,qBAAa,oBAAoB,CAAC,CAAC;IAK/B,SAAS,CAAC,KAAK,EAAE,KAAK;IACtB,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK;IACpC,SAAS,CAAC,MAAM,EAAE,MAAM;IAN1B;;OAEG;gBAES,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,KAAK,EAC1B,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACU,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IAU7C;;OAEG;IACU,MAAM,CAAC,IAAI,EAAE,GAAG;IAM7B;;OAEG;IACU,MAAM,CAAC,KAAK,EAAE,KAAK;IAIhC;;OAEG;IACU,IAAI,CAAC,MAAM,GAAE,MAAW;CAiBtC"}
@@ -0,0 +1,52 @@
1
+ 'use strict';var model=require('./model.js');class RelationshipWithMany {
2
+ model;
3
+ relatedModel;
4
+ column;
5
+ /**
6
+ * Constructor
7
+ */
8
+ constructor(model, relatedModel, column) {
9
+ this.model = model;
10
+ this.relatedModel = relatedModel;
11
+ this.column = column;
12
+ //
13
+ }
14
+ /**
15
+ * Add the given model to the relationship
16
+ */
17
+ async add(model$1) {
18
+ if (model$1 instanceof model.Model === false) {
19
+ model$1 = new this.relatedModel(model$1);
20
+ }
21
+ await model$1.save();
22
+ await this.model.associate(this.column, model$1).save();
23
+ }
24
+ /**
25
+ * Create and add the given model to the relationship
26
+ */
27
+ async create(data) {
28
+ data[this.column] = this.model.id;
29
+ return await this.relatedModel.create(data);
30
+ }
31
+ /**
32
+ * Remove the given model from the relationship
33
+ */
34
+ async remove(model) {
35
+ await this.model.disassociate(this.column, model).save();
36
+ }
37
+ /**
38
+ * Get all related models
39
+ */
40
+ async list(filter = {}) {
41
+ const embeddedDocuments = this.model.get(this.column) || [];
42
+ const embeddedDocumentsIds = embeddedDocuments.map(
43
+ // because it may be an array of ids or an array of documents
44
+ (document) => document.id || document);
45
+ const documents = (await this.relatedModel.list({
46
+ id: embeddedDocumentsIds,
47
+ ...filter,
48
+ }));
49
+ this.model.set(this.column, documents);
50
+ return documents;
51
+ }
52
+ }exports.RelationshipWithMany=RelationshipWithMany;//# sourceMappingURL=RelationshipWithMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelationshipWithMany.js","sources":["../../src/model/RelationshipWithMany.ts"],"sourcesContent":[null],"names":["model","Model"],"mappings":"mDAIa,oBAAoB,CAAA;AAKnB,IAAA,KAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,MAAA,CAAA;AANZ;;AAEG;AACH,IAAA,WAAA,CACY,KAAY,EACZ,YAA0B,EAC1B,MAAc,EAAA;QAFd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;;KAGzB;AAED;;AAEG;IACI,MAAM,GAAG,CAACA,OAA4B,EAAA;AAC3C,QAAA,IAAIA,OAAK,YAAYC,WAAK,KAAK,KAAK,EAAE;YACpCD,OAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAACA,OAAK,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,MAAMA,OAAK,CAAC,IAAI,EAAE,CAAC;AAEnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAEA,OAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KACvD;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,IAAS,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAElC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;AAEG;IACI,MAAM,MAAM,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KAC1D;AAED;;AAEG;AACI,IAAA,MAAM,IAAI,CAAC,MAAA,GAAiB,EAAE,EAAA;AACnC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAE5D,QAAA,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG;;QAEhD,CAAC,QAAuB,KAAK,QAAQ,CAAC,EAAE,IAAI,QAAQ,CACrD,CAAC;QAEF,MAAM,SAAS,IAAI,MAAO,IAAI,CAAC,YAAoB,CAAC,IAAI,CAAC;AACvD,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,GAAG,MAAM;AACV,SAAA,CAAC,CAAQ,CAAC;QAEX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEvC,QAAA,OAAO,SAAS,CAAC;KAClB;AACF"}
@@ -0,0 +1,148 @@
1
+ import { type Database } from "../database";
2
+ import type { Model } from "./model";
3
+ import { ModelEvents } from "./model-events";
4
+ import { FactoryCreatorCallback, ModelDeleteStrategy, type ChildModel, type Document } from "./types";
5
+ export declare abstract class BaseModel {
6
+ /**
7
+ * Collection Name
8
+ */
9
+ static collection: string;
10
+ /**
11
+ * Connection instance
12
+ */
13
+ static database: Database;
14
+ /**
15
+ * Model associated output
16
+ */
17
+ static output?: any;
18
+ /**
19
+ * Missing key symbol
20
+ */
21
+ static MISSING_KEY: symbol;
22
+ /**
23
+ * Define the initial value of the id
24
+ */
25
+ static initialId?: number;
26
+ /**
27
+ * Define the amount to eb incremented by for the next generated id
28
+ */
29
+ static incrementIdBy?: number;
30
+ /**
31
+ * Primary id column
32
+ */
33
+ static primaryIdColumn: string;
34
+ /**
35
+ * Query instance
36
+ */
37
+ static query: import("../query/query").Query;
38
+ /**
39
+ * Define the delete method
40
+ *
41
+ * @default true
42
+ */
43
+ static deleteStrategy: ModelDeleteStrategy;
44
+ /**
45
+ * Items per page
46
+ */
47
+ static perPage: number;
48
+ /**
49
+ * If set to true, then only the original data and the data in the casts property will be saved
50
+ * If set to false, all data will be saved
51
+ */
52
+ static isStrict: boolean;
53
+ /**
54
+ * Get increment id by
55
+ */
56
+ static getIncrementIdBy(): number;
57
+ /**
58
+ * Get initial id
59
+ */
60
+ static getInitialId(): number;
61
+ /**
62
+ * Generate next id
63
+ */
64
+ static genNextId(): Promise<number>;
65
+ /**
66
+ * Get last id of current model
67
+ */
68
+ static getLastId(): Promise<number>;
69
+ /**
70
+ * Get an instance of child class
71
+ */
72
+ protected static self(data: Document): any;
73
+ /**
74
+ * Get collection name
75
+ */
76
+ getCollection(): string;
77
+ /**
78
+ * Get collection query
79
+ */
80
+ getQuery(): any;
81
+ /**
82
+ * Get database instance
83
+ */
84
+ getDatabase(): Database;
85
+ /**
86
+ * Get static property
87
+ */
88
+ getStaticProperty(property: keyof typeof BaseModel): any;
89
+ /**
90
+ * Prepare model for response
91
+ */
92
+ toJSON(): Promise<any>;
93
+ /**
94
+ * Get current output instance
95
+ */
96
+ getOutput(data?: Document): any;
97
+ /**
98
+ * Get model events instance
99
+ */
100
+ static events<T extends Model>(this: ChildModel<T>): ModelEvents;
101
+ /**
102
+ * Get model events for current model
103
+ */
104
+ getModelEvents(): ModelEvents;
105
+ /**
106
+ * Get base model events
107
+ */
108
+ getBaseModelEvents(): ModelEvents;
109
+ /**
110
+ * Get model blueprint
111
+ */
112
+ static blueprint(): import("../blueprint/model-blueprint").ModelBlueprint;
113
+ /**
114
+ * Define what columns should be embedded when model document is embedded in another document.
115
+ */
116
+ static embedOnly(...columns: string[]): {
117
+ model: typeof BaseModel;
118
+ embeddedKey: string[];
119
+ };
120
+ /**
121
+ * Define the embedded getter key to be used when embedding the model
122
+ */
123
+ static embed(key: string | string[]): {
124
+ model: typeof BaseModel;
125
+ embeddedKey: string | string[];
126
+ };
127
+ /**
128
+ * Embed only id
129
+ */
130
+ static get embedOnlyId(): {
131
+ model: typeof BaseModel;
132
+ embeddedKey: string;
133
+ };
134
+ /**
135
+ * Document Factory
136
+ */
137
+ protected static documentFactory: FactoryCreatorCallback;
138
+ /**
139
+ * Get user factory
140
+ */
141
+ static get factory(): {
142
+ /**
143
+ * Create documents based on the given number of records
144
+ */
145
+ create: (size: number, recordCallback?: FactoryCreatorCallback) => Promise<void>;
146
+ };
147
+ }
148
+ //# sourceMappingURL=base-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../src/model/base-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAejB,8BAAsB,SAAS;IAC7B;;OAEG;IACH,OAAc,UAAU,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,OAAc,QAAQ,EAAE,QAAQ,CAAY;IAE5C;;OAEG;IACH,OAAc,MAAM,CAAC,EAAE,GAAG,CAAC;IAE3B;;OAEG;IACH,OAAc,WAAW,SAAyB;IAElD;;OAEG;IACH,OAAc,SAAS,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,OAAc,aAAa,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,OAAc,eAAe,SAAQ;IAErC;;OAEG;IACH,OAAc,KAAK,iCAAS;IAE5B;;;;OAIG;IACH,OAAc,cAAc,EAAE,mBAAmB,CACf;IAElC;;OAEG;IACH,OAAc,OAAO,SAAM;IAE3B;;;OAGG;IACH,OAAc,QAAQ,UAAQ;IAE9B;;OAEG;WACW,gBAAgB;IAO9B;;OAEG;WACW,YAAY;IAO1B;;OAEG;WACiB,SAAS;IAQ7B;;OAEG;WACiB,SAAS;IAI7B;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ;IAIpC;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;OAEG;IACI,QAAQ;IAIf;;OAEG;IACI,WAAW,IAAI,QAAQ;IAI9B;;OAEG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,OAAO,SAAS;IAIzD;;OAEG;IACU,MAAM;IAcnB;;OAEG;IACI,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ;IAOhC;;OAEG;WACW,MAAM,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAIzD;;OAEG;IACI,cAAc;IAIrB;;OAEG;IACI,kBAAkB;IAIzB;;OAEG;WACW,SAAS;IAIvB;;OAEG;WACW,SAAS,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE;;;;IAO5C;;OAEG;WACW,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;;;;IAO1C;;OAEG;IACH,WAAkB,WAAW;;;MAK5B;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAOtD;IAEF;;OAEG;IACH,WAAkB,OAAO;QAErB;;WAEG;uBAEK,MAAM,mBACI,sBAAsB;MAO3C;CACF"}
@@ -0,0 +1,212 @@
1
+ 'use strict';var faker=require('@faker-js/faker'),reinforcements=require('@mongez/reinforcements'),modelBlueprint=require('../blueprint/model-blueprint.js'),database=require('../database.js'),query=require('../query/query.js'),masterMind=require('./master-mind.js'),modelEvents$1=require('./model-events.js'),types=require('./types.js');const modelEvents = new Map();
2
+ const getModelEvent = (collection) => {
3
+ let eventsInstance = modelEvents.get(collection);
4
+ if (!eventsInstance) {
5
+ eventsInstance = new modelEvents$1.ModelEvents(collection);
6
+ modelEvents.set(collection, eventsInstance);
7
+ }
8
+ return eventsInstance;
9
+ };
10
+ class BaseModel {
11
+ /**
12
+ * Collection Name
13
+ */
14
+ static collection;
15
+ /**
16
+ * Connection instance
17
+ */
18
+ static database = database.database;
19
+ /**
20
+ * Model associated output
21
+ */
22
+ static output;
23
+ /**
24
+ * Missing key symbol
25
+ */
26
+ static MISSING_KEY = Symbol("MISSING_KEY");
27
+ /**
28
+ * Define the initial value of the id
29
+ */
30
+ static initialId;
31
+ /**
32
+ * Define the amount to eb incremented by for the next generated id
33
+ */
34
+ static incrementIdBy;
35
+ /**
36
+ * Primary id column
37
+ */
38
+ static primaryIdColumn = "id";
39
+ /**
40
+ * Query instance
41
+ */
42
+ static query = query.query;
43
+ /**
44
+ * Define the delete method
45
+ *
46
+ * @default true
47
+ */
48
+ static deleteStrategy = types.ModelDeleteStrategy.moveToTrash;
49
+ /**
50
+ * Items per page
51
+ */
52
+ static perPage = 15;
53
+ /**
54
+ * If set to true, then only the original data and the data in the casts property will be saved
55
+ * If set to false, all data will be saved
56
+ */
57
+ static isStrict = true;
58
+ /**
59
+ * Get increment id by
60
+ */
61
+ static getIncrementIdBy() {
62
+ if (this.incrementIdBy)
63
+ return this.incrementIdBy;
64
+ // return Random number
65
+ return reinforcements.Random.int(1, 999);
66
+ }
67
+ /**
68
+ * Get initial id
69
+ */
70
+ static getInitialId() {
71
+ if (this.initialId)
72
+ return this.initialId;
73
+ // return Random number
74
+ return reinforcements.Random.int(10000, 499999);
75
+ }
76
+ /**
77
+ * Generate next id
78
+ */
79
+ static async genNextId() {
80
+ return await masterMind.masterMind.generateNextId(this.collection, this.getIncrementIdBy(), this.getInitialId());
81
+ }
82
+ /**
83
+ * Get last id of current model
84
+ */
85
+ static async getLastId() {
86
+ return await masterMind.masterMind.getLastId(this.collection);
87
+ }
88
+ /**
89
+ * Get an instance of child class
90
+ */
91
+ static self(data) {
92
+ return new this(data);
93
+ }
94
+ /**
95
+ * Get collection name
96
+ */
97
+ getCollection() {
98
+ return this.getStaticProperty("collection");
99
+ }
100
+ /**
101
+ * Get collection query
102
+ */
103
+ getQuery() {
104
+ return this.getStaticProperty("query");
105
+ }
106
+ /**
107
+ * Get database instance
108
+ */
109
+ getDatabase() {
110
+ return this.getStaticProperty("database");
111
+ }
112
+ /**
113
+ * Get static property
114
+ */
115
+ getStaticProperty(property) {
116
+ return this.constructor[property];
117
+ }
118
+ /**
119
+ * Prepare model for response
120
+ */
121
+ async toJSON() {
122
+ // get static output class
123
+ const Output = this.getStaticProperty("output");
124
+ // if the model has a Output class
125
+ if (Output) {
126
+ // then return the Output instance and call `toJSON` method
127
+ return await new Output(reinforcements.clone(this.data)).toJSON();
128
+ }
129
+ // otherwise return the data object
130
+ return this.publicData;
131
+ }
132
+ /**
133
+ * Get current output instance
134
+ */
135
+ getOutput(data) {
136
+ // get static output class
137
+ const Output = this.getStaticProperty("output");
138
+ return Output ? new Output(data) : data;
139
+ }
140
+ /**
141
+ * Get model events instance
142
+ */
143
+ static events() {
144
+ return getModelEvent(this.collection ?? "__baseModel__");
145
+ }
146
+ /**
147
+ * Get model events for current model
148
+ */
149
+ getModelEvents() {
150
+ return getModelEvent(this.getCollection());
151
+ }
152
+ /**
153
+ * Get base model events
154
+ */
155
+ getBaseModelEvents() {
156
+ return getModelEvent("__baseModel__");
157
+ }
158
+ /**
159
+ * Get model blueprint
160
+ */
161
+ static blueprint() {
162
+ return modelBlueprint.modelBlueprint(this);
163
+ }
164
+ /**
165
+ * Define what columns should be embedded when model document is embedded in another document.
166
+ */
167
+ static embedOnly(...columns) {
168
+ return {
169
+ model: this,
170
+ embeddedKey: columns,
171
+ };
172
+ }
173
+ /**
174
+ * Define the embedded getter key to be used when embedding the model
175
+ */
176
+ static embed(key) {
177
+ return {
178
+ model: this,
179
+ embeddedKey: key,
180
+ };
181
+ }
182
+ /**
183
+ * Embed only id
184
+ */
185
+ static get embedOnlyId() {
186
+ return {
187
+ model: this,
188
+ embeddedKey: "onlyId",
189
+ };
190
+ }
191
+ /**
192
+ * Document Factory
193
+ */
194
+ static documentFactory = (_faker, _index) => {
195
+ throw new Error("Document factory is not defined, pass a callback to `factory.create` method or define `documentFactory` method in the model class");
196
+ };
197
+ /**
198
+ * Get user factory
199
+ */
200
+ static get factory() {
201
+ return {
202
+ /**
203
+ * Create documents based on the given number of records
204
+ */
205
+ create: async (size, recordCallback = this.documentFactory) => {
206
+ for (let i = 0; i < size; i++) {
207
+ await this.create(recordCallback(faker.faker, i));
208
+ }
209
+ },
210
+ };
211
+ }
212
+ }exports.BaseModel=BaseModel;//# sourceMappingURL=base-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-model.js","sources":["../../src/model/base-model.ts"],"sourcesContent":[null],"names":["ModelEvents","database","query","ModelDeleteStrategy","Random","masterMind","clone","modelBlueprint","faker"],"mappings":"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"}