@futdevpro/nts-dynamo 1.15.154 → 1.15.156

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 (775) hide show
  1. package/README.md +26 -22
  2. package/__documentations/2026-08-22-bfr-ctm-018-content-free-endpoint-errors.md +54 -0
  3. package/__documentations/2026-08-22-content-free-process-error-boundary.md +105 -85
  4. package/build/_collections/app-version-header.util.d.ts +41 -41
  5. package/build/_collections/app-version-header.util.js +66 -66
  6. package/build/_collections/archive-service-registry.const.d.ts +15 -15
  7. package/build/_collections/archive-service-registry.const.js +14 -14
  8. package/build/_collections/archive.util.d.ts +12 -12
  9. package/build/_collections/archive.util.js +18 -18
  10. package/build/_collections/atlas-default-db-options.const.d.ts +2 -2
  11. package/build/_collections/atlas-default-db-options.const.js +9 -9
  12. package/build/_collections/client-safe-error.util.d.ts +38 -38
  13. package/build/_collections/client-safe-error.util.js +96 -96
  14. package/build/_collections/default-fallback-cache-max-age.const.d.ts +2 -2
  15. package/build/_collections/default-fallback-cache-max-age.const.js +5 -5
  16. package/build/_collections/default-not-found-page.const.d.ts +5 -5
  17. package/build/_collections/default-not-found-page.const.js +24 -24
  18. package/build/_collections/default-socket-path.const.d.ts +2 -2
  19. package/build/_collections/default-socket-path.const.js +5 -5
  20. package/build/_collections/field-encryption.util.d.ts +85 -85
  21. package/build/_collections/field-encryption.util.js +192 -192
  22. package/build/_collections/get-environment-settings.util.d.ts +2 -2
  23. package/build/_collections/get-environment-settings.util.js +43 -43
  24. package/build/_collections/global-settings.const.d.ts +6 -6
  25. package/build/_collections/global-settings.const.js +104 -104
  26. package/build/_collections/load-shed.util.d.ts +15 -15
  27. package/build/_collections/load-shed.util.js +42 -42
  28. package/build/_collections/mongo-reconnect-guard.util.d.ts +73 -73
  29. package/build/_collections/mongo-reconnect-guard.util.js +110 -110
  30. package/build/_collections/npm-token-check.util.d.ts +138 -138
  31. package/build/_collections/npm-token-check.util.js +301 -301
  32. package/build/_collections/security-headers.util.d.ts +16 -16
  33. package/build/_collections/security-headers.util.js +77 -77
  34. package/build/_collections/signed-url.util.d.ts +84 -84
  35. package/build/_collections/signed-url.util.js +145 -145
  36. package/build/_collections/star.controller.d.ts +7 -7
  37. package/build/_collections/star.controller.js +97 -97
  38. package/build/_collections/static-cache-control.util.d.ts +17 -17
  39. package/build/_collections/static-cache-control.util.js +23 -23
  40. package/build/_enums/data-model-type.enum.d.ts +13 -13
  41. package/build/_enums/data-model-type.enum.js +17 -17
  42. package/build/_enums/data-service-function.enum.d.ts +18 -18
  43. package/build/_enums/data-service-function.enum.js +24 -24
  44. package/build/_enums/predefined-data-types.enum.d.ts +15 -15
  45. package/build/_enums/predefined-data-types.enum.js +19 -19
  46. package/build/_enums/route-security.enum.d.ts +11 -11
  47. package/build/_enums/route-security.enum.js +15 -15
  48. package/build/_models/control-models/api-call-params.control-model.d.ts +79 -79
  49. package/build/_models/control-models/api-call-params.control-model.js +101 -101
  50. package/build/_models/control-models/app-ext-system-controls.control-model.d.ts +6 -6
  51. package/build/_models/control-models/app-ext-system-controls.control-model.js +10 -10
  52. package/build/_models/control-models/app-params.control-model.d.ts +51 -51
  53. package/build/_models/control-models/app-params.control-model.js +118 -118
  54. package/build/_models/control-models/app-system-controls.control-model.d.ts +7 -7
  55. package/build/_models/control-models/app-system-controls.control-model.js +11 -11
  56. package/build/_models/control-models/endpoint-params.control-model.d.ts +125 -119
  57. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  58. package/build/_models/control-models/endpoint-params.control-model.js +409 -484
  59. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  60. package/build/_models/control-models/http-settings.control-model.d.ts +17 -17
  61. package/build/_models/control-models/http-settings.control-model.js +34 -34
  62. package/build/_models/control-models/system-control.control-model.d.ts +5 -5
  63. package/build/_models/control-models/system-control.control-model.js +11 -11
  64. package/build/_models/data-models/schema-migration.data-model.d.ts +28 -28
  65. package/build/_models/data-models/schema-migration.data-model.js +46 -46
  66. package/build/_models/interfaces/app-version-header-settings.interface.d.ts +16 -16
  67. package/build/_models/interfaces/app-version-header-settings.interface.js +2 -2
  68. package/build/_models/interfaces/certification-settings.interface.d.ts +5 -5
  69. package/build/_models/interfaces/certification-settings.interface.js +2 -2
  70. package/build/_models/interfaces/compare-data-options.interface.d.ts +26 -26
  71. package/build/_models/interfaces/compare-data-options.interface.js +2 -2
  72. package/build/_models/interfaces/compare-data-result.interface.d.ts +12 -12
  73. package/build/_models/interfaces/compare-data-result.interface.js +2 -2
  74. package/build/_models/interfaces/cors-settings.interface.d.ts +51 -51
  75. package/build/_models/interfaces/cors-settings.interface.js +2 -2
  76. package/build/_models/interfaces/db-query-options.interface.d.ts +32 -32
  77. package/build/_models/interfaces/db-query-options.interface.js +2 -2
  78. package/build/_models/interfaces/environment-settings.interface.d.ts +34 -34
  79. package/build/_models/interfaces/environment-settings.interface.js +2 -2
  80. package/build/_models/interfaces/global-log-settings.interface.d.ts +145 -145
  81. package/build/_models/interfaces/global-log-settings.interface.js +2 -2
  82. package/build/_models/interfaces/global-service-settings.interface.d.ts +30 -30
  83. package/build/_models/interfaces/global-service-settings.interface.js +2 -2
  84. package/build/_models/interfaces/global-settings.interface.d.ts +265 -265
  85. package/build/_models/interfaces/global-settings.interface.js +2 -2
  86. package/build/_models/interfaces/migration-entry.interface.d.ts +19 -19
  87. package/build/_models/interfaces/migration-entry.interface.js +2 -2
  88. package/build/_models/interfaces/mongo-transaction-settings.interface.d.ts +8 -8
  89. package/build/_models/interfaces/mongo-transaction-settings.interface.js +2 -2
  90. package/build/_models/interfaces/routing-module-settings.interface.d.ts +19 -19
  91. package/build/_models/interfaces/routing-module-settings.interface.js +2 -2
  92. package/build/_models/interfaces/security-headers-settings.interface.d.ts +41 -41
  93. package/build/_models/interfaces/security-headers-settings.interface.js +2 -2
  94. package/build/_models/interfaces/signed-url-verify-result.interface.d.ts +13 -13
  95. package/build/_models/interfaces/signed-url-verify-result.interface.js +2 -2
  96. package/build/_models/interfaces/static-client-settings.interface.d.ts +36 -36
  97. package/build/_models/interfaces/static-client-settings.interface.js +2 -2
  98. package/build/_models/types/db-update.type.d.ts +129 -129
  99. package/build/_models/types/db-update.type.js +2 -2
  100. package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.d.ts +5 -5
  101. package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.js +9 -9
  102. package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.d.ts +6 -6
  103. package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.js +10 -10
  104. package/build/_modules/account-security/_enums/account-session-state.type-enum.d.ts +6 -6
  105. package/build/_modules/account-security/_enums/account-session-state.type-enum.js +10 -10
  106. package/build/_modules/account-security/_models/account-challenge-adapter.interface.d.ts +8 -8
  107. package/build/_modules/account-security/_models/account-challenge-adapter.interface.js +2 -2
  108. package/build/_modules/account-security/_models/account-challenge-issued.interface.d.ts +6 -6
  109. package/build/_modules/account-security/_models/account-challenge-issued.interface.js +2 -2
  110. package/build/_modules/account-security/_models/account-challenge-record.interface.d.ts +12 -12
  111. package/build/_modules/account-security/_models/account-challenge-record.interface.js +2 -2
  112. package/build/_modules/account-security/_models/account-challenge-result.interface.d.ts +7 -7
  113. package/build/_modules/account-security/_models/account-challenge-result.interface.js +2 -2
  114. package/build/_modules/account-security/_models/account-challenge-settings.interface.d.ts +8 -8
  115. package/build/_modules/account-security/_models/account-challenge-settings.interface.js +2 -2
  116. package/build/_modules/account-security/_models/account-password-policy.interface.d.ts +11 -11
  117. package/build/_modules/account-security/_models/account-password-policy.interface.js +2 -2
  118. package/build/_modules/account-security/_models/account-password-verification.interface.d.ts +5 -5
  119. package/build/_modules/account-security/_models/account-password-verification.interface.js +2 -2
  120. package/build/_modules/account-security/_models/account-refresh-token-record.interface.d.ts +12 -12
  121. package/build/_modules/account-security/_models/account-refresh-token-record.interface.js +2 -2
  122. package/build/_modules/account-security/_models/account-session-adapter.interface.d.ts +18 -18
  123. package/build/_modules/account-security/_models/account-session-adapter.interface.js +2 -2
  124. package/build/_modules/account-security/_models/account-session-claims.interface.d.ts +7 -7
  125. package/build/_modules/account-security/_models/account-session-claims.interface.js +2 -2
  126. package/build/_modules/account-security/_models/account-session-context.interface.d.ts +6 -6
  127. package/build/_modules/account-security/_models/account-session-context.interface.js +2 -2
  128. package/build/_modules/account-security/_models/account-session-create.interface.d.ts +7 -7
  129. package/build/_modules/account-security/_models/account-session-create.interface.js +2 -2
  130. package/build/_modules/account-security/_models/account-session-record.interface.d.ts +20 -20
  131. package/build/_modules/account-security/_models/account-session-record.interface.js +2 -2
  132. package/build/_modules/account-security/_models/account-session-rotate.interface.d.ts +10 -10
  133. package/build/_modules/account-security/_models/account-session-rotate.interface.js +2 -2
  134. package/build/_modules/account-security/_models/account-session-settings.interface.d.ts +10 -10
  135. package/build/_modules/account-security/_models/account-session-settings.interface.js +2 -2
  136. package/build/_modules/account-security/_models/account-session-token-pair.interface.d.ts +8 -8
  137. package/build/_modules/account-security/_models/account-session-token-pair.interface.js +2 -2
  138. package/build/_modules/account-security/_models/account-session-view.interface.d.ts +12 -12
  139. package/build/_modules/account-security/_models/account-session-view.interface.js +2 -2
  140. package/build/_modules/account-security/account-challenge.control-service.d.ts +23 -23
  141. package/build/_modules/account-security/account-challenge.control-service.js +116 -116
  142. package/build/_modules/account-security/account-password.control-service.d.ts +23 -23
  143. package/build/_modules/account-security/account-password.control-service.js +213 -213
  144. package/build/_modules/account-security/account-session.control-service.d.ts +38 -38
  145. package/build/_modules/account-security/account-session.control-service.js +276 -276
  146. package/build/_modules/account-security/index.d.ts +23 -23
  147. package/build/_modules/account-security/index.js +15 -15
  148. package/build/_modules/admin-auth/_models/admin-api-key-config.interface.d.ts +31 -31
  149. package/build/_modules/admin-auth/_models/admin-api-key-config.interface.js +2 -2
  150. package/build/_modules/admin-auth/admin-api-key.auth-service.d.ts +89 -89
  151. package/build/_modules/admin-auth/admin-api-key.auth-service.js +194 -194
  152. package/build/_modules/admin-auth/index.d.ts +2 -2
  153. package/build/_modules/admin-auth/index.js +5 -5
  154. package/build/_modules/ai/_collections/ai-model-config-validator.util.d.ts +31 -31
  155. package/build/_modules/ai/_collections/ai-model-config-validator.util.js +94 -94
  156. package/build/_modules/ai/_collections/ai-provider-error.util.d.ts +43 -43
  157. package/build/_modules/ai/_collections/ai-provider-error.util.js +120 -120
  158. package/build/_modules/ai/_models/ai-input-interfaces.d.ts +53 -53
  159. package/build/_modules/ai/_models/ai-input-interfaces.js +5 -5
  160. package/build/_modules/ai/_models/ai-test-generation-result.interface.d.ts +16 -16
  161. package/build/_modules/ai/_models/ai-test-generation-result.interface.js +2 -2
  162. package/build/_modules/ai/_models/interfaces/dynts-ai-cost-event-callback.interface.d.ts +13 -13
  163. package/build/_modules/ai/_models/interfaces/dynts-ai-cost-event-callback.interface.js +2 -2
  164. package/build/_modules/ai/_models/interfaces/dynts-ai-cost-event.interface.d.ts +49 -49
  165. package/build/_modules/ai/_models/interfaces/dynts-ai-cost-event.interface.js +2 -2
  166. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.d.ts +16 -16
  167. package/build/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.js +2 -2
  168. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.d.ts +22 -22
  169. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.js +51 -51
  170. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.d.ts +33 -33
  171. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.js +55 -55
  172. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.d.ts +40 -40
  173. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.js +89 -89
  174. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.d.ts +27 -27
  175. package/build/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.js +28 -28
  176. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.d.ts +14 -14
  177. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.js +2 -2
  178. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.d.ts +10 -10
  179. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.js +2 -2
  180. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.d.ts +29 -29
  181. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.js +2 -2
  182. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.d.ts +18 -18
  183. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.js +2 -2
  184. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.d.ts +18 -18
  185. package/build/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.js +2 -2
  186. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.d.ts +80 -80
  187. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.js +166 -166
  188. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.d.ts +47 -47
  189. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.js +103 -103
  190. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.d.ts +34 -34
  191. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.js +59 -59
  192. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.d.ts +73 -73
  193. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.js +133 -133
  194. package/build/_modules/ai/_modules/ai-mock/fixtures/aim-text.fixtures.d.ts +8 -8
  195. package/build/_modules/ai/_modules/ai-mock/fixtures/aim-text.fixtures.js +650 -650
  196. package/build/_modules/ai/_modules/ai-mock/index.d.ts +14 -14
  197. package/build/_modules/ai/_modules/ai-mock/index.js +42 -42
  198. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.d.ts +35 -35
  199. package/build/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.js +117 -117
  200. package/build/_modules/ai/_modules/anthropic/index.d.ts +2 -2
  201. package/build/_modules/ai/_modules/anthropic/index.js +7 -7
  202. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.d.ts +84 -84
  203. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.js +467 -467
  204. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.d.ts +109 -109
  205. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.js +418 -418
  206. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.d.ts +28 -28
  207. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.js +73 -73
  208. package/build/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.d.ts +6 -6
  209. package/build/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.js +10 -10
  210. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.d.ts +51 -51
  211. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.js +132 -132
  212. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.d.ts +47 -47
  213. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.js +136 -136
  214. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.d.ts +17 -17
  215. package/build/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.js +76 -76
  216. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.d.ts +49 -49
  217. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.js +2 -2
  218. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.d.ts +8 -8
  219. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.js +2 -2
  220. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.d.ts +11 -11
  221. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.js +2 -2
  222. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.d.ts +12 -12
  223. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.js +2 -2
  224. package/build/_modules/ai/_modules/document-ai/index.d.ts +12 -12
  225. package/build/_modules/ai/_modules/document-ai/index.js +27 -27
  226. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.d.ts +34 -34
  227. package/build/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.js +128 -128
  228. package/build/_modules/ai/_modules/fdp-ai/index.d.ts +2 -2
  229. package/build/_modules/ai/_modules/fdp-ai/index.js +7 -7
  230. package/build/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.d.ts +2 -2
  231. package/build/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.js +8 -8
  232. package/build/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.d.ts +2 -2
  233. package/build/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.js +74 -74
  234. package/build/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.d.ts +2 -2
  235. package/build/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.js +67 -67
  236. package/build/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.js +42 -42
  237. package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.d.ts +5 -5
  238. package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.js +2 -2
  239. package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.js +6 -6
  240. package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.d.ts +51 -51
  241. package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.js +2 -2
  242. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.d.ts +21 -21
  243. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.js +187 -187
  244. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.d.ts +26 -26
  245. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.js +278 -278
  246. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.d.ts +22 -22
  247. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.js +322 -322
  248. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.d.ts +119 -119
  249. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.js +480 -480
  250. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.d.ts +25 -25
  251. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.js +103 -103
  252. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.d.ts +169 -169
  253. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.js +479 -479
  254. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts +229 -229
  255. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +617 -617
  256. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.d.ts +39 -39
  257. package/build/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.js +110 -110
  258. package/build/_modules/ai/_modules/open-ai/index.d.ts +14 -14
  259. package/build/_modules/ai/_modules/open-ai/index.js +55 -55
  260. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +51 -51
  261. package/build/_modules/ai/_services/ai-embedding-provider.registry.js +78 -78
  262. package/build/_modules/ai/_services/ai-embedding.service-base.d.ts +41 -41
  263. package/build/_modules/ai/_services/ai-embedding.service-base.js +11 -11
  264. package/build/_modules/ai/_services/ai-llm-chat.service-base.d.ts +39 -39
  265. package/build/_modules/ai/_services/ai-llm-chat.service-base.js +11 -11
  266. package/build/_modules/ai/_services/ai-llm.service-base.d.ts +148 -148
  267. package/build/_modules/ai/_services/ai-llm.service-base.js +378 -378
  268. package/build/_modules/ai/_services/ai-provider.service-base.d.ts +46 -46
  269. package/build/_modules/ai/_services/ai-provider.service-base.js +43 -43
  270. package/build/_modules/ai/_services/ai-user-key.service-base.d.ts +44 -44
  271. package/build/_modules/ai/_services/ai-user-key.service-base.js +14 -14
  272. package/build/_modules/ai/_services/lmstudio-embedding.control-service.d.ts +110 -110
  273. package/build/_modules/ai/_services/lmstudio-embedding.control-service.js +297 -297
  274. package/build/_modules/ai/index.d.ts +16 -16
  275. package/build/_modules/ai/index.js +30 -30
  276. package/build/_modules/artifact-compiler/_enums/artifact-compile-outcome.type-enum.d.ts +5 -5
  277. package/build/_modules/artifact-compiler/_enums/artifact-compile-outcome.type-enum.js +9 -9
  278. package/build/_modules/artifact-compiler/_enums/artifact-compile-stage.type-enum.d.ts +8 -8
  279. package/build/_modules/artifact-compiler/_enums/artifact-compile-stage.type-enum.js +12 -12
  280. package/build/_modules/artifact-compiler/_enums/artifact-retry-class.type-enum.d.ts +6 -6
  281. package/build/_modules/artifact-compiler/_enums/artifact-retry-class.type-enum.js +10 -10
  282. package/build/_modules/artifact-compiler/_models/artifact-compile.interface.d.ts +32 -32
  283. package/build/_modules/artifact-compiler/_models/artifact-compile.interface.js +2 -2
  284. package/build/_modules/artifact-compiler/artifact-compiler.control-service.d.ts +36 -36
  285. package/build/_modules/artifact-compiler/artifact-compiler.control-service.js +273 -273
  286. package/build/_modules/artifact-compiler/index.d.ts +5 -5
  287. package/build/_modules/artifact-compiler/index.js +11 -11
  288. package/build/_modules/assistant/_collections/ass-global-settings.const.d.ts +2 -2
  289. package/build/_modules/assistant/_collections/ass-global-settings.const.js +14 -14
  290. package/build/_modules/assistant/_collections/ass.util.d.ts +15 -15
  291. package/build/_modules/assistant/_collections/ass.util.js +42 -42
  292. package/build/_modules/assistant/_models/ass-global-settings.interface.d.ts +13 -13
  293. package/build/_modules/assistant/_models/ass-global-settings.interface.js +2 -2
  294. package/build/_modules/assistant/_services/ass-io.control-service.d.ts +19 -19
  295. package/build/_modules/assistant/_services/ass-io.control-service.js +57 -57
  296. package/build/_modules/assistant/_services/ass-main.control-service.d.ts +32 -32
  297. package/build/_modules/assistant/_services/ass-main.control-service.js +65 -65
  298. package/build/_modules/assistant/index.d.ts +6 -6
  299. package/build/_modules/assistant/index.js +18 -18
  300. package/build/_modules/bot/_collections/bot-default-commands.const.d.ts +2 -2
  301. package/build/_modules/bot/_collections/bot-default-commands.const.js +13 -13
  302. package/build/_modules/bot/_collections/bot-global-settings.const.d.ts +2 -2
  303. package/build/_modules/bot/_collections/bot-global-settings.const.js +31 -31
  304. package/build/_modules/bot/_models/bot-channel-wrapper.interface.d.ts +25 -25
  305. package/build/_modules/bot/_models/bot-channel-wrapper.interface.js +38 -38
  306. package/build/_modules/bot/_models/bot-command.interface.d.ts +7 -7
  307. package/build/_modules/bot/_models/bot-command.interface.js +2 -2
  308. package/build/_modules/bot/_models/bot-global-settings.interface.d.ts +85 -85
  309. package/build/_modules/bot/_models/bot-global-settings.interface.js +2 -2
  310. package/build/_modules/bot/_models/bot-last-mention-date.interface.d.ts +6 -6
  311. package/build/_modules/bot/_models/bot-last-mention-date.interface.js +2 -2
  312. package/build/_modules/bot/_models/bot-last-message-date.interface.d.ts +5 -5
  313. package/build/_modules/bot/_models/bot-last-message-date.interface.js +2 -2
  314. package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts +37 -37
  315. package/build/_modules/bot/_models/bot-message-wrapper.interface.js +54 -54
  316. package/build/_modules/bot/_models/bot-user-wrapper.interface.d.ts +23 -23
  317. package/build/_modules/bot/_models/bot-user-wrapper.interface.js +28 -28
  318. package/build/_modules/bot/_modules/discord-bot/_models/dib-platform.types.js +10 -10
  319. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.d.ts +69 -69
  320. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.js +497 -497
  321. package/build/_modules/bot/_modules/discord-bot/index.d.ts +1 -1
  322. package/build/_modules/bot/_modules/discord-bot/index.js +12 -12
  323. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.d.ts +16 -16
  324. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.js +42 -42
  325. package/build/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.d.ts +9 -9
  326. package/build/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.js +2 -2
  327. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.d.ts +59 -59
  328. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.js +349 -349
  329. package/build/_modules/bot/_modules/dynamo-bot/index.d.ts +3 -3
  330. package/build/_modules/bot/_modules/dynamo-bot/index.js +15 -15
  331. package/build/_modules/bot/_modules/slack-bot/_models/slb-platform.types.d.ts +6 -6
  332. package/build/_modules/bot/_modules/slack-bot/_models/slb-platform.types.js +2 -2
  333. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.d.ts +56 -56
  334. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.js +137 -137
  335. package/build/_modules/bot/_modules/slack-bot/index.d.ts +2 -2
  336. package/build/_modules/bot/_modules/slack-bot/index.js +12 -12
  337. package/build/_modules/bot/_modules/teams-bot/_models/teb-platform.types.d.ts +6 -6
  338. package/build/_modules/bot/_modules/teams-bot/_models/teb-platform.types.js +2 -2
  339. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.d.ts +56 -56
  340. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.js +137 -137
  341. package/build/_modules/bot/_modules/teams-bot/index.d.ts +2 -2
  342. package/build/_modules/bot/_modules/teams-bot/index.js +12 -12
  343. package/build/_modules/bot/_services/bot-commands.control-service.d.ts +12 -12
  344. package/build/_modules/bot/_services/bot-commands.control-service.js +117 -117
  345. package/build/_modules/bot/_services/bot-io.control-service.d.ts +23 -23
  346. package/build/_modules/bot/_services/bot-io.control-service.js +226 -226
  347. package/build/_modules/bot/_services/bot-main.control-service.d.ts +35 -35
  348. package/build/_modules/bot/_services/bot-main.control-service.js +195 -195
  349. package/build/_modules/bot/_services/bot-messaging-provider.service-base.d.ts +71 -71
  350. package/build/_modules/bot/_services/bot-messaging-provider.service-base.js +15 -15
  351. package/build/_modules/bot/_services/bot-routines.control-service.d.ts +13 -13
  352. package/build/_modules/bot/_services/bot-routines.control-service.js +59 -59
  353. package/build/_modules/bot/index.d.ts +17 -17
  354. package/build/_modules/bot/index.js +36 -36
  355. package/build/_modules/custom-data/custom-data.controller.d.ts +5 -5
  356. package/build/_modules/custom-data/custom-data.controller.js +56 -56
  357. package/build/_modules/custom-data/custom-data.data-service.d.ts +5 -5
  358. package/build/_modules/custom-data/custom-data.data-service.js +11 -11
  359. package/build/_modules/custom-data/get-custom-data-routing-module.util.d.ts +3 -3
  360. package/build/_modules/custom-data/get-custom-data-routing-module.util.js +16 -16
  361. package/build/_modules/custom-data/index.d.ts +4 -4
  362. package/build/_modules/custom-data/index.js +9 -9
  363. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.d.ts +58 -58
  364. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.js +168 -168
  365. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.d.ts +31 -31
  366. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.js +7 -7
  367. package/build/_modules/data-readers/index.d.ts +2 -2
  368. package/build/_modules/data-readers/index.js +10 -10
  369. package/build/_modules/defaults/_collections/default-endpoints.util.d.ts +248 -248
  370. package/build/_modules/defaults/_collections/default-endpoints.util.js +386 -386
  371. package/build/_modules/defaults/_models/default-user.data-model.d.ts +19 -19
  372. package/build/_modules/defaults/_models/default-user.data-model.js +72 -72
  373. package/build/_modules/defaults/_services/default-auth.service.d.ts +50 -50
  374. package/build/_modules/defaults/_services/default-auth.service.js +158 -158
  375. package/build/_modules/defaults/_services/default-socket-events.service.d.ts +23 -23
  376. package/build/_modules/defaults/_services/default-socket-events.service.js +60 -60
  377. package/build/_modules/defaults/_services/default-user.data-service.d.ts +24 -24
  378. package/build/_modules/defaults/_services/default-user.data-service.js +87 -87
  379. package/build/_modules/defaults/index.d.ts +5 -5
  380. package/build/_modules/defaults/index.js +17 -17
  381. package/build/_modules/discord-assistant/_collections/dias-global-settings.const.d.ts +2 -2
  382. package/build/_modules/discord-assistant/_collections/dias-global-settings.const.js +16 -16
  383. package/build/_modules/discord-assistant/_collections/dias.util.d.ts +31 -31
  384. package/build/_modules/discord-assistant/_collections/dias.util.js +85 -85
  385. package/build/_modules/discord-assistant/_models/dias-global-settings.interface.d.ts +17 -17
  386. package/build/_modules/discord-assistant/_models/dias-global-settings.interface.js +2 -2
  387. package/build/_modules/discord-assistant/_models/dias-knowledge.data-model.d.ts +8 -8
  388. package/build/_modules/discord-assistant/_models/dias-knowledge.data-model.js +46 -46
  389. package/build/_modules/discord-assistant/_services/dias-chunk.data-service.d.ts +17 -17
  390. package/build/_modules/discord-assistant/_services/dias-chunk.data-service.js +123 -123
  391. package/build/_modules/discord-assistant/_services/dias-io.control-service.d.ts +10 -10
  392. package/build/_modules/discord-assistant/_services/dias-io.control-service.js +49 -49
  393. package/build/_modules/discord-assistant/_services/dias-main.control-service.d.ts +3 -3
  394. package/build/_modules/discord-assistant/_services/dias-main.control-service.js +7 -7
  395. package/build/_modules/discord-assistant/_services/dias.service-base.d.ts +18 -18
  396. package/build/_modules/discord-assistant/_services/dias.service-base.js +46 -46
  397. package/build/_modules/discord-assistant/index.d.ts +11 -11
  398. package/build/_modules/discord-assistant/index.js +24 -24
  399. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.d.ts +3 -3
  400. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.js +7 -7
  401. package/build/_modules/discord-assistant-voiced/index.d.ts +2 -2
  402. package/build/_modules/discord-assistant-voiced/index.js +28 -28
  403. package/build/_modules/discord-bot/_collections/dibo-default-commands.const.d.ts +2 -2
  404. package/build/_modules/discord-bot/_collections/dibo-default-commands.const.js +12 -12
  405. package/build/_modules/discord-bot/_collections/dibo-global-settings.conts.d.ts +2 -2
  406. package/build/_modules/discord-bot/_collections/dibo-global-settings.conts.js +43 -43
  407. package/build/_modules/discord-bot/_collections/dibo-operations.util.d.ts +22 -22
  408. package/build/_modules/discord-bot/_collections/dibo-operations.util.js +275 -275
  409. package/build/_modules/discord-bot/_models/dibo-command.interface.d.ts +7 -7
  410. package/build/_modules/discord-bot/_models/dibo-command.interface.js +2 -2
  411. package/build/_modules/discord-bot/_models/dibo-global-settings.interface.d.ts +87 -87
  412. package/build/_modules/discord-bot/_models/dibo-global-settings.interface.js +2 -2
  413. package/build/_modules/discord-bot/_models/dibo-last-mention-date.inteface.d.ts +6 -6
  414. package/build/_modules/discord-bot/_models/dibo-last-mention-date.inteface.js +2 -2
  415. package/build/_modules/discord-bot/_models/dibo-last-message-date.interface.d.ts +5 -5
  416. package/build/_modules/discord-bot/_models/dibo-last-message-date.interface.js +2 -2
  417. package/build/_modules/discord-bot/_services/dibo-commands.control-service.d.ts +11 -11
  418. package/build/_modules/discord-bot/_services/dibo-commands.control-service.js +109 -109
  419. package/build/_modules/discord-bot/_services/dibo-io.control-service.d.ts +21 -21
  420. package/build/_modules/discord-bot/_services/dibo-io.control-service.js +218 -218
  421. package/build/_modules/discord-bot/_services/dibo-main.control-service.d.ts +89 -89
  422. package/build/_modules/discord-bot/_services/dibo-main.control-service.js +363 -363
  423. package/build/_modules/discord-bot/_services/dibo-routines.control-service.d.ts +13 -13
  424. package/build/_modules/discord-bot/_services/dibo-routines.control-service.js +73 -73
  425. package/build/_modules/discord-bot/index.d.ts +11 -11
  426. package/build/_modules/discord-bot/index.js +30 -30
  427. package/build/_modules/local-vector-search/_enums/lvs-search-mode.enum.d.ts +34 -34
  428. package/build/_modules/local-vector-search/_enums/lvs-search-mode.enum.js +38 -38
  429. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.d.ts +35 -35
  430. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.js +53 -53
  431. package/build/_modules/local-vector-search/_models/lvs-search-result.interface.d.ts +16 -16
  432. package/build/_modules/local-vector-search/_models/lvs-search-result.interface.js +2 -2
  433. package/build/_modules/local-vector-search/_services/lvs-bm25.util.d.ts +88 -88
  434. package/build/_modules/local-vector-search/_services/lvs-bm25.util.js +189 -189
  435. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.d.ts +26 -26
  436. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.js +197 -197
  437. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.d.ts +145 -145
  438. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.js +294 -294
  439. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.d.ts +74 -74
  440. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.js +152 -152
  441. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.d.ts +51 -51
  442. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.js +83 -83
  443. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.d.ts +99 -99
  444. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.js +276 -276
  445. package/build/_modules/local-vector-search/index.d.ts +8 -8
  446. package/build/_modules/local-vector-search/index.js +15 -15
  447. package/build/_modules/logs/_models/file-log-entry.interface.d.ts +13 -13
  448. package/build/_modules/logs/_models/file-log-entry.interface.js +2 -2
  449. package/build/_modules/logs/_models/file-log-read-result.interface.d.ts +35 -35
  450. package/build/_modules/logs/_models/file-log-read-result.interface.js +2 -2
  451. package/build/_modules/logs/file-log.service.d.ts +132 -132
  452. package/build/_modules/logs/file-log.service.js +444 -444
  453. package/build/_modules/logs/file-logs.controller.d.ts +40 -40
  454. package/build/_modules/logs/file-logs.controller.js +138 -138
  455. package/build/_modules/logs/get-file-logs-routing-module.util.d.ts +31 -31
  456. package/build/_modules/logs/get-file-logs-routing-module.util.js +37 -37
  457. package/build/_modules/logs/get-logs-routing-module.util.d.ts +18 -18
  458. package/build/_modules/logs/get-logs-routing-module.util.js +31 -31
  459. package/build/_modules/logs/index.d.ts +8 -8
  460. package/build/_modules/logs/index.js +15 -15
  461. package/build/_modules/logs/log-buffer.service.d.ts +37 -37
  462. package/build/_modules/logs/log-buffer.service.js +96 -96
  463. package/build/_modules/logs/logs.controller.d.ts +26 -26
  464. package/build/_modules/logs/logs.controller.js +89 -89
  465. package/build/_modules/logs/logs.service.d.ts +39 -39
  466. package/build/_modules/logs/logs.service.js +96 -96
  467. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.d.ts +108 -108
  468. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.js +13 -13
  469. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.d.ts +70 -70
  470. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.js +98 -98
  471. package/build/_modules/mcp/_services/dynts-mcp.adapter.d.ts +56 -56
  472. package/build/_modules/mcp/_services/dynts-mcp.adapter.js +138 -138
  473. package/build/_modules/mcp/index.d.ts +3 -3
  474. package/build/_modules/mcp/index.js +12 -12
  475. package/build/_modules/messaging/_collections/get-messaging-routing-module.util.d.ts +7 -7
  476. package/build/_modules/messaging/_collections/get-messaging-routing-module.util.js +20 -20
  477. package/build/_modules/messaging/_collections/msg-global-settings.const.d.ts +5 -5
  478. package/build/_modules/messaging/_collections/msg-global-settings.const.js +22 -22
  479. package/build/_modules/messaging/_collections/msg.util.d.ts +24 -24
  480. package/build/_modules/messaging/_collections/msg.util.js +62 -62
  481. package/build/_modules/messaging/_models/msg-global-settings.interface.d.ts +28 -28
  482. package/build/_modules/messaging/_models/msg-global-settings.interface.js +2 -2
  483. package/build/_modules/messaging/_services/msg-conversation.data-service.d.ts +28 -28
  484. package/build/_modules/messaging/_services/msg-conversation.data-service.js +109 -109
  485. package/build/_modules/messaging/_services/msg-events.service.d.ts +61 -61
  486. package/build/_modules/messaging/_services/msg-events.service.js +203 -203
  487. package/build/_modules/messaging/_services/msg-integration.control-service.js +180 -180
  488. package/build/_modules/messaging/_services/msg-main.control-service.d.ts +62 -62
  489. package/build/_modules/messaging/_services/msg-main.control-service.js +428 -428
  490. package/build/_modules/messaging/_services/msg-message.data-service.d.ts +28 -28
  491. package/build/_modules/messaging/_services/msg-message.data-service.js +103 -103
  492. package/build/_modules/messaging/_services/msg.controller.d.ts +12 -12
  493. package/build/_modules/messaging/_services/msg.controller.js +256 -256
  494. package/build/_modules/messaging/index.d.ts +10 -10
  495. package/build/_modules/messaging/index.js +27 -27
  496. package/build/_modules/mock/app-extended-server.mock.d.ts +41 -41
  497. package/build/_modules/mock/app-extended-server.mock.js +169 -169
  498. package/build/_modules/mock/app-integration-test.mock.d.ts +19 -19
  499. package/build/_modules/mock/app-integration-test.mock.js +45 -45
  500. package/build/_modules/mock/app-params.mock.d.ts +2 -2
  501. package/build/_modules/mock/app-params.mock.js +9 -9
  502. package/build/_modules/mock/app-server.mock.d.ts +41 -41
  503. package/build/_modules/mock/app-server.mock.js +148 -148
  504. package/build/_modules/mock/auth-service.mock.d.ts +10 -10
  505. package/build/_modules/mock/auth-service.mock.js +19 -19
  506. package/build/_modules/mock/controller.mock.d.ts +5 -5
  507. package/build/_modules/mock/controller.mock.js +14 -14
  508. package/build/_modules/mock/data-model.mock.d.ts +26 -26
  509. package/build/_modules/mock/data-model.mock.js +72 -72
  510. package/build/_modules/mock/email-service-collection.mock.d.ts +7 -7
  511. package/build/_modules/mock/email-service-collection.mock.js +12 -12
  512. package/build/_modules/mock/email-service.mock.d.ts +4 -4
  513. package/build/_modules/mock/email-service.mock.js +20 -20
  514. package/build/_modules/mock/endpoint.mock.d.ts +8 -8
  515. package/build/_modules/mock/endpoint.mock.js +79 -79
  516. package/build/_modules/mock/socket-client.mock.d.ts +9 -9
  517. package/build/_modules/mock/socket-client.mock.js +38 -38
  518. package/build/_modules/mock/socket-server.mock.d.ts +15 -15
  519. package/build/_modules/mock/socket-server.mock.js +32 -32
  520. package/build/_modules/oauth2/_routes/oauth2.controller.d.ts +16 -16
  521. package/build/_modules/oauth2/_routes/oauth2.controller.js +96 -96
  522. package/build/_modules/oauth2/_services/oauth2.auth-service.d.ts +30 -30
  523. package/build/_modules/oauth2/_services/oauth2.auth-service.js +215 -215
  524. package/build/_modules/oauth2/_services/oauth2.control-service.d.ts +132 -132
  525. package/build/_modules/oauth2/_services/oauth2.control-service.js +576 -576
  526. package/build/_modules/oauth2/index.d.ts +3 -3
  527. package/build/_modules/oauth2/index.js +14 -14
  528. package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.d.ts +5 -5
  529. package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.js +9 -9
  530. package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.d.ts +10 -10
  531. package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.js +14 -14
  532. package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.d.ts +7 -7
  533. package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.js +11 -11
  534. package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.d.ts +15 -15
  535. package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.js +19 -19
  536. package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.d.ts +9 -9
  537. package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.js +13 -13
  538. package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.d.ts +11 -11
  539. package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.js +2 -2
  540. package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.d.ts +6 -6
  541. package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.js +2 -2
  542. package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.d.ts +14 -14
  543. package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.js +2 -2
  544. package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.d.ts +6 -6
  545. package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.js +2 -2
  546. package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.d.ts +12 -12
  547. package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.js +2 -2
  548. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.d.ts +8 -8
  549. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.js +2 -2
  550. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.d.ts +13 -13
  551. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.js +2 -2
  552. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.d.ts +7 -7
  553. package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.js +2 -2
  554. package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.d.ts +10 -10
  555. package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.js +2 -2
  556. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.d.ts +12 -12
  557. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.js +2 -2
  558. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.d.ts +8 -8
  559. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.js +2 -2
  560. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.d.ts +6 -6
  561. package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.js +2 -2
  562. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.d.ts +10 -10
  563. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.js +2 -2
  564. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.d.ts +6 -6
  565. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.js +2 -2
  566. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.d.ts +6 -6
  567. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.js +2 -2
  568. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.d.ts +11 -11
  569. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.js +2 -2
  570. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.d.ts +13 -13
  571. package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.js +2 -2
  572. package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.d.ts +14 -14
  573. package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.js +2 -2
  574. package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.d.ts +8 -8
  575. package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.js +2 -2
  576. package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.d.ts +6 -6
  577. package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.js +2 -2
  578. package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.d.ts +9 -9
  579. package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.js +2 -2
  580. package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.d.ts +6 -6
  581. package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.js +2 -2
  582. package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.d.ts +20 -20
  583. package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.js +2 -2
  584. package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.d.ts +7 -7
  585. package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.js +2 -2
  586. package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.d.ts +19 -19
  587. package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.js +2 -2
  588. package/build/_modules/privacy-lifecycle/index.d.ts +32 -32
  589. package/build/_modules/privacy-lifecycle/index.js +17 -17
  590. package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.d.ts +27 -27
  591. package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.js +167 -167
  592. package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.d.ts +41 -41
  593. package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.js +363 -363
  594. package/build/_modules/rate-limit/_enums/rate-limit-store-kind.type-enum.d.ts +5 -5
  595. package/build/_modules/rate-limit/_enums/rate-limit-store-kind.type-enum.js +9 -9
  596. package/build/_modules/rate-limit/_models/rate-limit-config.interface.d.ts +70 -70
  597. package/build/_modules/rate-limit/_models/rate-limit-config.interface.js +2 -2
  598. package/build/_modules/rate-limit/_models/rate-limit-consume-request.interface.d.ts +8 -8
  599. package/build/_modules/rate-limit/_models/rate-limit-consume-request.interface.js +2 -2
  600. package/build/_modules/rate-limit/_models/rate-limit-consume-result.interface.d.ts +6 -6
  601. package/build/_modules/rate-limit/_models/rate-limit-consume-result.interface.js +2 -2
  602. package/build/_modules/rate-limit/_models/rate-limit-policy.interface.d.ts +15 -15
  603. package/build/_modules/rate-limit/_models/rate-limit-policy.interface.js +2 -2
  604. package/build/_modules/rate-limit/_models/rate-limit-store.interface.d.ts +8 -8
  605. package/build/_modules/rate-limit/_models/rate-limit-store.interface.js +2 -2
  606. package/build/_modules/rate-limit/index.d.ts +8 -8
  607. package/build/_modules/rate-limit/index.js +9 -9
  608. package/build/_modules/rate-limit/rate-limit-in-memory.store.d.ts +18 -18
  609. package/build/_modules/rate-limit/rate-limit-in-memory.store.js +70 -70
  610. package/build/_modules/rate-limit/rate-limit.middleware.d.ts +68 -68
  611. package/build/_modules/rate-limit/rate-limit.middleware.js +378 -378
  612. package/build/_modules/scheduler/_models/scheduler-job.interface.d.ts +33 -33
  613. package/build/_modules/scheduler/_models/scheduler-job.interface.js +2 -2
  614. package/build/_modules/scheduler/get-scheduler-routing-module.util.d.ts +17 -17
  615. package/build/_modules/scheduler/get-scheduler-routing-module.util.js +30 -30
  616. package/build/_modules/scheduler/index.d.ts +4 -4
  617. package/build/_modules/scheduler/index.js +9 -9
  618. package/build/_modules/scheduler/scheduler.controller.d.ts +24 -24
  619. package/build/_modules/scheduler/scheduler.controller.js +53 -53
  620. package/build/_modules/scheduler/scheduler.service.d.ts +53 -53
  621. package/build/_modules/scheduler/scheduler.service.js +163 -163
  622. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.d.ts +18 -18
  623. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.js +22 -22
  624. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.d.ts +43 -43
  625. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.js +67 -67
  626. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.d.ts +88 -88
  627. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.js +11 -11
  628. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.d.ts +83 -83
  629. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.js +219 -219
  630. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.d.ts +53 -53
  631. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.js +75 -75
  632. package/build/_modules/scoped-config/index.d.ts +5 -5
  633. package/build/_modules/scoped-config/index.js +14 -14
  634. package/build/_modules/server/errors/errors.control-service.d.ts +21 -21
  635. package/build/_modules/server/errors/errors.control-service.js +10 -10
  636. package/build/_modules/server/errors/errors.controller.d.ts +144 -144
  637. package/build/_modules/server/errors/errors.controller.js +404 -404
  638. package/build/_modules/server/errors/errors.data-service.d.ts +70 -70
  639. package/build/_modules/server/errors/errors.data-service.js +677 -677
  640. package/build/_modules/server/index.d.ts +15 -15
  641. package/build/_modules/server/index.js +35 -35
  642. package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.d.ts +8 -8
  643. package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.js +12 -12
  644. package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts +20 -19
  645. package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts.map +1 -1
  646. package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js +24 -23
  647. package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js.map +1 -1
  648. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts +18 -18
  649. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js +82 -82
  650. package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.d.ts +18 -18
  651. package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.js +2 -2
  652. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts +13 -13
  653. package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js +17 -17
  654. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts +7 -7
  655. package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js +11 -11
  656. package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts +13 -13
  657. package/build/_modules/server/server-status/db-readiness-probe.control-service.js +125 -125
  658. package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts +17 -17
  659. package/build/_modules/server/server-status/db-readiness-probe.interface.js +2 -2
  660. package/build/_modules/server/server-status/server-status-snapshot.control-service.d.ts +4 -4
  661. package/build/_modules/server/server-status/server-status-snapshot.control-service.js +7 -7
  662. package/build/_modules/server/server-status/server-status-snapshot.data-service.d.ts +6 -6
  663. package/build/_modules/server/server-status/server-status-snapshot.data-service.js +22 -22
  664. package/build/_modules/server/server-status/server-status.control-service.d.ts +111 -111
  665. package/build/_modules/server/server-status/server-status.control-service.js +302 -302
  666. package/build/_modules/server/server-status/server-status.controller.d.ts +92 -92
  667. package/build/_modules/server/server-status/server-status.controller.js +253 -253
  668. package/build/_modules/socket/_enums/socket-security.enum.d.ts +10 -10
  669. package/build/_modules/socket/_enums/socket-security.enum.js +14 -14
  670. package/build/_modules/socket/_models/socket-client-service-params.control-model.d.ts +8 -8
  671. package/build/_modules/socket/_models/socket-client-service-params.control-model.js +16 -16
  672. package/build/_modules/socket/_models/socket-presence.control-model.d.ts +25 -25
  673. package/build/_modules/socket/_models/socket-presence.control-model.js +140 -140
  674. package/build/_modules/socket/_models/socket-server-service-params.control-model.d.ts +22 -22
  675. package/build/_modules/socket/_models/socket-server-service-params.control-model.js +31 -31
  676. package/build/_modules/socket/_services/socket-client.service.d.ts +37 -37
  677. package/build/_modules/socket/_services/socket-client.service.js +196 -196
  678. package/build/_modules/socket/_services/socket-server.service.d.ts +98 -98
  679. package/build/_modules/socket/_services/socket-server.service.js +673 -673
  680. package/build/_modules/socket/app-extended.server.d.ts +145 -145
  681. package/build/_modules/socket/app-extended.server.js +521 -521
  682. package/build/_modules/socket/index.d.ts +8 -8
  683. package/build/_modules/socket/index.js +35 -35
  684. package/build/_modules/test/get-test-routing-module.util.d.ts +3 -3
  685. package/build/_modules/test/get-test-routing-module.util.js +16 -16
  686. package/build/_modules/test/index.d.ts +3 -3
  687. package/build/_modules/test/index.js +11 -11
  688. package/build/_modules/test/test.controller.d.ts +5 -5
  689. package/build/_modules/test/test.controller.js +103 -103
  690. package/build/_modules/test-email-sink/_collections/test-email-pattern.const.d.ts +10 -10
  691. package/build/_modules/test-email-sink/_collections/test-email-pattern.const.js +13 -13
  692. package/build/_modules/test-email-sink/_models/data-models/dynts-sent-test-mail.data-model.d.ts +21 -21
  693. package/build/_modules/test-email-sink/_models/data-models/dynts-sent-test-mail.data-model.js +38 -38
  694. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.d.ts +49 -49
  695. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.js +117 -117
  696. package/build/_modules/test-email-sink/get-sent-mail-routing-module.util.d.ts +14 -14
  697. package/build/_modules/test-email-sink/get-sent-mail-routing-module.util.js +26 -26
  698. package/build/_modules/test-email-sink/index.d.ts +11 -11
  699. package/build/_modules/test-email-sink/index.js +14 -14
  700. package/build/_modules/test-email-sink/test-email-sink.controller.d.ts +23 -23
  701. package/build/_modules/test-email-sink/test-email-sink.controller.js +66 -66
  702. package/build/_modules/usage/get-usage-routing-module.util.d.ts +3 -3
  703. package/build/_modules/usage/get-usage-routing-module.util.js +16 -16
  704. package/build/_modules/usage/index.d.ts +4 -4
  705. package/build/_modules/usage/index.js +13 -13
  706. package/build/_modules/usage/usage.controller.d.ts +6 -6
  707. package/build/_modules/usage/usage.controller.js +105 -105
  708. package/build/_modules/usage/usage.data-service.d.ts +17 -17
  709. package/build/_modules/usage/usage.data-service.js +135 -135
  710. package/build/_services/base/api.service-base.d.ts +9 -9
  711. package/build/_services/base/api.service-base.js +46 -46
  712. package/build/_services/base/archive-data.service.d.ts +25 -25
  713. package/build/_services/base/archive-data.service.js +151 -151
  714. package/build/_services/base/data.service.d.ts +402 -402
  715. package/build/_services/base/data.service.js +2131 -2131
  716. package/build/_services/base/db.service.d.ts +424 -424
  717. package/build/_services/base/db.service.js +1356 -1356
  718. package/build/_services/base/singleton.service-base.d.ts +8 -8
  719. package/build/_services/base/singleton.service-base.js +21 -21
  720. package/build/_services/base/singleton.service.d.ts +11 -11
  721. package/build/_services/base/singleton.service.js +31 -31
  722. package/build/_services/core/api.service.d.ts +45 -45
  723. package/build/_services/core/api.service.js +456 -456
  724. package/build/_services/core/auth.service.d.ts +129 -129
  725. package/build/_services/core/auth.service.js +59 -59
  726. package/build/_services/core/collection-growth-monitor.service.d.ts +76 -76
  727. package/build/_services/core/collection-growth-monitor.service.js +165 -165
  728. package/build/_services/core/db-stats.service.d.ts +33 -33
  729. package/build/_services/core/db-stats.service.js +64 -64
  730. package/build/_services/core/diagnostics.service.d.ts +42 -42
  731. package/build/_services/core/diagnostics.service.js +121 -121
  732. package/build/_services/core/email.service.d.ts +77 -77
  733. package/build/_services/core/email.service.js +503 -503
  734. package/build/_services/core/event-loop-diag.service.d.ts +49 -49
  735. package/build/_services/core/event-loop-diag.service.js +106 -106
  736. package/build/_services/core/global.service.d.ts +83 -83
  737. package/build/_services/core/global.service.js +386 -386
  738. package/build/_services/core/memory-guard.service.d.ts +166 -166
  739. package/build/_services/core/memory-guard.service.js +369 -369
  740. package/build/_services/core/migration-runner.service.d.ts +39 -39
  741. package/build/_services/core/migration-runner.service.js +74 -74
  742. package/build/_services/core/mongo-transaction.control-service.d.ts +18 -18
  743. package/build/_services/core/mongo-transaction.control-service.js +94 -94
  744. package/build/_services/core/request-hunter.service.d.ts +73 -73
  745. package/build/_services/core/request-hunter.service.js +122 -122
  746. package/build/_services/core/service-collection.service.d.ts +4 -4
  747. package/build/_services/core/service-collection.service.js +7 -7
  748. package/build/_services/route/controller.service.d.ts +124 -124
  749. package/build/_services/route/controller.service.js +95 -95
  750. package/build/_services/route/routing-module.service.d.ts +80 -80
  751. package/build/_services/route/routing-module.service.js +250 -250
  752. package/build/_services/server/app.server.d.ts +429 -429
  753. package/build/_services/server/app.server.js +1226 -1226
  754. package/build/_services/shared.static-service.d.ts +43 -36
  755. package/build/_services/shared.static-service.d.ts.map +1 -1
  756. package/build/_services/shared.static-service.js +92 -72
  757. package/build/_services/shared.static-service.js.map +1 -1
  758. package/build/index.d.ts +63 -63
  759. package/build/index.js +101 -101
  760. package/package.json +15 -9
  761. package/src/_models/control-models/app-params.control-model.spec.ts +23 -23
  762. package/src/_models/control-models/app-params.control-model.ts +10 -10
  763. package/src/_models/control-models/endpoint-params.control-model.spec.ts +102 -17
  764. package/src/_models/control-models/endpoint-params.control-model.ts +131 -220
  765. package/src/_modules/server/index.ts +8 -8
  766. package/src/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.ts +8 -8
  767. package/src/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.ts +18 -17
  768. package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.spec.ts +124 -124
  769. package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts +99 -99
  770. package/src/_modules/server/safe-diagnostic/safe-diagnostic.interface.ts +20 -20
  771. package/src/_services/core/global.service.ts +55 -55
  772. package/src/_services/server/app-safe-diagnostic.spec.ts +124 -124
  773. package/src/_services/server/app.server.ts +294 -294
  774. package/src/_services/shared.static-service.spec.ts +43 -9
  775. package/src/_services/shared.static-service.ts +37 -8
@@ -1,1357 +1,1357 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DyNTS_DBService = void 0;
4
- const tslib_1 = require("tslib");
5
- const mongoose = tslib_1.__importStar(require("mongoose"));
6
- const mongoose_1 = require("mongoose");
7
- const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
8
- const archive_util_1 = require("../../_collections/archive.util");
9
- const field_encryption_util_1 = require("../../_collections/field-encryption.util");
10
- const global_settings_const_1 = require("../../_collections/global-settings.const");
11
- /**
12
- * DB Service for MongoDB
13
- */
14
- class DyNTS_DBService {
15
- dataParams;
16
- serviceName;
17
- dataModel /* : mongoose.Model<T> */; // = mongoose.model(this.dataParams.dataName, this.getSchema());
18
- /* private depDataName: string; */
19
- depKeys = [];
20
- defaultErrorUserMsg = `We encountered an unhandled DB Error, ` +
21
- `\nplease contact the responsible development team.`;
22
- /**
23
- * @param dataName name the model
24
- * @param typeSample sample data for scheme creation (dont include DyFM_Metadata!)
25
- * @param schemaSettings additional settings for specific parameters as unique, required, minlength or maxlength
26
- * schemaSettings also MUST contain specific types that differs from the listed above (Array, Date)
27
- */
28
- constructor(dataParams) {
29
- this.dataParams = dataParams;
30
- try {
31
- this.serviceName = this.constructor?.name;
32
- if (!this.dataParams.dataName || typeof this.dataParams.dataName !== 'string') {
33
- throw new Error(`dbName not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`);
34
- }
35
- if (!this.dataParams.constructed?.()) {
36
- throw new fsm_dynamo_1.DyFM_Error({
37
- error: new Error(`DataModelParams is not constructed properly! (${this.dataParams.dataName}) ` +
38
- `Use the DyFM_DataModel_Params.constructor to construct it properly! (NTS DB)`),
39
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-C01`,
40
- additionalContent: { dataParams: this.dataParams },
41
- __localStack: this.dataParams.stackLocation,
42
- });
43
- }
44
- try {
45
- this.dataModel = mongoose.model(this.dataParams.dataName, this.getSchema());
46
- }
47
- catch (error) {
48
- if (mongoose.models[this.dataParams.dataName]) {
49
- this.dataModel = mongoose.models[this.dataParams.dataName];
50
- }
51
- else {
52
- throw error;
53
- }
54
- }
55
- this.lookForDependencyDataSettings();
56
- }
57
- catch (error) {
58
- throw new fsm_dynamo_1.DyFM_Error({
59
- message: `DyNTS_DBService construction failed! "${dataParams.dataName}" - "${this.serviceName}"`,
60
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-C00`,
61
- level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
62
- additionalContent: { dataParams: this.dataParams },
63
- error,
64
- });
65
- }
66
- }
67
- /**
68
- * save new data
69
- * @param data data
70
- * @returns data
71
- */
72
- async createData(data, issuer) {
73
- data.__created = new Date();
74
- data.__lastModified = new Date();
75
- data.__createdBy = issuer;
76
- data.__lastModifiedBy = issuer;
77
- // AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
78
- // KLÓNON (a hívó `data`-ja plaintext marad). NO-OP, ha nincs encrypt:true mező.
79
- const encData = field_encryption_util_1.DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
80
- const dataModel = new this.dataModel(encData);
81
- const newData = await dataModel.save().then((res) => {
82
- if (res) {
83
- return res?.toObject();
84
- }
85
- else {
86
- throw new fsm_dynamo_1.DyFM_Error({
87
- ...this._getDefaultErrorSettings('createData', new Error(`createData failed, save "${this.dataParams.dataName}" result not found! (NTS DB)`), issuer),
88
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CD1`,
89
- additionalContent: { data },
90
- issuer,
91
- });
92
- }
93
- }).catch((error) => {
94
- if (error?.flag?.includes('DYNAMO')) {
95
- throw error;
96
- }
97
- else {
98
- throw new fsm_dynamo_1.DyFM_Error({
99
- ...this._getDefaultErrorSettings('createData', error, issuer),
100
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CD0`,
101
- additionalContent: {
102
- data: data,
103
- dataModel: this.dataModel,
104
- },
105
- message: `createData failed, Create new "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
106
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
107
- issuer,
108
- });
109
- }
110
- });
111
- return this.stringifyDataId(newData, 'createData');
112
- }
113
- /**
114
- * Find data by _id and update
115
- * @param data data
116
- * @returns data
117
- */
118
- async modifyData(data, issuer, dontUpdateModified) {
119
- if (this.dataParams.forbidModify) {
120
- await this.modifyThrowMethod(data, issuer);
121
- }
122
- if (!dontUpdateModified) {
123
- data.__lastModified = new Date();
124
- data.__lastModifiedBy = issuer;
125
- }
126
- // AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
127
- // KLÓNON. KRITIKUS: a `findByIdAndUpdate` MEGKERÜLI a mongoose settereket/pre-save-hookokat, ezért
128
- // a titkosítás itt, app-rétegben történik (nem mongoose-hookban). A hívó `data`-ja plaintext marad,
129
- // így a `stringifyDataId(data)` alant no-op decrypttel a plaintextet adja vissza. NO-OP enc-mező nélkül.
130
- const encData = field_encryption_util_1.DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
131
- /**
132
- * EZ A SZAR TELJESEN SZAR, nem friss, nem a db-be mentett adatokat ad vissza,
133
- * átír random value-kat össze vissza, WTF
134
- * */
135
- /* let newData: T = */
136
- await this.dataModel.findByIdAndUpdate(data._id, encData) /* .then((res) => {
137
- if (res) {
138
- //return res?.toObject() as T;
139
- } else {
140
- throw new DyFM_Error({
141
- ...this._getDefaultErrorSettings(
142
- 'modifyData',
143
- new Error(`modifyData failed, modify "${this.dataParams.dataName}" result not found! (NTS DB)`),
144
- issuer,
145
- ),
146
-
147
- status: 204,
148
- errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FU1`,
149
- additionalContent: { data },
150
- issuer,
151
- });
152
- }
153
- }) */
154
- .catch((error) => {
155
- throw new fsm_dynamo_1.DyFM_Error({
156
- ...this._getDefaultErrorSettings('modifyData', error, issuer),
157
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FU0`,
158
- additionalContent: { data },
159
- message: `modifyData "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
160
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
161
- issuer,
162
- });
163
- });
164
- return this.stringifyDataId(data, 'modifyData');
165
- }
166
- // TODO: Missing issuer
167
- /**
168
- * returns data by _id,
169
- * @param id id
170
- * @returns data
171
- */
172
- async getDataById(id) {
173
- if (!id) {
174
- throw new fsm_dynamo_1.DyFM_Error({
175
- ...this._getDefaultErrorSettings('getDataById', new Error(`No ID provided! (NTS DB)`)),
176
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GI1`,
177
- message: `get "${this.dataParams.dataName}" by ID was unsuccessful (NTS DB)`,
178
- });
179
- }
180
- const data = await this.dataModel
181
- .findById(id)
182
- .then((res) => res?.toObject() ?? null)
183
- .catch((error) => {
184
- throw new fsm_dynamo_1.DyFM_Error({
185
- ...this._getDefaultErrorSettings('getDataById', error),
186
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GI0`,
187
- additionalContent: { id },
188
- message: `get "${this.dataParams.dataName}" by ID was unsuccessful (NTS DB)` +
189
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
190
- });
191
- });
192
- return this.stringifyDataId(data, 'getDataById');
193
- }
194
- // TODO: Missing issuer
195
- /**
196
- * get data by dependency data id,
197
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-GD2)
198
- *
199
- * @param dependencyIdsFilter id
200
- * @returns data
201
- */
202
- async getDataByDependencyId(dependencyIdsFilter) {
203
- if (!this.depKeys.length) {
204
- throw new fsm_dynamo_1.DyFM_Error({
205
- ...this._getDefaultErrorSettings('getDataByDependencyId', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
206
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GD0`,
207
- });
208
- }
209
- const data = await this.dataModel
210
- .findOne(dependencyIdsFilter)
211
- .then((res) => res?.toObject() ?? null)
212
- .catch((error) => {
213
- throw new fsm_dynamo_1.DyFM_Error({
214
- ...this._getDefaultErrorSettings('getDataByDependencyId', error),
215
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GD1`,
216
- additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
217
- message: `get "${this.dataParams.dataName}" by ` +
218
- `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
219
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
220
- });
221
- });
222
- return this.stringifyDataId(data, 'getDataByDependencyId');
223
- }
224
- // TODO: Missing issuer
225
- async getDataListByIds(ids, findDeleted) {
226
- const dataList = await this.dataModel
227
- .find({ _id: { $in: ids } })
228
- .then((res) => res ?? [])
229
- .catch((error) => {
230
- throw new fsm_dynamo_1.DyFM_Error({
231
- ...this._getDefaultErrorSettings('getDataListByIds', error),
232
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GDL0`,
233
- additionalContent: { ids },
234
- message: `get "${this.dataParams.dataName}" by IDs was unsuccessful (NTS DB)` +
235
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
236
- });
237
- });
238
- if (!findDeleted) {
239
- return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
240
- }
241
- else {
242
- return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
243
- }
244
- }
245
- // TODO: Missing issuer
246
- /**
247
- * get data by dependency data id,
248
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-GLD2)
249
- *
250
- * @param dependencyIdsFilter id
251
- * @returns dataList
252
- */
253
- async getDataListByDependencyId(dependencyIdsFilter, findDeleted) {
254
- if (!this.depKeys.length) {
255
- throw new fsm_dynamo_1.DyFM_Error({
256
- ...this._getDefaultErrorSettings('getDataListByDependencyId', new Error(`isDependencyHook not setted up for this dataModel (${this.dataParams.dataName}) (NTS DB)`)),
257
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLD0`,
258
- additionalContent: {
259
- dataModel: this.dataModel,
260
- },
261
- });
262
- }
263
- const dataList = await this.dataModel
264
- .find(dependencyIdsFilter)
265
- .then((res) => res ?? [])
266
- .catch((error) => {
267
- throw new fsm_dynamo_1.DyFM_Error({
268
- ...this._getDefaultErrorSettings('getDataListByDependencyId', error),
269
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLD1`,
270
- additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
271
- message: `get "${this.dataParams.dataName}" by ` +
272
- `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
273
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
274
- });
275
- });
276
- if (!findDeleted) {
277
- return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
278
- }
279
- else {
280
- return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
281
- }
282
- }
283
- // TODO: Missing issuer
284
- /**
285
- * get multiple data objects by a list of DependencyIDs,
286
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-GLDS2)
287
- *
288
- * @param ids ids
289
- * @returns dataList
290
- */
291
- async getDataListByDependencyIds(dependencyKey, dependencyIds, findDeleted) {
292
- if (!this.depKeys.length) {
293
- throw new fsm_dynamo_1.DyFM_Error({
294
- ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`getDataListByDependencyIds not setted up for this db-service ` +
295
- `(${this.dataParams.dataName}) (NTS DB)`)),
296
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLDS0`,
297
- });
298
- }
299
- if (!dependencyIds?.length) {
300
- return [];
301
- }
302
- if (!dependencyKey) {
303
- throw new fsm_dynamo_1.DyFM_Error({
304
- ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`dependencyKey is missing! (${this.dataParams.dataName}) (NTS DB)`)),
305
- });
306
- }
307
- if (!this.depKeys.includes(dependencyKey)) {
308
- throw new fsm_dynamo_1.DyFM_Error({
309
- ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`dependencyKey is not valid! (${dependencyKey}) (NTS DB)`)),
310
- });
311
- }
312
- const dataList = await this.dataModel
313
- .find({
314
- [dependencyKey]: { $in: dependencyIds },
315
- })
316
- .then((res) => res ?? [])
317
- .catch((error) => {
318
- throw new fsm_dynamo_1.DyFM_Error({
319
- ...this._getDefaultErrorSettings('getDataListByDependencyIds', error),
320
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLDS1`,
321
- additionalContent: { dependencyIds },
322
- message: `get "${this.dataParams.dataName}" by "${dependencyKey}" was unsuccessful (NTS DB)` +
323
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
324
- });
325
- });
326
- if (!findDeleted) {
327
- return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyIds'));
328
- }
329
- else {
330
- return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyIds'));
331
- }
332
- }
333
- // TODO: Missing issuer
334
- /**
335
- * returns all data from database,
336
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-GA1)
337
- *
338
- * @returns dataList
339
- */
340
- async getAll(findDeleted) {
341
- const dataList = await this.dataModel
342
- .find()
343
- .then((res) => res ?? [])
344
- .catch((error) => {
345
- throw new fsm_dynamo_1.DyFM_Error({
346
- ...this._getDefaultErrorSettings('getAll', error),
347
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GA0`,
348
- message: `get all "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
349
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
350
- });
351
- });
352
- if (!findDeleted) {
353
- return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getAll'));
354
- }
355
- else {
356
- return dataList.map((data) => this.stringifyDataId(data, 'getAll'));
357
- }
358
- }
359
- async markDeletedById(id, issuer) {
360
- if (this.dataParams.forbidDelete) {
361
- await this.deleteThrowMethod(id, issuer);
362
- }
363
- await this.dataModel.findByIdAndUpdate(id, {
364
- _deleted: new Date(),
365
- _deletedBy: issuer,
366
- }).catch((error) => {
367
- throw new fsm_dynamo_1.DyFM_Error({
368
- ...this._getDefaultErrorSettings('markDeletedById', error, issuer),
369
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-MD0`,
370
- additionalContent: { id },
371
- message: `mark deleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
372
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
373
- issuer,
374
- });
375
- });
376
- }
377
- async markDeletedByDependencyId(dependencyIdsFilter, issuer) {
378
- if (this.dataParams.forbidDelete) {
379
- await this.deleteThrowMethod(dependencyIdsFilter, issuer);
380
- }
381
- await this.dataModel.updateMany(dependencyIdsFilter, {
382
- _deleted: new Date(),
383
- _deletedBy: issuer,
384
- }).catch((error) => {
385
- throw new fsm_dynamo_1.DyFM_Error({
386
- ...this._getDefaultErrorSettings('markDeletedByDependencyId', error, issuer),
387
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-MDD0`,
388
- additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
389
- message: `markDeleted "${this.dataParams.dataName}" by ` +
390
- `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
391
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
392
- issuer,
393
- });
394
- });
395
- }
396
- async restoreDeletedById(id, issuer) {
397
- await this.dataModel.findByIdAndUpdate(id, {
398
- _deleted: null,
399
- __lastModified: new Date(),
400
- __lastModifiedBy: issuer,
401
- }).catch((error) => {
402
- throw new fsm_dynamo_1.DyFM_Error({
403
- ...this._getDefaultErrorSettings('restoreDeletedById', error, issuer),
404
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-RD0`,
405
- additionalContent: { id },
406
- message: `restoreDeleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
407
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
408
- issuer,
409
- });
410
- });
411
- }
412
- async restoreDeletedByDependencyId(dependencyIdsFilter, issuer) {
413
- await this.dataModel.updateMany(dependencyIdsFilter, {
414
- _deleted: null,
415
- __lastModified: new Date(),
416
- __lastModifiedBy: issuer,
417
- }).catch((error) => {
418
- throw new fsm_dynamo_1.DyFM_Error({
419
- ...this._getDefaultErrorSettings('restoreDeletedByDependencyId', error, issuer),
420
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-RDD0`,
421
- additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
422
- message: `restoreDeleted "${this.dataParams.dataName}" by ` +
423
- `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
424
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
425
- issuer,
426
- });
427
- });
428
- }
429
- // TODO: Missing issuer
430
- async getDeletedDataList() {
431
- const dataList = await this.dataModel
432
- .getAll()
433
- .then((res) => res ?? [])
434
- .catch((error) => {
435
- throw new fsm_dynamo_1.DyFM_Error({
436
- ...this._getDefaultErrorSettings('getDeletedData', error),
437
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GDD0`,
438
- message: `get deleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
439
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
440
- });
441
- });
442
- return dataList.filter((data) => Boolean(data._deleted)).map((data) => this.stringifyDataId(data, 'getDeletedData'));
443
- }
444
- // TODO: Missing issuer
445
- /**
446
- * deleted data by id
447
- * @param id id
448
- */
449
- async trueDeleteDataById(id) {
450
- if (this.dataParams.forbidDelete) {
451
- await this.deleteThrowMethod(id /* , issuer */);
452
- }
453
- await this.dataModel
454
- .findByIdAndDelete(id)
455
- .catch((error) => {
456
- throw new fsm_dynamo_1.DyFM_Error({
457
- ...this._getDefaultErrorSettings('deleteDataById', error),
458
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DD0`,
459
- additionalContent: { id },
460
- message: `delete "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
461
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
462
- });
463
- });
464
- }
465
- deleteDataById = this.trueDeleteDataById;
466
- // TODO: Missing issuer
467
- /**
468
- * deleted data by id
469
- * @param dependencyId id
470
- */
471
- async trueDeleteDataByDependencyId(dependencyIdsFilter) {
472
- if (this.dataParams.forbidDelete) {
473
- await this.deleteThrowMethod(dependencyIdsFilter /* , issuer */);
474
- }
475
- if (!this.depKeys.length) {
476
- throw new fsm_dynamo_1.DyFM_Error({
477
- ...this._getDefaultErrorSettings('deleteDataByDependencyId', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
478
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DDD0`,
479
- });
480
- }
481
- await this.dataModel
482
- .deleteMany(dependencyIdsFilter)
483
- .catch((error) => {
484
- throw new fsm_dynamo_1.DyFM_Error({
485
- ...this._getDefaultErrorSettings('deleteDataByDependencyId', error),
486
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DDD1`,
487
- additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
488
- message: `delete "${this.dataParams.dataName}" by ` +
489
- `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
490
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
491
- });
492
- });
493
- }
494
- deleteDataByDependencyId = this.trueDeleteDataByDependencyId;
495
- // TODO: Missing issuer
496
- async trueDeleteAllData() {
497
- if (this.dataParams.forbidDelete) {
498
- await this.deleteThrowMethod(null /* , issuer */);
499
- }
500
- await this.dataModel.deleteMany().catch((error) => {
501
- throw new fsm_dynamo_1.DyFM_Error({
502
- ...this._getDefaultErrorSettings('deleteAllData', error),
503
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DAD0`,
504
- message: `delete all "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
505
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
506
- });
507
- });
508
- }
509
- deleteAllData = this.trueDeleteAllData;
510
- // TODO: Missing issuer
511
- /**
512
- * returns search result for searchBy object params
513
- * can use lists or xRange values for searchBy obj properties
514
- *
515
- * @param filterBy filter
516
- * @param narrowByDependencyIds id
517
- * @returns dataList
518
- */
519
- /**
520
- * BFR-AM-013 — LEAN + projektált + BATCH-elt cursor-scan (OOM-safe nagy collection-ökhöz).
521
- *
522
- * A teljes result-set SOSEM él egyszerre a heapen: a Mongo-cursor batch-enként adagolja a
523
- * PLAIN (lean, nem-Mongoose-doc) objektumokat a `handler`-nek — a Mongoose-doc-boxing tranziens
524
- * (a 32k-vektoros LVS-hidratálás 93%-heap-spike-jának gyökere) kimarad. A `projection`-nel csak
525
- * a szükséges mezők jönnek (pl. `{ vectorId: 1, embedding: 1 }` a content-szöveg NÉLKÜL).
526
- * Visszaadja a feldolgozott dokumentumok számát.
527
- */
528
- async findLeanBatched(filterBy, set) {
529
- const batchSize = set.batchSize && set.batchSize > 0 ? set.batchSize : 500;
530
- const cursor = this.dataModel.find(filterBy, set.projection).lean().cursor();
531
- let batch = [];
532
- let total = 0;
533
- for await (const doc of cursor) {
534
- batch.push(doc);
535
- total++;
536
- if (batch.length >= batchSize) {
537
- await set.handler(batch);
538
- batch = [];
539
- }
540
- }
541
- if (batch.length) {
542
- await set.handler(batch);
543
- }
544
- return total;
545
- }
546
- async searchData(filterBy, narrowByDependencyIds, narrowByDependencyKey, findDeleted) {
547
- const filter = {};
548
- if (0 < narrowByDependencyIds.length) {
549
- if (!this.depKeys.length) {
550
- throw new fsm_dynamo_1.DyFM_Error({
551
- ...this._getDefaultErrorSettings('searchData', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
552
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-SD0`,
553
- });
554
- }
555
- if (!narrowByDependencyKey) {
556
- if (this.depKeys.length === 1) {
557
- narrowByDependencyKey = this.depKeys[0];
558
- }
559
- else {
560
- throw new fsm_dynamo_1.DyFM_Error({
561
- ...this._getDefaultErrorSettings('searchData', new Error(`dependencyKey is missing! (${this.dataParams.dataName}) (NTS DB)`)),
562
- });
563
- }
564
- }
565
- filter[narrowByDependencyKey] = { $in: narrowByDependencyIds };
566
- }
567
- Object.values(this.dataParams.properties).forEach((modelParam) => {
568
- if ((filterBy[modelParam.key] !== null && filterBy[modelParam.key] !== undefined) ||
569
- filterBy[modelParam.key + 'Range']) {
570
- if (modelParam.key.includes('Range') || modelParam.type.includes('[]')) {
571
- // inverz search filter (for Range and Array functions)
572
- if (modelParam.key.includes('Range')) {
573
- const searchParamKeyWithoutRange = modelParam.key.split('Range')[0];
574
- if (filterBy[searchParamKeyWithoutRange] !== null &&
575
- filterBy[searchParamKeyWithoutRange] !== undefined) {
576
- filter[modelParam.key] = {
577
- from: { $lte: filterBy[searchParamKeyWithoutRange] },
578
- to: { $gte: filterBy[searchParamKeyWithoutRange] },
579
- };
580
- }
581
- }
582
- else {
583
- if (filterBy[modelParam.key] !== null &&
584
- filterBy[modelParam.key] !== undefined) {
585
- filter[modelParam.key] = { $in: filterBy[modelParam.key] };
586
- }
587
- }
588
- }
589
- else {
590
- // basic search filter
591
- if (filterBy[modelParam.key + 'Range']) {
592
- if (filterBy[modelParam.key + 'Range'].from ||
593
- filterBy[modelParam.key + 'Range'].to) {
594
- filter[modelParam.key] = {};
595
- if (filterBy[modelParam.key + 'Range'].from) {
596
- filter[modelParam.key].$gte = filterBy[modelParam.key + 'Range'].from;
597
- }
598
- if (filterBy[modelParam.key + 'Range'].to) {
599
- filter[modelParam.key].$lte = filterBy[modelParam.key + 'Range'].to;
600
- }
601
- }
602
- }
603
- else if (filterBy[modelParam.key] !== null &&
604
- filterBy[modelParam.key] !== undefined) {
605
- if (filterBy[modelParam.key].lenght > 0) {
606
- filter[modelParam.key] = { $in: filterBy[modelParam.key] };
607
- }
608
- }
609
- }
610
- }
611
- });
612
- let dataList = await this.dataModel
613
- .find(filter)
614
- .then((res) => res ?? [])
615
- .catch((error) => {
616
- throw new fsm_dynamo_1.DyFM_Error({
617
- ...this._getDefaultErrorSettings('searchData', error),
618
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-SD1`,
619
- additionalContent: { filterBy, narrowByDependencyIds },
620
- message: `search "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
621
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
622
- });
623
- });
624
- if (!findDeleted && filterBy._deleted === undefined) {
625
- dataList = dataList.filter((data) => !data._deleted);
626
- }
627
- return dataList.map((data) => this.stringifyDataId(data, 'searchData'));
628
- }
629
- // ----------------------------------------------------------------------------------
630
- // ----------------------------------------------------------------------------------
631
- // ----------------------------------------------------------------------------------
632
- // DIRECT Basic MONGOOSE FUNCTIONS (with error handlings)
633
- /**
634
- * Find the data first by any of its parameters,
635
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-FO1)
636
- *
637
- * @param filterBy if you can, use unique parameters for find!
638
- *
639
- * @example
640
- * // by email:
641
- * { email: email }
642
- * //
643
- * @example
644
- * // or by id that is in list:
645
- * { userIds: { $in: this.userId } }
646
- * // or by userIds:
647
- * { userId: { $in: userIds } }
648
- * //
649
- * @example
650
- * // or by number or Date that is Greater Than AND Less Than:
651
- * { points: { $gt: 2, $lt: 14 } }
652
- * // further tools (syntax matches with $gt):
653
- * $eq: // Matches values that are EQual to a specified value.
654
- * $gte: // Matches values that are Greater Than OR Equal to a specified value.
655
- * $lte: // Matches values that are Less Than or Equal to a specified value.
656
- * $ne: // Matches all values that are Not Equal to a specified value.
657
- * $nin: // Matches None of the values specified IN an array.
658
- * //
659
- * @returns {T} data: T
660
- */
661
- async findOne(filterBy) {
662
- const data = await this.dataModel
663
- .findOne(filterBy)
664
- .then((res) => res ?? null)
665
- .catch((error) => {
666
- throw new fsm_dynamo_1.DyFM_Error({
667
- ...this._getDefaultErrorSettings('findOne', error),
668
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FO0`,
669
- additionalContent: { filterBy },
670
- message: `findOne "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
671
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
672
- });
673
- });
674
- return this.stringifyDataId(data, 'findOne');
675
- }
676
- /**
677
- * #MONGOOSE FUNCTION
678
- * Find the data first by any of its parameters,
679
- * !!!: throws error if not found (errorCode on not found: NTS-DBS-F1)
680
- *
681
- * @param filterBy if you can, use unique parameters for find!
682
- *
683
- * @example
684
- * // by email:
685
- * { email: email }
686
- * //
687
- * @example
688
- * // or by id that is in list:
689
- * { userIds: { $in: this.userId } }
690
- * // or by userIds:
691
- * { userId: { $in: userIds } }
692
- * //
693
- * @example
694
- * // or by number or Date that is Greater Than AND Less Than:
695
- * { points: { $gt: 2, $lt: 14 } }
696
- * // further tools (syntax matches with $gt):
697
- * $eq: // Matches values that are EQual to a specified value.
698
- * $gte: // Matches values that are Greater Than OR Equal to a specified value.
699
- * $lte: // Matches values that are Less Than or Equal to a specified value.
700
- * $ne: // Matches all values that are Not Equal to a specified value.
701
- * $nin: // Matches None of the values specified IN an array.
702
- * //
703
- * @param options BFR-008: opcionalis projection/limit/sort — DB-szinten szukit (a nagy mezok be sem toltodnek)
704
- * @returns {T[]} dataList: T[]
705
- */
706
- async find(filterBy, findDeleted, options) {
707
- // BFR-OVERSEER-008 — options megadasakor a soft-delete szures QUERY-szintre kerul: limit mellett a
708
- // memoriabeli post-filter hibas darabszamot adna, projekcio mellett (kihagyott `_deleted` mezovel)
709
- // hibasan atengedne a torolt dokumentumokat. A `_deleted` soft-delete-kor `new Date()`, egyebkent
710
- // HIANYZIK → a Mongo `_deleted: null` (missing VAGY null) a post-filter `!data._deleted` ekvivalense.
711
- const deletedGuardInQuery = !!options && !findDeleted && filterBy._deleted === undefined;
712
- const effectiveFilter = deletedGuardInQuery
713
- ? { ...filterBy, _deleted: null }
714
- : filterBy;
715
- // A szukites (select/sort/limit) DB-szinten tortenik → a nagy mezok be sem toltodnek a heap-be.
716
- let query = this.dataModel.find(effectiveFilter);
717
- if (options?.projection) {
718
- query = query.select(options.projection);
719
- }
720
- if (options?.sort) {
721
- query = query.sort(options.sort);
722
- }
723
- if (options?.limit) {
724
- query = query.limit(options.limit);
725
- }
726
- let dataList = await query
727
- .then((res) => res ?? [])
728
- .catch((error) => {
729
- throw new fsm_dynamo_1.DyFM_Error({
730
- ...this._getDefaultErrorSettings('find', error),
731
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-F0`,
732
- additionalContent: { filterBy },
733
- message: `find "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
734
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
735
- });
736
- });
737
- if (!findDeleted && !deletedGuardInQuery && filterBy._deleted === undefined) {
738
- dataList = dataList.filter((data) => !data._deleted);
739
- }
740
- return dataList.map((data) => this.stringifyDataId(data, 'find'));
741
- }
742
- /**
743
- * #MONGOOSE FUNCTION
744
- * Find the data first by any of its parameters
745
- * WARNING: This function will not gives you back the total number of data in the database!
746
- *
747
- * @param filterBy if you can, use unique parameters for find!
748
- *
749
- * @example
750
- * // by email:
751
- * { email: email }
752
- * //
753
- * @example
754
- * // or by id that is in list:
755
- * { userIds: { $in: this.userId } }
756
- * // or by userIds:
757
- * { userId: { $in: userIds } }
758
- * //
759
- * @example
760
- * // or by number or Date that is Greater Than AND Less Than:
761
- * { points: { $gt: 2, $lt: 14 } }
762
- * // further tools (syntax matches with $gt):
763
- * $eq: // Matches values that are EQual to a specified value.
764
- * $gte: // Matches values that are Greater Than OR Equal to a specified value.
765
- * $lte: // Matches values that are Less Than or Equal to a specified value.
766
- * $ne: // Matches all values that are Not Equal to a specified value.
767
- * $nin: // Matches None of the values specified IN an array.
768
- * //
769
- * @param page page
770
- * @param pageSize pageSize
771
- * @param sort
772
- * @example
773
- * // by dateTime (this uses the basic sort function):
774
- * { dateTime: -1 }
775
- * //
776
- * @returns {T[]} dataList: T[]
777
- */
778
- async findWithPaging(filterBy, page, pageSize, sort) {
779
- /* if (filterBy['_deleted'] === undefined) {
780
- filterBy['_deleted'] = null;
781
- } */
782
- const dataList = await this.dataModel
783
- .find(filterBy)
784
- .sort(sort)
785
- .skip(page * pageSize)
786
- .limit(pageSize)
787
- .then((res) => res ?? [])
788
- .catch((error) => {
789
- throw new fsm_dynamo_1.DyFM_Error({
790
- ...this._getDefaultErrorSettings('findWithPaging', error),
791
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-WP0`,
792
- additionalContent: { filterBy, page, pageSize, sort },
793
- message: `findWithPaging "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
794
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
795
- });
796
- });
797
- /* if ((filterBy as DyFM_DBFilterSimple<T>)._deleted === undefined) {
798
- dataList = dataList.filter((data: T): boolean => !data._deleted);
799
- } */
800
- return dataList.map((data) => this.stringifyDataId(data, 'find'));
801
- }
802
- /**
803
- * #MONGOOSE FUNCTION
804
- * Find data by _id and update
805
- *
806
- * @param id id
807
- * @param update update
808
- * @returns data
809
- */
810
- async findByIdAndUpdate(id, update, issuer, dontUpdateModified) {
811
- if (this.dataParams.forbidModify) {
812
- await this.modifyThrowMethod(update, issuer);
813
- }
814
- if (!dontUpdateModified) {
815
- update.__lastModified = new Date();
816
- update.__lastModifiedBy = issuer;
817
- }
818
- const data = await this.dataModel
819
- .findByIdAndUpdate(id, update)
820
- .then((res) => res?.toObject() ?? null)
821
- .catch((error) => {
822
- throw new fsm_dynamo_1.DyFM_Error({
823
- ...this._getDefaultErrorSettings('findByIdAndUpdate', error, issuer),
824
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FIU0`,
825
- additionalContent: { id, update },
826
- message: `findByIdAndUpdate "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
827
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
828
- issuer,
829
- });
830
- });
831
- return this.stringifyDataId(data, 'findByIdAndUpdate');
832
- }
833
- /**
834
- * #MONGOOSE FUNCTION
835
- * Atomi compare-and-set: filter-alapú find + update EGY műveletben, a MÓDOSÍTOTT dokumentum
836
- * visszaadásával (BFR-FDPTOKENSERVICE-006).
837
- *
838
- * A `findByIdAndUpdate` (id-only, nem filterezhető) és az `updateOne` (filterezhető, de void —
839
- * nem különíthető el a winner/loser konkurens state-átmenetnél) egyike sem elég CAS-hoz: egy
840
- * state-machine `transitionStatus`-jellegű átmenetnél a filter a FELTÉTEL (pl. `{_id, status:
841
- * 'locked'}`), és a visszatérő érték dönti el, hogy EZ a hívás nyerte-e az átmenetet.
842
- * `null` = nincs match (a feltétel már nem áll — a versenytárs nyert / state-collision).
843
- *
844
- * A `__lastModified`/`forbidModify` szemantika a `findByIdAndUpdate`-tel EGYEZŐ (egységes
845
- * update-viselkedés a base-ben); a `{ new: true }` a MÓDOSÍTOTT dokumentumot adja vissza.
846
- */
847
- async findOneAndUpdate(filterBy, update, issuer, dontUpdateModified) {
848
- if (this.dataParams.forbidModify) {
849
- await this.modifyThrowMethod(update, issuer);
850
- }
851
- if (!dontUpdateModified) {
852
- update.__lastModified = new Date();
853
- update.__lastModifiedBy = issuer;
854
- }
855
- const data = await this.dataModel
856
- .findOneAndUpdate(filterBy, update, { new: true })
857
- .then((res) => res?.toObject() ?? null)
858
- .catch((error) => {
859
- throw new fsm_dynamo_1.DyFM_Error({
860
- ...this._getDefaultErrorSettings('findOneAndUpdate', error, issuer),
861
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FOU0`,
862
- additionalContent: { filterBy, update },
863
- message: `findOneAndUpdate "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
864
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
865
- issuer,
866
- });
867
- });
868
- // no-match (CAS lost / feltétel nem áll): a null ÉRVÉNYES eredmény, nem hiba
869
- if (!data) {
870
- return null;
871
- }
872
- return this.stringifyDataId(data, 'findOneAndUpdate');
873
- }
874
- /**
875
- * #MONGOOSE FUNCTION
876
- * Find the data first by any of its parameters
877
- *
878
- * @param filter This uses the basic Mongoose updateOne.
879
- * If you can, use unique parameters for find!
880
- * @example
881
- * // by email:
882
- * { email: email }
883
- * //
884
- * @example
885
- * // or by id that is in list:
886
- * { userIds: { $in: this.userId } }
887
- * // or by userIds:
888
- * { userId: { $in: userIds } }
889
- * //
890
- * @example
891
- * // or by number or Date that is Greater Than AND Less Than:
892
- * { points: { $gt: 2, $lt: 14 } }
893
- * // further tools (syntax matches with $gt):
894
- * $eq: // Matches values that are EQual to a specified value.
895
- * $gte: // Matches values that are Greater Than OR Equal to a specified value.
896
- * $lte: // Matches values that are Less Than or Equal to a specified value.
897
- * $ne: // Matches all values that are Not Equal to a specified value.
898
- * $nin: // Matches None of the values specified IN an array.
899
- * //
900
- *
901
- * @param update this uses the basic Mongoose updateOne
902
- * @example
903
- * // increase a specific value (here by 15):
904
- * { $inc: { popularity: 15 } }
905
- * //
906
- * @example
907
- * // or add element to a list:
908
- * { $push: { reactions: this.newReaction }
909
- * // or add multiple elements to a list
910
- * { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
911
- * //
912
- * @example
913
- * // or all at once
914
- * {
915
- * $inc: { popularity: this.newVote.amount },
916
- * emailVerified: true,
917
- * $push: { reactions: this.newReaction }
918
- * }
919
- * // further tools (syntax matches with $inc):
920
- * $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
921
- * $min: // Only updates the field if the specified value is less than the existing field value.
922
- * $max: // Only updates the field if the specified value is greater than the existing field value.
923
- * $mul: // Multiplies the value of the field by the specified amount.
924
- * $rename: // Renames a field.
925
- * $unset: // Removes the specified field from a document. (set: "" to value)
926
- * //
927
- */
928
- async updateOne(filterBy, update, issuer, dontUpdateModified) {
929
- if (this.dataParams.forbidModify) {
930
- await this.modifyThrowMethod(update, issuer);
931
- }
932
- if (!dontUpdateModified) {
933
- update.__lastModified = new Date();
934
- update.__lastModifiedBy = issuer;
935
- }
936
- await this.dataModel
937
- .updateOne(filterBy, update)
938
- .catch((error) => {
939
- throw new fsm_dynamo_1.DyFM_Error({
940
- ...this._getDefaultErrorSettings('updateOne', error, issuer),
941
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-UO0`,
942
- additionalContent: { filterBy, update },
943
- message: `updateOne "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
944
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
945
- issuer,
946
- });
947
- });
948
- }
949
- /**
950
- * #MONGOOSE FUNCTION
951
- * update one parameter by a specific
952
- *
953
- * @param filter This uses the basic Mongoose updateMany.
954
- * @example
955
- * // by email:
956
- * { email: email }
957
- * //
958
- * @example
959
- * // or by id that is in list:
960
- * { userIds: { $in: this.userId } }
961
- * // or by userIds:
962
- * { userId: { $in: userIds } }
963
- * //
964
- * @example
965
- * // or by number or Date that is Greater Than AND Less Than:
966
- * { points: { $gt: 2, $lt: 14 } }
967
- * // further tools (syntax matches with $gt):
968
- * $eq: // Matches values that are EQual to a specified value.
969
- * $gte: // Matches values that are Greater Than OR Equal to a specified value.
970
- * $lte: // Matches values that are Less Than or Equal to a specified value.
971
- * $ne: // Matches all values that are Not Equal to a specified value.
972
- * $nin: // Matches None of the values specified IN an array.
973
- * //
974
- *
975
- * @param update this uses the basic Mongoose updateOne
976
- * @example
977
- * // increase a specific value (here by 15):
978
- * { $inc: { popularity: 15 } }
979
- * //
980
- * @example
981
- * // or add element to a list:
982
- * { $push: { reactions: this.newReaction }
983
- * // or add multiple elements to a list
984
- * { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
985
- * //
986
- * @example
987
- * // or all at once
988
- * {
989
- * $inc: { popularity: this.newVote.amount },
990
- * emailVerified: true,
991
- * $push: { reactions: this.newReaction }
992
- * }
993
- * // further tools (syntax matches with $inc):
994
- * $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
995
- * $min: // Only updates the field if the specified value is less than the existing field value.
996
- * $max: // Only updates the field if the specified value is greater than the existing field value.
997
- * $mul: // Multiplies the value of the field by the specified amount.
998
- * $rename: // Renames a field.
999
- * $unset: // Removes the specified field from a document. (set: "" to value)
1000
- * //
1001
- */
1002
- async updateMany(filterBy, update, issuer, dontUpdateModified) {
1003
- if (this.dataParams.forbidModify) {
1004
- await this.modifyThrowMethod(update, issuer);
1005
- }
1006
- if (!dontUpdateModified) {
1007
- update.__lastModified = new Date();
1008
- update.__lastModifiedBy = issuer;
1009
- }
1010
- await this.dataModel
1011
- .updateMany(filterBy, update)
1012
- .catch((error) => {
1013
- throw new fsm_dynamo_1.DyFM_Error({
1014
- ...this._getDefaultErrorSettings('updateMany', error, issuer),
1015
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-UM0`,
1016
- additionalContent: { filterBy, update },
1017
- message: `updateMany "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
1018
- `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
1019
- issuer,
1020
- });
1021
- });
1022
- }
1023
- /**
1024
- * {
1025
- "mappings": {
1026
- "dynamic": true,
1027
- "fields": {
1028
- "embedding": {
1029
- "type": "knnVector",
1030
- "dimensions": 768
1031
- }
1032
- }
1033
- }
1034
- }
1035
- */
1036
- /**
1037
- *
1038
- * @param set db.collection.aggregate([
1039
- {
1040
- $vectorSearch: {
1041
- index: "index_neve",
1042
- queryVector: [a keresett embedding],
1043
- path: "title.embedding",
1044
- numCandidates: 100,
1045
- limit: 5
1046
- }
1047
- },
1048
- {
1049
- $vectorSearch: {
1050
- index: "index_neve",
1051
- queryVector: [a keresett embedding],
1052
- path: "description.embedding",
1053
- numCandidates: 100,
1054
- limit: 5
1055
- }
1056
- }
1057
- ]);
1058
- * @returns
1059
- */
1060
- async aggregate(set) {
1061
- return this.dataModel.aggregate(set);
1062
- }
1063
- // ----------------------------------------------------------------------------------
1064
- // ----------------------------------------------------------------------------------
1065
- // ----------------------------------------------------------------------------------
1066
- // PRIVATE FUNCTIONS
1067
- stringifyDataId(data, fnName) {
1068
- // AT-REST field-decryption (opt-in): ez a KÖZÖS read+write post-processor (minden read + a
1069
- // create/modify EREDMÉNYE is átmegy rajta), ezért itt fejtjük vissza az encrypt:true envelope-
1070
- // mezőket load után. NO-OP, ha nincs encrypt:true mező (ugyanaz a referencia — nulla változás).
1071
- data = field_encryption_util_1.DyNTS_FieldEncryption_Util.decryptDoc(data, this.dataParams.properties);
1072
- if (data?._id && (typeof data._id !== 'string' || typeof data._id === 'object')) {
1073
- data._id = `${data._id}`;
1074
- if (typeof data._id !== 'string' || typeof data._id === 'object') {
1075
- data = JSON.parse(JSON.stringify(data));
1076
- if (typeof data._id !== 'string' || typeof data._id === 'object') {
1077
- fsm_dynamo_1.DyFM_Log.error(`data._id stringifying failed! Please notfiy the DynamoNTS developers! (${fnName})`, new Error());
1078
- }
1079
- }
1080
- }
1081
- return data;
1082
- }
1083
- _getDefaultErrorSettings(fnName, error, issuer) {
1084
- return {
1085
- status: error?.___status ?? 500,
1086
- message: error?.message ??
1087
- error?._message ??
1088
- `${fnName} was UNSUCCESSFUL (NTS-DB)`,
1089
- addECToUserMsg: !error?.__userMessage,
1090
- userMessage: error?.__userMessage ?? this.defaultErrorUserMsg,
1091
- issuer: issuer,
1092
- issuerService: this.serviceName,
1093
- error: error,
1094
- };
1095
- }
1096
- // ----------------------------------------------------------------------------------
1097
- // PRIVATE BUILD FUNCTIONS
1098
- /**
1099
- * builds and returns mongoose schema
1100
- * @returns schema
1101
- */
1102
- getSchema() {
1103
- this.dataParams.properties = this.addMetadataToProperties(this.dataParams.properties);
1104
- if (this.dataParams.dataName.includes(archive_util_1.DyNTS_archiveSuffix)) {
1105
- this.dataParams.properties = this.addArchiveMetadataToProperties(this.dataParams.properties);
1106
- }
1107
- const schemaSettings = this.buildMongooseSchemaSettingsObjByModelParams(this.dataParams.properties);
1108
- /* schema = this.addMetadataToSchema(schema); */
1109
- /* if (this.dataParams.dataName.includes(DyNTS_archiveSuffix)) {
1110
- schema = this.addArchiveMetadataToSchema(schema);
1111
- } */
1112
- if (schemaSettings['_id']) {
1113
- delete schemaSettings['_id'];
1114
- }
1115
- return new mongoose_1.Schema(schemaSettings);
1116
- }
1117
- /**
1118
- * builds mongoose schema building settings object by dynamoDataModelParamsList
1119
- * @param properties DynamoNTSDataPropertyParams
1120
- * @returns mongoose schema object
1121
- */
1122
- buildMongooseSchemaSettingsObjByModelParams(properties) {
1123
- const schemaSettingsObj = {};
1124
- /* if (!properties) {
1125
- properties = this.dataParams.properties;
1126
- } */
1127
- Object.values(properties).forEach((property) => {
1128
- if (!property) {
1129
- fsm_dynamo_1.DyFM_Log.warn(`property is undefined on "${this.dataParams.dataName}" (NTS DB)`);
1130
- return;
1131
- }
1132
- if (!property.key) {
1133
- const missingKeys = Object.keys(properties).filter((key) => !properties[key].key);
1134
- throw new fsm_dynamo_1.DyFM_Error({
1135
- ...this._getDefaultErrorSettings('buildMongooseSchemaByModelParams', new Error(`property.key is undefined on "${this.dataParams.dataName}" (NTS DB) ` +
1136
- `(keys: ${Object.keys(properties).join(', ')}) ` +
1137
- `(missing keys: ${missingKeys.join(', ')})`)),
1138
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-BMSBP0`,
1139
- additionalContent: {
1140
- property: property,
1141
- dataParams: this.dataParams,
1142
- missingKeys: missingKeys,
1143
- },
1144
- });
1145
- }
1146
- if (property.forbidden) {
1147
- return;
1148
- }
1149
- const beType = this.getBEType(property.type);
1150
- /* TODO if (beType === Array && property.archiveable && !property.archiveListAfter) {
1151
- property.archiveListAfter = DyNTS_global_settings.archiveListAfter;
1152
- } */
1153
- if (beType !== Object ||
1154
- !property?.subObjectParams ||
1155
- (property?.subObjectParams &&
1156
- Object.keys(property.subObjectParams).length == 0)) {
1157
- schemaSettingsObj[property.key] = {
1158
- type: beType,
1159
- };
1160
- if (property.index) {
1161
- schemaSettingsObj[property.key].index = true;
1162
- }
1163
- if (property.unique) {
1164
- schemaSettingsObj[property.key].unique = true;
1165
- }
1166
- if (property.required) {
1167
- schemaSettingsObj[property.key].required = true;
1168
- }
1169
- if (property.minlength) {
1170
- schemaSettingsObj[property.key].minlength = property.minlength;
1171
- }
1172
- if (property.maxlength) {
1173
- schemaSettingsObj[property.key].maxlength = property.maxlength;
1174
- }
1175
- }
1176
- else {
1177
- schemaSettingsObj[property.key] = this.buildMongooseSchemaSettingsObjByModelParams(property.subObjectParams);
1178
- }
1179
- });
1180
- return schemaSettingsObj;
1181
- }
1182
- getBEType(type) {
1183
- switch (type) {
1184
- case fsm_dynamo_1.DyFM_BasicProperty_Type.string:
1185
- return String;
1186
- case fsm_dynamo_1.DyFM_BasicProperty_Type.number:
1187
- return Number;
1188
- case fsm_dynamo_1.DyFM_BasicProperty_Type.boolean:
1189
- return Boolean;
1190
- case fsm_dynamo_1.DyFM_BasicProperty_Type.date:
1191
- return Date;
1192
- case fsm_dynamo_1.DyFM_BasicProperty_Type.object:
1193
- return Object;
1194
- case fsm_dynamo_1.DyFM_BasicProperty_Type.array:
1195
- return Array;
1196
- case fsm_dynamo_1.DyFM_BasicProperty_Type.function:
1197
- return Function;
1198
- default:
1199
- fsm_dynamo_1.DyFM_Log.H_info('wtf', fsm_dynamo_1.DyFM_Object.cleanObject(this.dataParams));
1200
- throw new fsm_dynamo_1.DyFM_Error({
1201
- error: new Error(`Invalid property type: "${type}" (${this.dataParams.dataName})` +
1202
- (this.dataParams.constructed?.() ? '' : ('\nThe dataParams is not constructed properly! \n' +
1203
- 'Use the DyFM_DataModel_Params.constructor to construct it properly!'))),
1204
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GTP0`,
1205
- additionalContent: { type: type, dataParams: this.dataParams },
1206
- __localStack: this.dataParams.stackLocation,
1207
- });
1208
- }
1209
- /* switch (type.toLocaleLowerCase()) {
1210
- case DyFM_BasicProperty_Type.string:
1211
- case 'string':
1212
- return String;
1213
-
1214
- case DyFM_BasicProperty_Type.number:
1215
- case 'number':
1216
- return Number;
1217
-
1218
- case DyFM_BasicProperty_Type.boolean:
1219
- case 'boolean':
1220
- return Boolean;
1221
-
1222
- case DyFM_BasicProperty_Type.date:
1223
- case 'date':
1224
- return Date;
1225
-
1226
- case DyFM_BasicProperty_Type.object:
1227
- case 'object':
1228
- return Object;
1229
-
1230
- case DyFM_BasicProperty_Type.array:
1231
- case 'array':
1232
- return Array;
1233
-
1234
- default:
1235
- if (type.includes('[]') || type.includes('array')) {
1236
- return Array;
1237
- } else if (type.includes('=>') || type.includes('function')) {
1238
- return Function;
1239
- } else {
1240
- return Object;
1241
- }
1242
- } */
1243
- }
1244
- /**
1245
- * adds dynamo metadata settings to any mongoose schema building settings object
1246
- * @param schema schema to update
1247
- * @returns updated schema
1248
- */
1249
- /* private addMetadataToSchema(schema: any): any {
1250
- schema.__created = { type: Date };
1251
- schema.__createdBy = { type: String };
1252
- schema.__lastModified = { type: Date };
1253
- schema.__lastModifiedBy = { type: String };
1254
-
1255
- schema._deleted = { type: Date };
1256
- schema._deletedBy = { type: String };
1257
-
1258
- return schema;
1259
- } */
1260
- /**
1261
- * adds dynamo metadata settings to any mongoose schema building settings object
1262
- * @param properties properties to update
1263
- * @returns updated properties
1264
- */
1265
- addMetadataToProperties(properties) {
1266
- // TOD: ezek a kikommentelt "required: true"-k kellenek, csak félő, hogy gondokat okoznak a
1267
- // jelenlegi rendszerekben, ezért akkor kell majd visszarakni, ha lesz tesztelői ÉS fejlesztői kapacitás rá
1268
- if (!properties.__created) {
1269
- properties.__created = {
1270
- key: '__created', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date /* , required: true */,
1271
- };
1272
- }
1273
- if (!properties.__createdBy) {
1274
- properties.__createdBy = {
1275
- key: '__createdBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string /* , required: true */,
1276
- };
1277
- }
1278
- if (!properties.__lastModified) {
1279
- properties.__lastModified = {
1280
- key: '__lastModified', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date /* , required: true */,
1281
- };
1282
- }
1283
- if (!properties.__lastModifiedBy) {
1284
- properties.__lastModifiedBy = {
1285
- key: '__lastModifiedBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string /* , required: true */,
1286
- };
1287
- }
1288
- if (!properties._deleted) {
1289
- properties._deleted = {
1290
- key: '_deleted', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1291
- };
1292
- }
1293
- if (!properties._deletedBy) {
1294
- properties._deletedBy = {
1295
- key: '_deletedBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string,
1296
- };
1297
- }
1298
- if (!properties._archived) {
1299
- properties._archived = {
1300
- key: '_archived', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1301
- };
1302
- }
1303
- return properties;
1304
- }
1305
- /* private addArchiveMetadataToSchema(schema: any): any {
1306
- schema._originalId = { type: String, required: true, index: true, unique: true };
1307
- schema._archived = { type: Date, required: true };
1308
-
1309
- return schema;
1310
- } */
1311
- addArchiveMetadataToProperties(properties) {
1312
- if (!properties._originalId) {
1313
- properties._originalId = {
1314
- key: '_originalId', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string,
1315
- required: true, index: true, unique: true,
1316
- };
1317
- }
1318
- if (!properties._archived) {
1319
- properties._archived = {
1320
- key: '_archived', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1321
- required: true,
1322
- };
1323
- }
1324
- else if (properties._archived.required === undefined) {
1325
- properties._archived.required = true;
1326
- }
1327
- return properties;
1328
- }
1329
- /**
1330
- * sets depDataKey
1331
- */
1332
- lookForDependencyDataSettings() {
1333
- const dependencyParams = Object.values(this.dataParams.properties).filter((modelParams) => Boolean(modelParams.dependencyDataName));
1334
- if (dependencyParams) {
1335
- this.depKeys.push(...dependencyParams.map((dependencyParam) => dependencyParam.key));
1336
- }
1337
- }
1338
- async deleteThrowMethod(data, issuer) {
1339
- throw new fsm_dynamo_1.DyFM_Error({
1340
- error: new Error(`Forbidden to delete any data! (${this.dataParams.dataName})`),
1341
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
1342
- additionalContent: { dataParams: this.dataParams, data: data },
1343
- issuer: issuer,
1344
- });
1345
- }
1346
- ;
1347
- async modifyThrowMethod(data, issuer) {
1348
- throw new fsm_dynamo_1.DyFM_Error({
1349
- error: new Error(`Forbidden to modify any data! (${this.dataParams.dataName})`),
1350
- errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
1351
- additionalContent: { dataParams: this.dataParams, data: data },
1352
- issuer: issuer,
1353
- });
1354
- }
1355
- }
1356
- exports.DyNTS_DBService = DyNTS_DBService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_DBService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mongoose = tslib_1.__importStar(require("mongoose"));
6
+ const mongoose_1 = require("mongoose");
7
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
8
+ const archive_util_1 = require("../../_collections/archive.util");
9
+ const field_encryption_util_1 = require("../../_collections/field-encryption.util");
10
+ const global_settings_const_1 = require("../../_collections/global-settings.const");
11
+ /**
12
+ * DB Service for MongoDB
13
+ */
14
+ class DyNTS_DBService {
15
+ dataParams;
16
+ serviceName;
17
+ dataModel /* : mongoose.Model<T> */; // = mongoose.model(this.dataParams.dataName, this.getSchema());
18
+ /* private depDataName: string; */
19
+ depKeys = [];
20
+ defaultErrorUserMsg = `We encountered an unhandled DB Error, ` +
21
+ `\nplease contact the responsible development team.`;
22
+ /**
23
+ * @param dataName name the model
24
+ * @param typeSample sample data for scheme creation (dont include DyFM_Metadata!)
25
+ * @param schemaSettings additional settings for specific parameters as unique, required, minlength or maxlength
26
+ * schemaSettings also MUST contain specific types that differs from the listed above (Array, Date)
27
+ */
28
+ constructor(dataParams) {
29
+ this.dataParams = dataParams;
30
+ try {
31
+ this.serviceName = this.constructor?.name;
32
+ if (!this.dataParams.dataName || typeof this.dataParams.dataName !== 'string') {
33
+ throw new Error(`dbName not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`);
34
+ }
35
+ if (!this.dataParams.constructed?.()) {
36
+ throw new fsm_dynamo_1.DyFM_Error({
37
+ error: new Error(`DataModelParams is not constructed properly! (${this.dataParams.dataName}) ` +
38
+ `Use the DyFM_DataModel_Params.constructor to construct it properly! (NTS DB)`),
39
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-C01`,
40
+ additionalContent: { dataParams: this.dataParams },
41
+ __localStack: this.dataParams.stackLocation,
42
+ });
43
+ }
44
+ try {
45
+ this.dataModel = mongoose.model(this.dataParams.dataName, this.getSchema());
46
+ }
47
+ catch (error) {
48
+ if (mongoose.models[this.dataParams.dataName]) {
49
+ this.dataModel = mongoose.models[this.dataParams.dataName];
50
+ }
51
+ else {
52
+ throw error;
53
+ }
54
+ }
55
+ this.lookForDependencyDataSettings();
56
+ }
57
+ catch (error) {
58
+ throw new fsm_dynamo_1.DyFM_Error({
59
+ message: `DyNTS_DBService construction failed! "${dataParams.dataName}" - "${this.serviceName}"`,
60
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-C00`,
61
+ level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
62
+ additionalContent: { dataParams: this.dataParams },
63
+ error,
64
+ });
65
+ }
66
+ }
67
+ /**
68
+ * save new data
69
+ * @param data data
70
+ * @returns data
71
+ */
72
+ async createData(data, issuer) {
73
+ data.__created = new Date();
74
+ data.__lastModified = new Date();
75
+ data.__createdBy = issuer;
76
+ data.__lastModifiedBy = issuer;
77
+ // AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
78
+ // KLÓNON (a hívó `data`-ja plaintext marad). NO-OP, ha nincs encrypt:true mező.
79
+ const encData = field_encryption_util_1.DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
80
+ const dataModel = new this.dataModel(encData);
81
+ const newData = await dataModel.save().then((res) => {
82
+ if (res) {
83
+ return res?.toObject();
84
+ }
85
+ else {
86
+ throw new fsm_dynamo_1.DyFM_Error({
87
+ ...this._getDefaultErrorSettings('createData', new Error(`createData failed, save "${this.dataParams.dataName}" result not found! (NTS DB)`), issuer),
88
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CD1`,
89
+ additionalContent: { data },
90
+ issuer,
91
+ });
92
+ }
93
+ }).catch((error) => {
94
+ if (error?.flag?.includes('DYNAMO')) {
95
+ throw error;
96
+ }
97
+ else {
98
+ throw new fsm_dynamo_1.DyFM_Error({
99
+ ...this._getDefaultErrorSettings('createData', error, issuer),
100
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CD0`,
101
+ additionalContent: {
102
+ data: data,
103
+ dataModel: this.dataModel,
104
+ },
105
+ message: `createData failed, Create new "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
106
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
107
+ issuer,
108
+ });
109
+ }
110
+ });
111
+ return this.stringifyDataId(newData, 'createData');
112
+ }
113
+ /**
114
+ * Find data by _id and update
115
+ * @param data data
116
+ * @returns data
117
+ */
118
+ async modifyData(data, issuer, dontUpdateModified) {
119
+ if (this.dataParams.forbidModify) {
120
+ await this.modifyThrowMethod(data, issuer);
121
+ }
122
+ if (!dontUpdateModified) {
123
+ data.__lastModified = new Date();
124
+ data.__lastModifiedBy = issuer;
125
+ }
126
+ // AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
127
+ // KLÓNON. KRITIKUS: a `findByIdAndUpdate` MEGKERÜLI a mongoose settereket/pre-save-hookokat, ezért
128
+ // a titkosítás itt, app-rétegben történik (nem mongoose-hookban). A hívó `data`-ja plaintext marad,
129
+ // így a `stringifyDataId(data)` alant no-op decrypttel a plaintextet adja vissza. NO-OP enc-mező nélkül.
130
+ const encData = field_encryption_util_1.DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
131
+ /**
132
+ * EZ A SZAR TELJESEN SZAR, nem friss, nem a db-be mentett adatokat ad vissza,
133
+ * átír random value-kat össze vissza, WTF
134
+ * */
135
+ /* let newData: T = */
136
+ await this.dataModel.findByIdAndUpdate(data._id, encData) /* .then((res) => {
137
+ if (res) {
138
+ //return res?.toObject() as T;
139
+ } else {
140
+ throw new DyFM_Error({
141
+ ...this._getDefaultErrorSettings(
142
+ 'modifyData',
143
+ new Error(`modifyData failed, modify "${this.dataParams.dataName}" result not found! (NTS DB)`),
144
+ issuer,
145
+ ),
146
+
147
+ status: 204,
148
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FU1`,
149
+ additionalContent: { data },
150
+ issuer,
151
+ });
152
+ }
153
+ }) */
154
+ .catch((error) => {
155
+ throw new fsm_dynamo_1.DyFM_Error({
156
+ ...this._getDefaultErrorSettings('modifyData', error, issuer),
157
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FU0`,
158
+ additionalContent: { data },
159
+ message: `modifyData "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
160
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
161
+ issuer,
162
+ });
163
+ });
164
+ return this.stringifyDataId(data, 'modifyData');
165
+ }
166
+ // TODO: Missing issuer
167
+ /**
168
+ * returns data by _id,
169
+ * @param id id
170
+ * @returns data
171
+ */
172
+ async getDataById(id) {
173
+ if (!id) {
174
+ throw new fsm_dynamo_1.DyFM_Error({
175
+ ...this._getDefaultErrorSettings('getDataById', new Error(`No ID provided! (NTS DB)`)),
176
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GI1`,
177
+ message: `get "${this.dataParams.dataName}" by ID was unsuccessful (NTS DB)`,
178
+ });
179
+ }
180
+ const data = await this.dataModel
181
+ .findById(id)
182
+ .then((res) => res?.toObject() ?? null)
183
+ .catch((error) => {
184
+ throw new fsm_dynamo_1.DyFM_Error({
185
+ ...this._getDefaultErrorSettings('getDataById', error),
186
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GI0`,
187
+ additionalContent: { id },
188
+ message: `get "${this.dataParams.dataName}" by ID was unsuccessful (NTS DB)` +
189
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
190
+ });
191
+ });
192
+ return this.stringifyDataId(data, 'getDataById');
193
+ }
194
+ // TODO: Missing issuer
195
+ /**
196
+ * get data by dependency data id,
197
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-GD2)
198
+ *
199
+ * @param dependencyIdsFilter id
200
+ * @returns data
201
+ */
202
+ async getDataByDependencyId(dependencyIdsFilter) {
203
+ if (!this.depKeys.length) {
204
+ throw new fsm_dynamo_1.DyFM_Error({
205
+ ...this._getDefaultErrorSettings('getDataByDependencyId', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
206
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GD0`,
207
+ });
208
+ }
209
+ const data = await this.dataModel
210
+ .findOne(dependencyIdsFilter)
211
+ .then((res) => res?.toObject() ?? null)
212
+ .catch((error) => {
213
+ throw new fsm_dynamo_1.DyFM_Error({
214
+ ...this._getDefaultErrorSettings('getDataByDependencyId', error),
215
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GD1`,
216
+ additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
217
+ message: `get "${this.dataParams.dataName}" by ` +
218
+ `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
219
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
220
+ });
221
+ });
222
+ return this.stringifyDataId(data, 'getDataByDependencyId');
223
+ }
224
+ // TODO: Missing issuer
225
+ async getDataListByIds(ids, findDeleted) {
226
+ const dataList = await this.dataModel
227
+ .find({ _id: { $in: ids } })
228
+ .then((res) => res ?? [])
229
+ .catch((error) => {
230
+ throw new fsm_dynamo_1.DyFM_Error({
231
+ ...this._getDefaultErrorSettings('getDataListByIds', error),
232
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GDL0`,
233
+ additionalContent: { ids },
234
+ message: `get "${this.dataParams.dataName}" by IDs was unsuccessful (NTS DB)` +
235
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
236
+ });
237
+ });
238
+ if (!findDeleted) {
239
+ return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
240
+ }
241
+ else {
242
+ return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
243
+ }
244
+ }
245
+ // TODO: Missing issuer
246
+ /**
247
+ * get data by dependency data id,
248
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-GLD2)
249
+ *
250
+ * @param dependencyIdsFilter id
251
+ * @returns dataList
252
+ */
253
+ async getDataListByDependencyId(dependencyIdsFilter, findDeleted) {
254
+ if (!this.depKeys.length) {
255
+ throw new fsm_dynamo_1.DyFM_Error({
256
+ ...this._getDefaultErrorSettings('getDataListByDependencyId', new Error(`isDependencyHook not setted up for this dataModel (${this.dataParams.dataName}) (NTS DB)`)),
257
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLD0`,
258
+ additionalContent: {
259
+ dataModel: this.dataModel,
260
+ },
261
+ });
262
+ }
263
+ const dataList = await this.dataModel
264
+ .find(dependencyIdsFilter)
265
+ .then((res) => res ?? [])
266
+ .catch((error) => {
267
+ throw new fsm_dynamo_1.DyFM_Error({
268
+ ...this._getDefaultErrorSettings('getDataListByDependencyId', error),
269
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLD1`,
270
+ additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
271
+ message: `get "${this.dataParams.dataName}" by ` +
272
+ `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
273
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
274
+ });
275
+ });
276
+ if (!findDeleted) {
277
+ return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
278
+ }
279
+ else {
280
+ return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyId'));
281
+ }
282
+ }
283
+ // TODO: Missing issuer
284
+ /**
285
+ * get multiple data objects by a list of DependencyIDs,
286
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-GLDS2)
287
+ *
288
+ * @param ids ids
289
+ * @returns dataList
290
+ */
291
+ async getDataListByDependencyIds(dependencyKey, dependencyIds, findDeleted) {
292
+ if (!this.depKeys.length) {
293
+ throw new fsm_dynamo_1.DyFM_Error({
294
+ ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`getDataListByDependencyIds not setted up for this db-service ` +
295
+ `(${this.dataParams.dataName}) (NTS DB)`)),
296
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLDS0`,
297
+ });
298
+ }
299
+ if (!dependencyIds?.length) {
300
+ return [];
301
+ }
302
+ if (!dependencyKey) {
303
+ throw new fsm_dynamo_1.DyFM_Error({
304
+ ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`dependencyKey is missing! (${this.dataParams.dataName}) (NTS DB)`)),
305
+ });
306
+ }
307
+ if (!this.depKeys.includes(dependencyKey)) {
308
+ throw new fsm_dynamo_1.DyFM_Error({
309
+ ...this._getDefaultErrorSettings('getDataListByDependencyIds', new Error(`dependencyKey is not valid! (${dependencyKey}) (NTS DB)`)),
310
+ });
311
+ }
312
+ const dataList = await this.dataModel
313
+ .find({
314
+ [dependencyKey]: { $in: dependencyIds },
315
+ })
316
+ .then((res) => res ?? [])
317
+ .catch((error) => {
318
+ throw new fsm_dynamo_1.DyFM_Error({
319
+ ...this._getDefaultErrorSettings('getDataListByDependencyIds', error),
320
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GLDS1`,
321
+ additionalContent: { dependencyIds },
322
+ message: `get "${this.dataParams.dataName}" by "${dependencyKey}" was unsuccessful (NTS DB)` +
323
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
324
+ });
325
+ });
326
+ if (!findDeleted) {
327
+ return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getDataListByDependencyIds'));
328
+ }
329
+ else {
330
+ return dataList.map((data) => this.stringifyDataId(data, 'getDataListByDependencyIds'));
331
+ }
332
+ }
333
+ // TODO: Missing issuer
334
+ /**
335
+ * returns all data from database,
336
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-GA1)
337
+ *
338
+ * @returns dataList
339
+ */
340
+ async getAll(findDeleted) {
341
+ const dataList = await this.dataModel
342
+ .find()
343
+ .then((res) => res ?? [])
344
+ .catch((error) => {
345
+ throw new fsm_dynamo_1.DyFM_Error({
346
+ ...this._getDefaultErrorSettings('getAll', error),
347
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GA0`,
348
+ message: `get all "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
349
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
350
+ });
351
+ });
352
+ if (!findDeleted) {
353
+ return dataList.filter((data) => !data._deleted).map((data) => this.stringifyDataId(data, 'getAll'));
354
+ }
355
+ else {
356
+ return dataList.map((data) => this.stringifyDataId(data, 'getAll'));
357
+ }
358
+ }
359
+ async markDeletedById(id, issuer) {
360
+ if (this.dataParams.forbidDelete) {
361
+ await this.deleteThrowMethod(id, issuer);
362
+ }
363
+ await this.dataModel.findByIdAndUpdate(id, {
364
+ _deleted: new Date(),
365
+ _deletedBy: issuer,
366
+ }).catch((error) => {
367
+ throw new fsm_dynamo_1.DyFM_Error({
368
+ ...this._getDefaultErrorSettings('markDeletedById', error, issuer),
369
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-MD0`,
370
+ additionalContent: { id },
371
+ message: `mark deleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
372
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
373
+ issuer,
374
+ });
375
+ });
376
+ }
377
+ async markDeletedByDependencyId(dependencyIdsFilter, issuer) {
378
+ if (this.dataParams.forbidDelete) {
379
+ await this.deleteThrowMethod(dependencyIdsFilter, issuer);
380
+ }
381
+ await this.dataModel.updateMany(dependencyIdsFilter, {
382
+ _deleted: new Date(),
383
+ _deletedBy: issuer,
384
+ }).catch((error) => {
385
+ throw new fsm_dynamo_1.DyFM_Error({
386
+ ...this._getDefaultErrorSettings('markDeletedByDependencyId', error, issuer),
387
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-MDD0`,
388
+ additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
389
+ message: `markDeleted "${this.dataParams.dataName}" by ` +
390
+ `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
391
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
392
+ issuer,
393
+ });
394
+ });
395
+ }
396
+ async restoreDeletedById(id, issuer) {
397
+ await this.dataModel.findByIdAndUpdate(id, {
398
+ _deleted: null,
399
+ __lastModified: new Date(),
400
+ __lastModifiedBy: issuer,
401
+ }).catch((error) => {
402
+ throw new fsm_dynamo_1.DyFM_Error({
403
+ ...this._getDefaultErrorSettings('restoreDeletedById', error, issuer),
404
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-RD0`,
405
+ additionalContent: { id },
406
+ message: `restoreDeleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
407
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
408
+ issuer,
409
+ });
410
+ });
411
+ }
412
+ async restoreDeletedByDependencyId(dependencyIdsFilter, issuer) {
413
+ await this.dataModel.updateMany(dependencyIdsFilter, {
414
+ _deleted: null,
415
+ __lastModified: new Date(),
416
+ __lastModifiedBy: issuer,
417
+ }).catch((error) => {
418
+ throw new fsm_dynamo_1.DyFM_Error({
419
+ ...this._getDefaultErrorSettings('restoreDeletedByDependencyId', error, issuer),
420
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-RDD0`,
421
+ additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
422
+ message: `restoreDeleted "${this.dataParams.dataName}" by ` +
423
+ `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
424
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
425
+ issuer,
426
+ });
427
+ });
428
+ }
429
+ // TODO: Missing issuer
430
+ async getDeletedDataList() {
431
+ const dataList = await this.dataModel
432
+ .getAll()
433
+ .then((res) => res ?? [])
434
+ .catch((error) => {
435
+ throw new fsm_dynamo_1.DyFM_Error({
436
+ ...this._getDefaultErrorSettings('getDeletedData', error),
437
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GDD0`,
438
+ message: `get deleted "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
439
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
440
+ });
441
+ });
442
+ return dataList.filter((data) => Boolean(data._deleted)).map((data) => this.stringifyDataId(data, 'getDeletedData'));
443
+ }
444
+ // TODO: Missing issuer
445
+ /**
446
+ * deleted data by id
447
+ * @param id id
448
+ */
449
+ async trueDeleteDataById(id) {
450
+ if (this.dataParams.forbidDelete) {
451
+ await this.deleteThrowMethod(id /* , issuer */);
452
+ }
453
+ await this.dataModel
454
+ .findByIdAndDelete(id)
455
+ .catch((error) => {
456
+ throw new fsm_dynamo_1.DyFM_Error({
457
+ ...this._getDefaultErrorSettings('deleteDataById', error),
458
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DD0`,
459
+ additionalContent: { id },
460
+ message: `delete "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
461
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
462
+ });
463
+ });
464
+ }
465
+ deleteDataById = this.trueDeleteDataById;
466
+ // TODO: Missing issuer
467
+ /**
468
+ * deleted data by id
469
+ * @param dependencyId id
470
+ */
471
+ async trueDeleteDataByDependencyId(dependencyIdsFilter) {
472
+ if (this.dataParams.forbidDelete) {
473
+ await this.deleteThrowMethod(dependencyIdsFilter /* , issuer */);
474
+ }
475
+ if (!this.depKeys.length) {
476
+ throw new fsm_dynamo_1.DyFM_Error({
477
+ ...this._getDefaultErrorSettings('deleteDataByDependencyId', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
478
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DDD0`,
479
+ });
480
+ }
481
+ await this.dataModel
482
+ .deleteMany(dependencyIdsFilter)
483
+ .catch((error) => {
484
+ throw new fsm_dynamo_1.DyFM_Error({
485
+ ...this._getDefaultErrorSettings('deleteDataByDependencyId', error),
486
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DDD1`,
487
+ additionalContent: { dependencyIdsFilter: dependencyIdsFilter },
488
+ message: `delete "${this.dataParams.dataName}" by ` +
489
+ `"${Object.keys(dependencyIdsFilter).join(', ')}" was unsuccessful (NTS DB)` +
490
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
491
+ });
492
+ });
493
+ }
494
+ deleteDataByDependencyId = this.trueDeleteDataByDependencyId;
495
+ // TODO: Missing issuer
496
+ async trueDeleteAllData() {
497
+ if (this.dataParams.forbidDelete) {
498
+ await this.deleteThrowMethod(null /* , issuer */);
499
+ }
500
+ await this.dataModel.deleteMany().catch((error) => {
501
+ throw new fsm_dynamo_1.DyFM_Error({
502
+ ...this._getDefaultErrorSettings('deleteAllData', error),
503
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-DAD0`,
504
+ message: `delete all "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
505
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
506
+ });
507
+ });
508
+ }
509
+ deleteAllData = this.trueDeleteAllData;
510
+ // TODO: Missing issuer
511
+ /**
512
+ * returns search result for searchBy object params
513
+ * can use lists or xRange values for searchBy obj properties
514
+ *
515
+ * @param filterBy filter
516
+ * @param narrowByDependencyIds id
517
+ * @returns dataList
518
+ */
519
+ /**
520
+ * BFR-AM-013 — LEAN + projektált + BATCH-elt cursor-scan (OOM-safe nagy collection-ökhöz).
521
+ *
522
+ * A teljes result-set SOSEM él egyszerre a heapen: a Mongo-cursor batch-enként adagolja a
523
+ * PLAIN (lean, nem-Mongoose-doc) objektumokat a `handler`-nek — a Mongoose-doc-boxing tranziens
524
+ * (a 32k-vektoros LVS-hidratálás 93%-heap-spike-jának gyökere) kimarad. A `projection`-nel csak
525
+ * a szükséges mezők jönnek (pl. `{ vectorId: 1, embedding: 1 }` a content-szöveg NÉLKÜL).
526
+ * Visszaadja a feldolgozott dokumentumok számát.
527
+ */
528
+ async findLeanBatched(filterBy, set) {
529
+ const batchSize = set.batchSize && set.batchSize > 0 ? set.batchSize : 500;
530
+ const cursor = this.dataModel.find(filterBy, set.projection).lean().cursor();
531
+ let batch = [];
532
+ let total = 0;
533
+ for await (const doc of cursor) {
534
+ batch.push(doc);
535
+ total++;
536
+ if (batch.length >= batchSize) {
537
+ await set.handler(batch);
538
+ batch = [];
539
+ }
540
+ }
541
+ if (batch.length) {
542
+ await set.handler(batch);
543
+ }
544
+ return total;
545
+ }
546
+ async searchData(filterBy, narrowByDependencyIds, narrowByDependencyKey, findDeleted) {
547
+ const filter = {};
548
+ if (0 < narrowByDependencyIds.length) {
549
+ if (!this.depKeys.length) {
550
+ throw new fsm_dynamo_1.DyFM_Error({
551
+ ...this._getDefaultErrorSettings('searchData', new Error(`dependencyDataIdKey not setted up for this db-service (${this.dataParams.dataName}) (NTS DB)`)),
552
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-SD0`,
553
+ });
554
+ }
555
+ if (!narrowByDependencyKey) {
556
+ if (this.depKeys.length === 1) {
557
+ narrowByDependencyKey = this.depKeys[0];
558
+ }
559
+ else {
560
+ throw new fsm_dynamo_1.DyFM_Error({
561
+ ...this._getDefaultErrorSettings('searchData', new Error(`dependencyKey is missing! (${this.dataParams.dataName}) (NTS DB)`)),
562
+ });
563
+ }
564
+ }
565
+ filter[narrowByDependencyKey] = { $in: narrowByDependencyIds };
566
+ }
567
+ Object.values(this.dataParams.properties).forEach((modelParam) => {
568
+ if ((filterBy[modelParam.key] !== null && filterBy[modelParam.key] !== undefined) ||
569
+ filterBy[modelParam.key + 'Range']) {
570
+ if (modelParam.key.includes('Range') || modelParam.type.includes('[]')) {
571
+ // inverz search filter (for Range and Array functions)
572
+ if (modelParam.key.includes('Range')) {
573
+ const searchParamKeyWithoutRange = modelParam.key.split('Range')[0];
574
+ if (filterBy[searchParamKeyWithoutRange] !== null &&
575
+ filterBy[searchParamKeyWithoutRange] !== undefined) {
576
+ filter[modelParam.key] = {
577
+ from: { $lte: filterBy[searchParamKeyWithoutRange] },
578
+ to: { $gte: filterBy[searchParamKeyWithoutRange] },
579
+ };
580
+ }
581
+ }
582
+ else {
583
+ if (filterBy[modelParam.key] !== null &&
584
+ filterBy[modelParam.key] !== undefined) {
585
+ filter[modelParam.key] = { $in: filterBy[modelParam.key] };
586
+ }
587
+ }
588
+ }
589
+ else {
590
+ // basic search filter
591
+ if (filterBy[modelParam.key + 'Range']) {
592
+ if (filterBy[modelParam.key + 'Range'].from ||
593
+ filterBy[modelParam.key + 'Range'].to) {
594
+ filter[modelParam.key] = {};
595
+ if (filterBy[modelParam.key + 'Range'].from) {
596
+ filter[modelParam.key].$gte = filterBy[modelParam.key + 'Range'].from;
597
+ }
598
+ if (filterBy[modelParam.key + 'Range'].to) {
599
+ filter[modelParam.key].$lte = filterBy[modelParam.key + 'Range'].to;
600
+ }
601
+ }
602
+ }
603
+ else if (filterBy[modelParam.key] !== null &&
604
+ filterBy[modelParam.key] !== undefined) {
605
+ if (filterBy[modelParam.key].lenght > 0) {
606
+ filter[modelParam.key] = { $in: filterBy[modelParam.key] };
607
+ }
608
+ }
609
+ }
610
+ }
611
+ });
612
+ let dataList = await this.dataModel
613
+ .find(filter)
614
+ .then((res) => res ?? [])
615
+ .catch((error) => {
616
+ throw new fsm_dynamo_1.DyFM_Error({
617
+ ...this._getDefaultErrorSettings('searchData', error),
618
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-SD1`,
619
+ additionalContent: { filterBy, narrowByDependencyIds },
620
+ message: `search "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
621
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
622
+ });
623
+ });
624
+ if (!findDeleted && filterBy._deleted === undefined) {
625
+ dataList = dataList.filter((data) => !data._deleted);
626
+ }
627
+ return dataList.map((data) => this.stringifyDataId(data, 'searchData'));
628
+ }
629
+ // ----------------------------------------------------------------------------------
630
+ // ----------------------------------------------------------------------------------
631
+ // ----------------------------------------------------------------------------------
632
+ // DIRECT Basic MONGOOSE FUNCTIONS (with error handlings)
633
+ /**
634
+ * Find the data first by any of its parameters,
635
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-FO1)
636
+ *
637
+ * @param filterBy if you can, use unique parameters for find!
638
+ *
639
+ * @example
640
+ * // by email:
641
+ * { email: email }
642
+ * //
643
+ * @example
644
+ * // or by id that is in list:
645
+ * { userIds: { $in: this.userId } }
646
+ * // or by userIds:
647
+ * { userId: { $in: userIds } }
648
+ * //
649
+ * @example
650
+ * // or by number or Date that is Greater Than AND Less Than:
651
+ * { points: { $gt: 2, $lt: 14 } }
652
+ * // further tools (syntax matches with $gt):
653
+ * $eq: // Matches values that are EQual to a specified value.
654
+ * $gte: // Matches values that are Greater Than OR Equal to a specified value.
655
+ * $lte: // Matches values that are Less Than or Equal to a specified value.
656
+ * $ne: // Matches all values that are Not Equal to a specified value.
657
+ * $nin: // Matches None of the values specified IN an array.
658
+ * //
659
+ * @returns {T} data: T
660
+ */
661
+ async findOne(filterBy) {
662
+ const data = await this.dataModel
663
+ .findOne(filterBy)
664
+ .then((res) => res ?? null)
665
+ .catch((error) => {
666
+ throw new fsm_dynamo_1.DyFM_Error({
667
+ ...this._getDefaultErrorSettings('findOne', error),
668
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FO0`,
669
+ additionalContent: { filterBy },
670
+ message: `findOne "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
671
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
672
+ });
673
+ });
674
+ return this.stringifyDataId(data, 'findOne');
675
+ }
676
+ /**
677
+ * #MONGOOSE FUNCTION
678
+ * Find the data first by any of its parameters,
679
+ * !!!: throws error if not found (errorCode on not found: NTS-DBS-F1)
680
+ *
681
+ * @param filterBy if you can, use unique parameters for find!
682
+ *
683
+ * @example
684
+ * // by email:
685
+ * { email: email }
686
+ * //
687
+ * @example
688
+ * // or by id that is in list:
689
+ * { userIds: { $in: this.userId } }
690
+ * // or by userIds:
691
+ * { userId: { $in: userIds } }
692
+ * //
693
+ * @example
694
+ * // or by number or Date that is Greater Than AND Less Than:
695
+ * { points: { $gt: 2, $lt: 14 } }
696
+ * // further tools (syntax matches with $gt):
697
+ * $eq: // Matches values that are EQual to a specified value.
698
+ * $gte: // Matches values that are Greater Than OR Equal to a specified value.
699
+ * $lte: // Matches values that are Less Than or Equal to a specified value.
700
+ * $ne: // Matches all values that are Not Equal to a specified value.
701
+ * $nin: // Matches None of the values specified IN an array.
702
+ * //
703
+ * @param options BFR-008: opcionalis projection/limit/sort — DB-szinten szukit (a nagy mezok be sem toltodnek)
704
+ * @returns {T[]} dataList: T[]
705
+ */
706
+ async find(filterBy, findDeleted, options) {
707
+ // BFR-OVERSEER-008 — options megadasakor a soft-delete szures QUERY-szintre kerul: limit mellett a
708
+ // memoriabeli post-filter hibas darabszamot adna, projekcio mellett (kihagyott `_deleted` mezovel)
709
+ // hibasan atengedne a torolt dokumentumokat. A `_deleted` soft-delete-kor `new Date()`, egyebkent
710
+ // HIANYZIK → a Mongo `_deleted: null` (missing VAGY null) a post-filter `!data._deleted` ekvivalense.
711
+ const deletedGuardInQuery = !!options && !findDeleted && filterBy._deleted === undefined;
712
+ const effectiveFilter = deletedGuardInQuery
713
+ ? { ...filterBy, _deleted: null }
714
+ : filterBy;
715
+ // A szukites (select/sort/limit) DB-szinten tortenik → a nagy mezok be sem toltodnek a heap-be.
716
+ let query = this.dataModel.find(effectiveFilter);
717
+ if (options?.projection) {
718
+ query = query.select(options.projection);
719
+ }
720
+ if (options?.sort) {
721
+ query = query.sort(options.sort);
722
+ }
723
+ if (options?.limit) {
724
+ query = query.limit(options.limit);
725
+ }
726
+ let dataList = await query
727
+ .then((res) => res ?? [])
728
+ .catch((error) => {
729
+ throw new fsm_dynamo_1.DyFM_Error({
730
+ ...this._getDefaultErrorSettings('find', error),
731
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-F0`,
732
+ additionalContent: { filterBy },
733
+ message: `find "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
734
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
735
+ });
736
+ });
737
+ if (!findDeleted && !deletedGuardInQuery && filterBy._deleted === undefined) {
738
+ dataList = dataList.filter((data) => !data._deleted);
739
+ }
740
+ return dataList.map((data) => this.stringifyDataId(data, 'find'));
741
+ }
742
+ /**
743
+ * #MONGOOSE FUNCTION
744
+ * Find the data first by any of its parameters
745
+ * WARNING: This function will not gives you back the total number of data in the database!
746
+ *
747
+ * @param filterBy if you can, use unique parameters for find!
748
+ *
749
+ * @example
750
+ * // by email:
751
+ * { email: email }
752
+ * //
753
+ * @example
754
+ * // or by id that is in list:
755
+ * { userIds: { $in: this.userId } }
756
+ * // or by userIds:
757
+ * { userId: { $in: userIds } }
758
+ * //
759
+ * @example
760
+ * // or by number or Date that is Greater Than AND Less Than:
761
+ * { points: { $gt: 2, $lt: 14 } }
762
+ * // further tools (syntax matches with $gt):
763
+ * $eq: // Matches values that are EQual to a specified value.
764
+ * $gte: // Matches values that are Greater Than OR Equal to a specified value.
765
+ * $lte: // Matches values that are Less Than or Equal to a specified value.
766
+ * $ne: // Matches all values that are Not Equal to a specified value.
767
+ * $nin: // Matches None of the values specified IN an array.
768
+ * //
769
+ * @param page page
770
+ * @param pageSize pageSize
771
+ * @param sort
772
+ * @example
773
+ * // by dateTime (this uses the basic sort function):
774
+ * { dateTime: -1 }
775
+ * //
776
+ * @returns {T[]} dataList: T[]
777
+ */
778
+ async findWithPaging(filterBy, page, pageSize, sort) {
779
+ /* if (filterBy['_deleted'] === undefined) {
780
+ filterBy['_deleted'] = null;
781
+ } */
782
+ const dataList = await this.dataModel
783
+ .find(filterBy)
784
+ .sort(sort)
785
+ .skip(page * pageSize)
786
+ .limit(pageSize)
787
+ .then((res) => res ?? [])
788
+ .catch((error) => {
789
+ throw new fsm_dynamo_1.DyFM_Error({
790
+ ...this._getDefaultErrorSettings('findWithPaging', error),
791
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-WP0`,
792
+ additionalContent: { filterBy, page, pageSize, sort },
793
+ message: `findWithPaging "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
794
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
795
+ });
796
+ });
797
+ /* if ((filterBy as DyFM_DBFilterSimple<T>)._deleted === undefined) {
798
+ dataList = dataList.filter((data: T): boolean => !data._deleted);
799
+ } */
800
+ return dataList.map((data) => this.stringifyDataId(data, 'find'));
801
+ }
802
+ /**
803
+ * #MONGOOSE FUNCTION
804
+ * Find data by _id and update
805
+ *
806
+ * @param id id
807
+ * @param update update
808
+ * @returns data
809
+ */
810
+ async findByIdAndUpdate(id, update, issuer, dontUpdateModified) {
811
+ if (this.dataParams.forbidModify) {
812
+ await this.modifyThrowMethod(update, issuer);
813
+ }
814
+ if (!dontUpdateModified) {
815
+ update.__lastModified = new Date();
816
+ update.__lastModifiedBy = issuer;
817
+ }
818
+ const data = await this.dataModel
819
+ .findByIdAndUpdate(id, update)
820
+ .then((res) => res?.toObject() ?? null)
821
+ .catch((error) => {
822
+ throw new fsm_dynamo_1.DyFM_Error({
823
+ ...this._getDefaultErrorSettings('findByIdAndUpdate', error, issuer),
824
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FIU0`,
825
+ additionalContent: { id, update },
826
+ message: `findByIdAndUpdate "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
827
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
828
+ issuer,
829
+ });
830
+ });
831
+ return this.stringifyDataId(data, 'findByIdAndUpdate');
832
+ }
833
+ /**
834
+ * #MONGOOSE FUNCTION
835
+ * Atomi compare-and-set: filter-alapú find + update EGY műveletben, a MÓDOSÍTOTT dokumentum
836
+ * visszaadásával (BFR-FDPTOKENSERVICE-006).
837
+ *
838
+ * A `findByIdAndUpdate` (id-only, nem filterezhető) és az `updateOne` (filterezhető, de void —
839
+ * nem különíthető el a winner/loser konkurens state-átmenetnél) egyike sem elég CAS-hoz: egy
840
+ * state-machine `transitionStatus`-jellegű átmenetnél a filter a FELTÉTEL (pl. `{_id, status:
841
+ * 'locked'}`), és a visszatérő érték dönti el, hogy EZ a hívás nyerte-e az átmenetet.
842
+ * `null` = nincs match (a feltétel már nem áll — a versenytárs nyert / state-collision).
843
+ *
844
+ * A `__lastModified`/`forbidModify` szemantika a `findByIdAndUpdate`-tel EGYEZŐ (egységes
845
+ * update-viselkedés a base-ben); a `{ new: true }` a MÓDOSÍTOTT dokumentumot adja vissza.
846
+ */
847
+ async findOneAndUpdate(filterBy, update, issuer, dontUpdateModified) {
848
+ if (this.dataParams.forbidModify) {
849
+ await this.modifyThrowMethod(update, issuer);
850
+ }
851
+ if (!dontUpdateModified) {
852
+ update.__lastModified = new Date();
853
+ update.__lastModifiedBy = issuer;
854
+ }
855
+ const data = await this.dataModel
856
+ .findOneAndUpdate(filterBy, update, { new: true })
857
+ .then((res) => res?.toObject() ?? null)
858
+ .catch((error) => {
859
+ throw new fsm_dynamo_1.DyFM_Error({
860
+ ...this._getDefaultErrorSettings('findOneAndUpdate', error, issuer),
861
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-FOU0`,
862
+ additionalContent: { filterBy, update },
863
+ message: `findOneAndUpdate "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
864
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
865
+ issuer,
866
+ });
867
+ });
868
+ // no-match (CAS lost / feltétel nem áll): a null ÉRVÉNYES eredmény, nem hiba
869
+ if (!data) {
870
+ return null;
871
+ }
872
+ return this.stringifyDataId(data, 'findOneAndUpdate');
873
+ }
874
+ /**
875
+ * #MONGOOSE FUNCTION
876
+ * Find the data first by any of its parameters
877
+ *
878
+ * @param filter This uses the basic Mongoose updateOne.
879
+ * If you can, use unique parameters for find!
880
+ * @example
881
+ * // by email:
882
+ * { email: email }
883
+ * //
884
+ * @example
885
+ * // or by id that is in list:
886
+ * { userIds: { $in: this.userId } }
887
+ * // or by userIds:
888
+ * { userId: { $in: userIds } }
889
+ * //
890
+ * @example
891
+ * // or by number or Date that is Greater Than AND Less Than:
892
+ * { points: { $gt: 2, $lt: 14 } }
893
+ * // further tools (syntax matches with $gt):
894
+ * $eq: // Matches values that are EQual to a specified value.
895
+ * $gte: // Matches values that are Greater Than OR Equal to a specified value.
896
+ * $lte: // Matches values that are Less Than or Equal to a specified value.
897
+ * $ne: // Matches all values that are Not Equal to a specified value.
898
+ * $nin: // Matches None of the values specified IN an array.
899
+ * //
900
+ *
901
+ * @param update this uses the basic Mongoose updateOne
902
+ * @example
903
+ * // increase a specific value (here by 15):
904
+ * { $inc: { popularity: 15 } }
905
+ * //
906
+ * @example
907
+ * // or add element to a list:
908
+ * { $push: { reactions: this.newReaction }
909
+ * // or add multiple elements to a list
910
+ * { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
911
+ * //
912
+ * @example
913
+ * // or all at once
914
+ * {
915
+ * $inc: { popularity: this.newVote.amount },
916
+ * emailVerified: true,
917
+ * $push: { reactions: this.newReaction }
918
+ * }
919
+ * // further tools (syntax matches with $inc):
920
+ * $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
921
+ * $min: // Only updates the field if the specified value is less than the existing field value.
922
+ * $max: // Only updates the field if the specified value is greater than the existing field value.
923
+ * $mul: // Multiplies the value of the field by the specified amount.
924
+ * $rename: // Renames a field.
925
+ * $unset: // Removes the specified field from a document. (set: "" to value)
926
+ * //
927
+ */
928
+ async updateOne(filterBy, update, issuer, dontUpdateModified) {
929
+ if (this.dataParams.forbidModify) {
930
+ await this.modifyThrowMethod(update, issuer);
931
+ }
932
+ if (!dontUpdateModified) {
933
+ update.__lastModified = new Date();
934
+ update.__lastModifiedBy = issuer;
935
+ }
936
+ await this.dataModel
937
+ .updateOne(filterBy, update)
938
+ .catch((error) => {
939
+ throw new fsm_dynamo_1.DyFM_Error({
940
+ ...this._getDefaultErrorSettings('updateOne', error, issuer),
941
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-UO0`,
942
+ additionalContent: { filterBy, update },
943
+ message: `updateOne "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
944
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
945
+ issuer,
946
+ });
947
+ });
948
+ }
949
+ /**
950
+ * #MONGOOSE FUNCTION
951
+ * update one parameter by a specific
952
+ *
953
+ * @param filter This uses the basic Mongoose updateMany.
954
+ * @example
955
+ * // by email:
956
+ * { email: email }
957
+ * //
958
+ * @example
959
+ * // or by id that is in list:
960
+ * { userIds: { $in: this.userId } }
961
+ * // or by userIds:
962
+ * { userId: { $in: userIds } }
963
+ * //
964
+ * @example
965
+ * // or by number or Date that is Greater Than AND Less Than:
966
+ * { points: { $gt: 2, $lt: 14 } }
967
+ * // further tools (syntax matches with $gt):
968
+ * $eq: // Matches values that are EQual to a specified value.
969
+ * $gte: // Matches values that are Greater Than OR Equal to a specified value.
970
+ * $lte: // Matches values that are Less Than or Equal to a specified value.
971
+ * $ne: // Matches all values that are Not Equal to a specified value.
972
+ * $nin: // Matches None of the values specified IN an array.
973
+ * //
974
+ *
975
+ * @param update this uses the basic Mongoose updateOne
976
+ * @example
977
+ * // increase a specific value (here by 15):
978
+ * { $inc: { popularity: 15 } }
979
+ * //
980
+ * @example
981
+ * // or add element to a list:
982
+ * { $push: { reactions: this.newReaction }
983
+ * // or add multiple elements to a list
984
+ * { $push: { schedule: {$each: [ monday, tuesday, wednesday ] } } }
985
+ * //
986
+ * @example
987
+ * // or all at once
988
+ * {
989
+ * $inc: { popularity: this.newVote.amount },
990
+ * emailVerified: true,
991
+ * $push: { reactions: this.newReaction }
992
+ * }
993
+ * // further tools (syntax matches with $inc):
994
+ * $currentDate: // Sets the value of a field to current date, either as a Date or a Timestamp.
995
+ * $min: // Only updates the field if the specified value is less than the existing field value.
996
+ * $max: // Only updates the field if the specified value is greater than the existing field value.
997
+ * $mul: // Multiplies the value of the field by the specified amount.
998
+ * $rename: // Renames a field.
999
+ * $unset: // Removes the specified field from a document. (set: "" to value)
1000
+ * //
1001
+ */
1002
+ async updateMany(filterBy, update, issuer, dontUpdateModified) {
1003
+ if (this.dataParams.forbidModify) {
1004
+ await this.modifyThrowMethod(update, issuer);
1005
+ }
1006
+ if (!dontUpdateModified) {
1007
+ update.__lastModified = new Date();
1008
+ update.__lastModifiedBy = issuer;
1009
+ }
1010
+ await this.dataModel
1011
+ .updateMany(filterBy, update)
1012
+ .catch((error) => {
1013
+ throw new fsm_dynamo_1.DyFM_Error({
1014
+ ...this._getDefaultErrorSettings('updateMany', error, issuer),
1015
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-UM0`,
1016
+ additionalContent: { filterBy, update },
1017
+ message: `updateMany "${this.dataParams.dataName}" was unsuccessful (NTS DB)` +
1018
+ `\n error: ${fsm_dynamo_1.DyFM_Error.getErrorMessage(error)}`,
1019
+ issuer,
1020
+ });
1021
+ });
1022
+ }
1023
+ /**
1024
+ * {
1025
+ "mappings": {
1026
+ "dynamic": true,
1027
+ "fields": {
1028
+ "embedding": {
1029
+ "type": "knnVector",
1030
+ "dimensions": 768
1031
+ }
1032
+ }
1033
+ }
1034
+ }
1035
+ */
1036
+ /**
1037
+ *
1038
+ * @param set db.collection.aggregate([
1039
+ {
1040
+ $vectorSearch: {
1041
+ index: "index_neve",
1042
+ queryVector: [a keresett embedding],
1043
+ path: "title.embedding",
1044
+ numCandidates: 100,
1045
+ limit: 5
1046
+ }
1047
+ },
1048
+ {
1049
+ $vectorSearch: {
1050
+ index: "index_neve",
1051
+ queryVector: [a keresett embedding],
1052
+ path: "description.embedding",
1053
+ numCandidates: 100,
1054
+ limit: 5
1055
+ }
1056
+ }
1057
+ ]);
1058
+ * @returns
1059
+ */
1060
+ async aggregate(set) {
1061
+ return this.dataModel.aggregate(set);
1062
+ }
1063
+ // ----------------------------------------------------------------------------------
1064
+ // ----------------------------------------------------------------------------------
1065
+ // ----------------------------------------------------------------------------------
1066
+ // PRIVATE FUNCTIONS
1067
+ stringifyDataId(data, fnName) {
1068
+ // AT-REST field-decryption (opt-in): ez a KÖZÖS read+write post-processor (minden read + a
1069
+ // create/modify EREDMÉNYE is átmegy rajta), ezért itt fejtjük vissza az encrypt:true envelope-
1070
+ // mezőket load után. NO-OP, ha nincs encrypt:true mező (ugyanaz a referencia — nulla változás).
1071
+ data = field_encryption_util_1.DyNTS_FieldEncryption_Util.decryptDoc(data, this.dataParams.properties);
1072
+ if (data?._id && (typeof data._id !== 'string' || typeof data._id === 'object')) {
1073
+ data._id = `${data._id}`;
1074
+ if (typeof data._id !== 'string' || typeof data._id === 'object') {
1075
+ data = JSON.parse(JSON.stringify(data));
1076
+ if (typeof data._id !== 'string' || typeof data._id === 'object') {
1077
+ fsm_dynamo_1.DyFM_Log.error(`data._id stringifying failed! Please notfiy the DynamoNTS developers! (${fnName})`, new Error());
1078
+ }
1079
+ }
1080
+ }
1081
+ return data;
1082
+ }
1083
+ _getDefaultErrorSettings(fnName, error, issuer) {
1084
+ return {
1085
+ status: error?.___status ?? 500,
1086
+ message: error?.message ??
1087
+ error?._message ??
1088
+ `${fnName} was UNSUCCESSFUL (NTS-DB)`,
1089
+ addECToUserMsg: !error?.__userMessage,
1090
+ userMessage: error?.__userMessage ?? this.defaultErrorUserMsg,
1091
+ issuer: issuer,
1092
+ issuerService: this.serviceName,
1093
+ error: error,
1094
+ };
1095
+ }
1096
+ // ----------------------------------------------------------------------------------
1097
+ // PRIVATE BUILD FUNCTIONS
1098
+ /**
1099
+ * builds and returns mongoose schema
1100
+ * @returns schema
1101
+ */
1102
+ getSchema() {
1103
+ this.dataParams.properties = this.addMetadataToProperties(this.dataParams.properties);
1104
+ if (this.dataParams.dataName.includes(archive_util_1.DyNTS_archiveSuffix)) {
1105
+ this.dataParams.properties = this.addArchiveMetadataToProperties(this.dataParams.properties);
1106
+ }
1107
+ const schemaSettings = this.buildMongooseSchemaSettingsObjByModelParams(this.dataParams.properties);
1108
+ /* schema = this.addMetadataToSchema(schema); */
1109
+ /* if (this.dataParams.dataName.includes(DyNTS_archiveSuffix)) {
1110
+ schema = this.addArchiveMetadataToSchema(schema);
1111
+ } */
1112
+ if (schemaSettings['_id']) {
1113
+ delete schemaSettings['_id'];
1114
+ }
1115
+ return new mongoose_1.Schema(schemaSettings);
1116
+ }
1117
+ /**
1118
+ * builds mongoose schema building settings object by dynamoDataModelParamsList
1119
+ * @param properties DynamoNTSDataPropertyParams
1120
+ * @returns mongoose schema object
1121
+ */
1122
+ buildMongooseSchemaSettingsObjByModelParams(properties) {
1123
+ const schemaSettingsObj = {};
1124
+ /* if (!properties) {
1125
+ properties = this.dataParams.properties;
1126
+ } */
1127
+ Object.values(properties).forEach((property) => {
1128
+ if (!property) {
1129
+ fsm_dynamo_1.DyFM_Log.warn(`property is undefined on "${this.dataParams.dataName}" (NTS DB)`);
1130
+ return;
1131
+ }
1132
+ if (!property.key) {
1133
+ const missingKeys = Object.keys(properties).filter((key) => !properties[key].key);
1134
+ throw new fsm_dynamo_1.DyFM_Error({
1135
+ ...this._getDefaultErrorSettings('buildMongooseSchemaByModelParams', new Error(`property.key is undefined on "${this.dataParams.dataName}" (NTS DB) ` +
1136
+ `(keys: ${Object.keys(properties).join(', ')}) ` +
1137
+ `(missing keys: ${missingKeys.join(', ')})`)),
1138
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-BMSBP0`,
1139
+ additionalContent: {
1140
+ property: property,
1141
+ dataParams: this.dataParams,
1142
+ missingKeys: missingKeys,
1143
+ },
1144
+ });
1145
+ }
1146
+ if (property.forbidden) {
1147
+ return;
1148
+ }
1149
+ const beType = this.getBEType(property.type);
1150
+ /* TODO if (beType === Array && property.archiveable && !property.archiveListAfter) {
1151
+ property.archiveListAfter = DyNTS_global_settings.archiveListAfter;
1152
+ } */
1153
+ if (beType !== Object ||
1154
+ !property?.subObjectParams ||
1155
+ (property?.subObjectParams &&
1156
+ Object.keys(property.subObjectParams).length == 0)) {
1157
+ schemaSettingsObj[property.key] = {
1158
+ type: beType,
1159
+ };
1160
+ if (property.index) {
1161
+ schemaSettingsObj[property.key].index = true;
1162
+ }
1163
+ if (property.unique) {
1164
+ schemaSettingsObj[property.key].unique = true;
1165
+ }
1166
+ if (property.required) {
1167
+ schemaSettingsObj[property.key].required = true;
1168
+ }
1169
+ if (property.minlength) {
1170
+ schemaSettingsObj[property.key].minlength = property.minlength;
1171
+ }
1172
+ if (property.maxlength) {
1173
+ schemaSettingsObj[property.key].maxlength = property.maxlength;
1174
+ }
1175
+ }
1176
+ else {
1177
+ schemaSettingsObj[property.key] = this.buildMongooseSchemaSettingsObjByModelParams(property.subObjectParams);
1178
+ }
1179
+ });
1180
+ return schemaSettingsObj;
1181
+ }
1182
+ getBEType(type) {
1183
+ switch (type) {
1184
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.string:
1185
+ return String;
1186
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.number:
1187
+ return Number;
1188
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.boolean:
1189
+ return Boolean;
1190
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.date:
1191
+ return Date;
1192
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.object:
1193
+ return Object;
1194
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.array:
1195
+ return Array;
1196
+ case fsm_dynamo_1.DyFM_BasicProperty_Type.function:
1197
+ return Function;
1198
+ default:
1199
+ fsm_dynamo_1.DyFM_Log.H_info('wtf', fsm_dynamo_1.DyFM_Object.cleanObject(this.dataParams));
1200
+ throw new fsm_dynamo_1.DyFM_Error({
1201
+ error: new Error(`Invalid property type: "${type}" (${this.dataParams.dataName})` +
1202
+ (this.dataParams.constructed?.() ? '' : ('\nThe dataParams is not constructed properly! \n' +
1203
+ 'Use the DyFM_DataModel_Params.constructor to construct it properly!'))),
1204
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-GTP0`,
1205
+ additionalContent: { type: type, dataParams: this.dataParams },
1206
+ __localStack: this.dataParams.stackLocation,
1207
+ });
1208
+ }
1209
+ /* switch (type.toLocaleLowerCase()) {
1210
+ case DyFM_BasicProperty_Type.string:
1211
+ case 'string':
1212
+ return String;
1213
+
1214
+ case DyFM_BasicProperty_Type.number:
1215
+ case 'number':
1216
+ return Number;
1217
+
1218
+ case DyFM_BasicProperty_Type.boolean:
1219
+ case 'boolean':
1220
+ return Boolean;
1221
+
1222
+ case DyFM_BasicProperty_Type.date:
1223
+ case 'date':
1224
+ return Date;
1225
+
1226
+ case DyFM_BasicProperty_Type.object:
1227
+ case 'object':
1228
+ return Object;
1229
+
1230
+ case DyFM_BasicProperty_Type.array:
1231
+ case 'array':
1232
+ return Array;
1233
+
1234
+ default:
1235
+ if (type.includes('[]') || type.includes('array')) {
1236
+ return Array;
1237
+ } else if (type.includes('=>') || type.includes('function')) {
1238
+ return Function;
1239
+ } else {
1240
+ return Object;
1241
+ }
1242
+ } */
1243
+ }
1244
+ /**
1245
+ * adds dynamo metadata settings to any mongoose schema building settings object
1246
+ * @param schema schema to update
1247
+ * @returns updated schema
1248
+ */
1249
+ /* private addMetadataToSchema(schema: any): any {
1250
+ schema.__created = { type: Date };
1251
+ schema.__createdBy = { type: String };
1252
+ schema.__lastModified = { type: Date };
1253
+ schema.__lastModifiedBy = { type: String };
1254
+
1255
+ schema._deleted = { type: Date };
1256
+ schema._deletedBy = { type: String };
1257
+
1258
+ return schema;
1259
+ } */
1260
+ /**
1261
+ * adds dynamo metadata settings to any mongoose schema building settings object
1262
+ * @param properties properties to update
1263
+ * @returns updated properties
1264
+ */
1265
+ addMetadataToProperties(properties) {
1266
+ // TOD: ezek a kikommentelt "required: true"-k kellenek, csak félő, hogy gondokat okoznak a
1267
+ // jelenlegi rendszerekben, ezért akkor kell majd visszarakni, ha lesz tesztelői ÉS fejlesztői kapacitás rá
1268
+ if (!properties.__created) {
1269
+ properties.__created = {
1270
+ key: '__created', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date /* , required: true */,
1271
+ };
1272
+ }
1273
+ if (!properties.__createdBy) {
1274
+ properties.__createdBy = {
1275
+ key: '__createdBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string /* , required: true */,
1276
+ };
1277
+ }
1278
+ if (!properties.__lastModified) {
1279
+ properties.__lastModified = {
1280
+ key: '__lastModified', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date /* , required: true */,
1281
+ };
1282
+ }
1283
+ if (!properties.__lastModifiedBy) {
1284
+ properties.__lastModifiedBy = {
1285
+ key: '__lastModifiedBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string /* , required: true */,
1286
+ };
1287
+ }
1288
+ if (!properties._deleted) {
1289
+ properties._deleted = {
1290
+ key: '_deleted', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1291
+ };
1292
+ }
1293
+ if (!properties._deletedBy) {
1294
+ properties._deletedBy = {
1295
+ key: '_deletedBy', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string,
1296
+ };
1297
+ }
1298
+ if (!properties._archived) {
1299
+ properties._archived = {
1300
+ key: '_archived', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1301
+ };
1302
+ }
1303
+ return properties;
1304
+ }
1305
+ /* private addArchiveMetadataToSchema(schema: any): any {
1306
+ schema._originalId = { type: String, required: true, index: true, unique: true };
1307
+ schema._archived = { type: Date, required: true };
1308
+
1309
+ return schema;
1310
+ } */
1311
+ addArchiveMetadataToProperties(properties) {
1312
+ if (!properties._originalId) {
1313
+ properties._originalId = {
1314
+ key: '_originalId', type: fsm_dynamo_1.DyFM_BasicProperty_Type.string,
1315
+ required: true, index: true, unique: true,
1316
+ };
1317
+ }
1318
+ if (!properties._archived) {
1319
+ properties._archived = {
1320
+ key: '_archived', type: fsm_dynamo_1.DyFM_BasicProperty_Type.date,
1321
+ required: true,
1322
+ };
1323
+ }
1324
+ else if (properties._archived.required === undefined) {
1325
+ properties._archived.required = true;
1326
+ }
1327
+ return properties;
1328
+ }
1329
+ /**
1330
+ * sets depDataKey
1331
+ */
1332
+ lookForDependencyDataSettings() {
1333
+ const dependencyParams = Object.values(this.dataParams.properties).filter((modelParams) => Boolean(modelParams.dependencyDataName));
1334
+ if (dependencyParams) {
1335
+ this.depKeys.push(...dependencyParams.map((dependencyParam) => dependencyParam.key));
1336
+ }
1337
+ }
1338
+ async deleteThrowMethod(data, issuer) {
1339
+ throw new fsm_dynamo_1.DyFM_Error({
1340
+ error: new Error(`Forbidden to delete any data! (${this.dataParams.dataName})`),
1341
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
1342
+ additionalContent: { dataParams: this.dataParams, data: data },
1343
+ issuer: issuer,
1344
+ });
1345
+ }
1346
+ ;
1347
+ async modifyThrowMethod(data, issuer) {
1348
+ throw new fsm_dynamo_1.DyFM_Error({
1349
+ error: new Error(`Forbidden to modify any data! (${this.dataParams.dataName})`),
1350
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DBS-CDAD`,
1351
+ additionalContent: { dataParams: this.dataParams, data: data },
1352
+ issuer: issuer,
1353
+ });
1354
+ }
1355
+ }
1356
+ exports.DyNTS_DBService = DyNTS_DBService;
1357
1357
  //# sourceMappingURL=db.service.js.map