@koalarx/nest 3.1.49 → 4.0.1

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 (499) hide show
  1. package/README.md +106 -444
  2. package/cli/commands/add/index.js +97 -0
  3. package/cli/commands/help.js +44 -0
  4. package/cli/commands/new/configure-test-runner.js +13 -0
  5. package/cli/commands/new/create-ddd-structure.js +52 -0
  6. package/cli/commands/new/create-empty-nest-project.js +58 -0
  7. package/cli/commands/new/fix-lint-config.js +24 -0
  8. package/cli/commands/new/index.js +202 -0
  9. package/cli/commands/version.js +5 -0
  10. package/cli/constants/auth-strategy-artifacts.js +56 -0
  11. package/cli/constants/auth-strategy-checklist.js +314 -0
  12. package/cli/constants/cli-commands.js +24 -0
  13. package/cli/constants/cli-project-checklist.js +289 -0
  14. package/cli/constants/core-packages.js +34 -0
  15. package/cli/constants/domain.js +171 -0
  16. package/cli/constants/package-manager.js +5 -0
  17. package/cli/constants/version.js +5 -0
  18. package/cli/index.js +55 -0
  19. package/cli/types/index.js +0 -0
  20. package/cli/utils/add-project-features.js +170 -0
  21. package/cli/utils/apply-optional-features.js +48 -0
  22. package/cli/utils/auth-strategy-validation.js +179 -0
  23. package/cli/utils/cancel.js +8 -0
  24. package/cli/utils/cli-options.js +27 -0
  25. package/cli/utils/cli-project-validation.js +157 -0
  26. package/cli/utils/detect-project-state.js +131 -0
  27. package/cli/utils/format-code.js +9 -0
  28. package/cli/utils/get-package-manager.js +12 -0
  29. package/cli/utils/get-package-root.js +19 -0
  30. package/cli/utils/get-source-code-path.js +15 -0
  31. package/cli/utils/install-module.js +258 -0
  32. package/cli/utils/normalize-add-args.js +25 -0
  33. package/cli/utils/parse-new-args.js +127 -0
  34. package/cli/utils/patch-auth-install.js +224 -0
  35. package/cli/utils/patch-define-documentation.js +222 -0
  36. package/cli/utils/patch-env.js +106 -0
  37. package/cli/utils/patch-generated-project.js +21 -0
  38. package/cli/utils/patch-health-module.js +80 -0
  39. package/cli/utils/patch-infra-module.js +62 -0
  40. package/cli/utils/patch-jobs-module.js +103 -0
  41. package/cli/utils/patch-main.js +15 -0
  42. package/cli/utils/patch-person-features.js +127 -0
  43. package/cli/utils/project-files.js +11 -0
  44. package/cli/utils/prune-auth-strategies.js +116 -0
  45. package/cli/utils/prune-core-auth.js +17 -0
  46. package/cli/utils/remove-sample-parts.js +203 -0
  47. package/cli/utils/resolve-project-path.js +19 -0
  48. package/cli/utils/restore-person-features.js +64 -0
  49. package/cli/utils/run-command.js +31 -0
  50. package/cli/utils/sync-auth-strategy-files.js +63 -0
  51. package/koala-nest/.env.example +34 -0
  52. package/koala-nest/.prettierrc +4 -0
  53. package/koala-nest/README.md +51 -0
  54. package/koala-nest/bunfig.toml +7 -0
  55. package/koala-nest/eslint.config.mjs +55 -0
  56. package/koala-nest/nest-cli.json +9 -0
  57. package/koala-nest/package.json +79 -0
  58. package/koala-nest/src/application/auth/common/auth-token.response.ts +15 -0
  59. package/koala-nest/src/application/auth/common/user-claims.ts +6 -0
  60. package/koala-nest/src/application/auth/login/login.handler.ts +42 -0
  61. package/koala-nest/src/application/auth/login/login.request.ts +9 -0
  62. package/koala-nest/src/application/auth/login/login.response.ts +3 -0
  63. package/koala-nest/src/application/auth/login/login.validator.ts +12 -0
  64. package/koala-nest/src/application/auth/oauth2/auth-link/auth-link.handler.ts +24 -0
  65. package/koala-nest/src/application/auth/oauth2/auth-link/auth-link.request.ts +10 -0
  66. package/koala-nest/src/application/auth/oauth2/auth-link/auth-link.response.ts +6 -0
  67. package/koala-nest/src/application/auth/oauth2/auth-link/auth-link.validator.ts +12 -0
  68. package/koala-nest/src/application/auth/oauth2/callback/oauth-callback.response.ts +10 -0
  69. package/koala-nest/src/application/auth/oauth2/exchange-code/exchange-code.handler.ts +73 -0
  70. package/koala-nest/src/application/auth/oauth2/exchange-code/exchange-code.request.ts +16 -0
  71. package/koala-nest/src/application/auth/oauth2/exchange-code/exchange-code.validator.ts +14 -0
  72. package/koala-nest/src/application/auth/oauth2/scalar-token/scalar-oauth-token.handler.ts +35 -0
  73. package/koala-nest/src/application/auth/oauth2/scalar-token/scalar-token.types.ts +1 -0
  74. package/koala-nest/src/application/auth/refresh-token/refresh-token.handler.ts +26 -0
  75. package/koala-nest/src/application/auth/user-info/user-info.handler.ts +30 -0
  76. package/koala-nest/src/application/auth/user-info/user-info.response.ts +20 -0
  77. package/koala-nest/src/application/common/created-registre.response.ts +20 -0
  78. package/koala-nest/src/application/common/pagination.request.ts +41 -0
  79. package/koala-nest/src/application/common/request-handler.base.ts +3 -0
  80. package/koala-nest/src/application/common/request-validator.base.ts +33 -0
  81. package/koala-nest/src/application/mapping/mapping.provider.ts +9 -0
  82. package/koala-nest/src/application/mapping/person.mapper.ts +44 -0
  83. package/koala-nest/src/application/person/create/create-person.handler.ts +34 -0
  84. package/koala-nest/src/application/person/create/create-person.request.ts +29 -0
  85. package/koala-nest/src/application/person/create/create-person.response.ts +3 -0
  86. package/koala-nest/src/application/person/create/create-person.validator.ts +9 -0
  87. package/koala-nest/src/application/person/delete/delete-person.handler.ts +22 -0
  88. package/koala-nest/src/application/person/find-person-or-throw.ts +16 -0
  89. package/koala-nest/src/application/person/jobs/cron/create-person.job.ts +58 -0
  90. package/koala-nest/src/application/person/jobs/cron/delete-inactive.job.ts +57 -0
  91. package/koala-nest/src/application/person/jobs/events/person/inactive-person/inactive-person.event.ts +4 -0
  92. package/koala-nest/src/application/person/jobs/events/person/inactive-person/inactive-person.handler.ts +54 -0
  93. package/koala-nest/src/application/person/jobs/events/person/person-event.job.ts +19 -0
  94. package/koala-nest/src/application/person/person.schemas.ts +21 -0
  95. package/koala-nest/src/application/person/read/read-person.handler.ts +22 -0
  96. package/koala-nest/src/application/person/read/read-person.response.ts +44 -0
  97. package/koala-nest/src/application/person/read-many/read-many-person.handler.ts +63 -0
  98. package/koala-nest/src/application/person/read-many/read-many-person.request.ts +13 -0
  99. package/koala-nest/src/application/person/read-many/read-many-person.response.ts +30 -0
  100. package/koala-nest/src/application/person/read-many/read-many-person.validator.ts +15 -0
  101. package/koala-nest/src/application/person/update/update-person.handler.ts +51 -0
  102. package/koala-nest/src/application/person/update/update-person.request.ts +41 -0
  103. package/koala-nest/src/application/person/update/update-person.validator.ts +9 -0
  104. package/koala-nest/src/core/auth/assert-user-active.ts +18 -0
  105. package/koala-nest/src/core/auth/auth-profile.enum.ts +7 -0
  106. package/koala-nest/src/core/auth/auth-routes.ts +5 -0
  107. package/koala-nest/src/core/auth/auth.constants.ts +6 -0
  108. package/koala-nest/src/core/auth/jwt-claims.ts +23 -0
  109. package/koala-nest/src/core/auth/oauth-provider.registry.ts +94 -0
  110. package/koala-nest/src/core/auth/parse-jwt-expires-in.ts +30 -0
  111. package/koala-nest/src/core/auth/parse-oauth2-provider-env.ts +56 -0
  112. package/koala-nest/src/core/auth/resolve-refresh-token.ts +40 -0
  113. package/koala-nest/src/core/background-services/cron-service/cron-job.handler.base.ts +65 -0
  114. package/koala-nest/src/core/background-services/event-service/event-class.ts +5 -0
  115. package/koala-nest/src/core/background-services/event-service/event-handler.base.ts +17 -0
  116. package/koala-nest/src/core/background-services/event-service/event-job.ts +31 -0
  117. package/koala-nest/src/core/background-services/event-service/event-queue.ts +107 -0
  118. package/koala-nest/src/core/base/entity.base.ts +3 -0
  119. package/koala-nest/src/core/base/object-class.ts +14 -0
  120. package/koala-nest/src/core/constants/cache.constants.ts +16 -0
  121. package/koala-nest/src/core/constants/cron.constants.ts +14 -0
  122. package/koala-nest/src/core/constants/query-params.ts +7 -0
  123. package/koala-nest/src/core/env.ts +42 -0
  124. package/koala-nest/src/core/schemas/boolean.schema.ts +24 -0
  125. package/koala-nest/src/core/schemas/document-number-mask.ts +22 -0
  126. package/koala-nest/src/core/schemas/document-number.schema.ts +21 -0
  127. package/koala-nest/src/core/schemas/document-number.utils.ts +15 -0
  128. package/koala-nest/src/core/schemas/email.schema.ts +13 -0
  129. package/koala-nest/src/core/schemas/index.ts +6 -0
  130. package/koala-nest/src/core/schemas/list-query.schema.ts +18 -0
  131. package/koala-nest/src/core/schemas/native-enum.schema.ts +36 -0
  132. package/koala-nest/src/core/tools/mapping/auto-map.ts +14 -0
  133. package/koala-nest/src/core/tools/mapping/auto-mapper.ts +102 -0
  134. package/koala-nest/src/core/tools/mapping/create-map.ts +11 -0
  135. package/koala-nest/src/core/tools/mapping/for-member.ts +16 -0
  136. package/koala-nest/src/core/tools/mapping/index.ts +4 -0
  137. package/koala-nest/src/core/tools/mapping/mapping-store.ts +121 -0
  138. package/koala-nest/src/core/types/auth-provider-config-response.type.ts +5 -0
  139. package/koala-nest/src/core/types/index.ts +5 -0
  140. package/koala-nest/src/core/utils/build-list-cache-key.ts +19 -0
  141. package/koala-nest/src/core/utils/cron-expression-to-boolean.ts +65 -0
  142. package/koala-nest/src/core/utils/env.config.ts +17 -0
  143. package/koala-nest/src/core/utils/filter-request-params.ts +29 -0
  144. package/koala-nest/src/core/utils/format-typeorm-error.ts +173 -0
  145. package/koala-nest/src/core/utils/format-zod-error.ts +201 -0
  146. package/koala-nest/src/core/utils/hash-password.ts +5 -0
  147. package/koala-nest/src/core/utils/icomparable.ts +1 -0
  148. package/koala-nest/src/core/utils/is-provider-registered.ts +40 -0
  149. package/koala-nest/src/core/utils/name-to-login.ts +25 -0
  150. package/koala-nest/src/core/utils/person-list-cache.ts +7 -0
  151. package/koala-nest/src/core/utils/report-error.ts +18 -0
  152. package/koala-nest/src/core/utils/resolve-api-host.ts +8 -0
  153. package/koala-nest/src/core/utils/time.constants.ts +5 -0
  154. package/koala-nest/src/domain/auth/dtos/auth-provider-config.dto.ts +12 -0
  155. package/koala-nest/src/domain/auth/dtos/oauth-user-info.dto.ts +9 -0
  156. package/koala-nest/src/domain/auth/services/iauth.service.ts +37 -0
  157. package/koala-nest/src/domain/common/icache.service.ts +11 -0
  158. package/koala-nest/src/domain/common/ilogging.service.ts +9 -0
  159. package/koala-nest/src/domain/common/ired-lock.service.ts +4 -0
  160. package/koala-nest/src/domain/dtos/logged-user-info.dto.ts +30 -0
  161. package/koala-nest/src/domain/dtos/pagination.dto.ts +35 -0
  162. package/koala-nest/src/domain/dtos/person-query.dto.ts +10 -0
  163. package/koala-nest/src/domain/entities/person/person-address.ts +14 -0
  164. package/koala-nest/src/domain/entities/person/person-contact.ts +28 -0
  165. package/koala-nest/src/domain/entities/person/person.ts +44 -0
  166. package/koala-nest/src/domain/entities/user/enums/user-status.enum.ts +6 -0
  167. package/koala-nest/src/domain/entities/user/user.ts +49 -0
  168. package/koala-nest/src/domain/repositories/iperson.repository.ts +10 -0
  169. package/koala-nest/src/domain/repositories/iuser.repository.ts +8 -0
  170. package/koala-nest/src/domain/services/ilogged-user-info.service.ts +5 -0
  171. package/koala-nest/src/host/app.module.ts +27 -0
  172. package/koala-nest/src/host/controllers/auth/auth.module.ts +38 -0
  173. package/koala-nest/src/host/controllers/auth/login.controller.ts +41 -0
  174. package/koala-nest/src/host/controllers/auth/refresh-token.controller.ts +24 -0
  175. package/koala-nest/src/host/controllers/auth/router.config.ts +9 -0
  176. package/koala-nest/src/host/controllers/auth/user-info.controller.ts +19 -0
  177. package/koala-nest/src/host/controllers/common/controller.base.ts +9 -0
  178. package/koala-nest/src/host/controllers/common/controller.module.ts +10 -0
  179. package/koala-nest/src/host/controllers/common/router-config.base.ts +14 -0
  180. package/koala-nest/src/host/controllers/health-check/health-check.controller.ts +29 -0
  181. package/koala-nest/src/host/controllers/health-check/health-check.module.ts +22 -0
  182. package/koala-nest/src/host/controllers/oauth2/auth-link.controller.ts +29 -0
  183. package/koala-nest/src/host/controllers/oauth2/exchange-code.controller.ts +29 -0
  184. package/koala-nest/src/host/controllers/oauth2/oauth-callback.controller.ts +28 -0
  185. package/koala-nest/src/host/controllers/oauth2/router.config.ts +9 -0
  186. package/koala-nest/src/host/controllers/oauth2/scalar-token.controller.ts +16 -0
  187. package/koala-nest/src/host/controllers/person/create-person.controller.ts +23 -0
  188. package/koala-nest/src/host/controllers/person/delete-person.controller.ts +23 -0
  189. package/koala-nest/src/host/controllers/person/person.module.ts +39 -0
  190. package/koala-nest/src/host/controllers/person/read-many-person.controller.ts +24 -0
  191. package/koala-nest/src/host/controllers/person/read-person.controller.ts +21 -0
  192. package/koala-nest/src/host/controllers/person/router.config.ts +9 -0
  193. package/koala-nest/src/host/controllers/person/update-person.controller.ts +22 -0
  194. package/koala-nest/src/host/decorators/api-exclude-endpoint-diff-develop.decorator.ts +9 -0
  195. package/koala-nest/src/host/decorators/api-property-enum.decorator.ts +49 -0
  196. package/koala-nest/src/host/decorators/api-property-only-develop.decorator.ts +19 -0
  197. package/koala-nest/src/host/decorators/controller.decorator.ts +10 -0
  198. package/koala-nest/src/host/decorators/is-public.decorator.ts +82 -0
  199. package/koala-nest/src/host/decorators/restriction-by-profile.decorator.ts +13 -0
  200. package/koala-nest/src/host/decorators/scalar-token-endpoint.decorator.ts +14 -0
  201. package/koala-nest/src/host/filters/errors.filter.ts +99 -0
  202. package/koala-nest/src/host/jobs/jobs-bootstrap.service.ts +61 -0
  203. package/koala-nest/src/host/jobs/jobs.module.ts +41 -0
  204. package/koala-nest/src/host/jobs/jobs.tokens.ts +2 -0
  205. package/koala-nest/src/host/main.ts +43 -0
  206. package/koala-nest/src/host/open-api/define-documentation.ts +210 -0
  207. package/koala-nest/src/host/security/guards/auth.guard.ts +107 -0
  208. package/koala-nest/src/host/security/guards/profiles.guard.ts +32 -0
  209. package/koala-nest/src/host/security/security.module.ts +62 -0
  210. package/koala-nest/src/host/security/strategies/jwt.strategy.ts +61 -0
  211. package/koala-nest/src/infra/auth/jwt-token.service.ts +48 -0
  212. package/koala-nest/src/infra/auth/oauth2-auth.service.ts +208 -0
  213. package/koala-nest/src/infra/common/cache-service.provider.ts +47 -0
  214. package/koala-nest/src/infra/common/env.service.ts +12 -0
  215. package/koala-nest/src/infra/common/in-memory-cache.service.ts +71 -0
  216. package/koala-nest/src/infra/common/logging.service.ts +19 -0
  217. package/koala-nest/src/infra/common/red-lock.service.ts +44 -0
  218. package/koala-nest/src/infra/common/redis-cache.service.ts +72 -0
  219. package/koala-nest/src/infra/database/data-source-factory.ts +23 -0
  220. package/koala-nest/src/infra/database/database.module.ts +19 -0
  221. package/koala-nest/src/infra/database/migrations/1781281330533-Init.ts +67 -0
  222. package/koala-nest/src/infra/database/migrations/generate-migration.ts +26 -0
  223. package/koala-nest/src/infra/database/migrations/migration-datasource.ts +14 -0
  224. package/koala-nest/src/infra/infra.module.ts +29 -0
  225. package/koala-nest/src/infra/repositories/person.repository.ts +49 -0
  226. package/koala-nest/src/infra/repositories/repository.base.ts +20 -0
  227. package/koala-nest/src/infra/repositories/repository.module.ts +16 -0
  228. package/koala-nest/src/infra/repositories/user.repository.ts +38 -0
  229. package/koala-nest/src/infra/services/database.indicator.service.ts +17 -0
  230. package/koala-nest/src/infra/services/logged-user-info.service.ts +32 -0
  231. package/koala-nest/src/infra/services/redis.indicator.service.ts +66 -0
  232. package/koala-nest/src/test/app-auth-test.module.ts +32 -0
  233. package/koala-nest/src/test/app-test.module.ts +22 -0
  234. package/koala-nest/src/test/application/auth-link.handler.spec.ts +22 -0
  235. package/koala-nest/src/test/application/create-person.handler.spec.ts +39 -0
  236. package/koala-nest/src/test/application/create-person.job.spec.ts +55 -0
  237. package/koala-nest/src/test/application/delete-inactive.job.spec.ts +35 -0
  238. package/koala-nest/src/test/application/delete-person.handler.spec.ts +46 -0
  239. package/koala-nest/src/test/application/exchange-code.handler.spec.ts +67 -0
  240. package/koala-nest/src/test/application/inactive-person.handler.spec.ts +48 -0
  241. package/koala-nest/src/test/application/login.handler.spec.ts +55 -0
  242. package/koala-nest/src/test/application/read-many-person.handler.spec.ts +64 -0
  243. package/koala-nest/src/test/application/read-person.handler.spec.ts +44 -0
  244. package/koala-nest/src/test/application/refresh-token.handler.spec.ts +34 -0
  245. package/koala-nest/src/test/application/scalar-oauth-token.handler.spec.ts +63 -0
  246. package/koala-nest/src/test/application/update-person.handler.spec.ts +78 -0
  247. package/koala-nest/src/test/bun-test-globals.d.ts +1 -0
  248. package/koala-nest/src/test/core/auth.guard.spec.ts +77 -0
  249. package/koala-nest/src/test/core/build-list-cache-key.spec.ts +29 -0
  250. package/koala-nest/src/test/core/cron-expression-to-boolean.spec.ts +22 -0
  251. package/koala-nest/src/test/core/cron-job.handler.spec.ts +40 -0
  252. package/koala-nest/src/test/core/env.config.spec.ts +14 -0
  253. package/koala-nest/src/test/core/env.spec.ts +61 -0
  254. package/koala-nest/src/test/core/event-queue.spec.ts +53 -0
  255. package/koala-nest/src/test/core/format-typeorm-error.spec.ts +42 -0
  256. package/koala-nest/src/test/core/format-zod-error.spec.ts +38 -0
  257. package/koala-nest/src/test/core/is-provider-registered.spec.ts +35 -0
  258. package/koala-nest/src/test/core/jwt.strategy.spec.ts +38 -0
  259. package/koala-nest/src/test/core/mapping.spec.ts +177 -0
  260. package/koala-nest/src/test/core/oauth-provider.registry.spec.ts +79 -0
  261. package/koala-nest/src/test/core/profiles.guard.spec.ts +42 -0
  262. package/koala-nest/src/test/core/resolve-api-host.spec.ts +20 -0
  263. package/koala-nest/src/test/core/schemas.spec.ts +95 -0
  264. package/koala-nest/src/test/create-auth-e2e-test-app.ts +22 -0
  265. package/koala-nest/src/test/create-e2e-test-app.ts +14 -0
  266. package/koala-nest/src/test/e2e-context.ts +7 -0
  267. package/koala-nest/src/test/host/controllers/auth/auth.controller.e2e.spec.ts +87 -0
  268. package/koala-nest/src/test/host/controllers/person/lazy-loading.e2e.spec.ts +181 -0
  269. package/koala-nest/src/test/host/controllers/person/person.controller.e2e.spec.ts +148 -0
  270. package/koala-nest/src/test/host/errors.filter.spec.ts +75 -0
  271. package/koala-nest/src/test/host/is-public-open-api.spec.ts +60 -0
  272. package/koala-nest/src/test/host/oauth-callback.controller.spec.ts +18 -0
  273. package/koala-nest/src/test/infra/cache-service.provider.spec.ts +21 -0
  274. package/koala-nest/src/test/infra/in-memory-cache.service.spec.ts +49 -0
  275. package/koala-nest/src/test/infra/jwt-token.service.spec.ts +28 -0
  276. package/koala-nest/src/test/infra/logged-user-info.service.spec.ts +33 -0
  277. package/koala-nest/src/test/infra/oauth2-auth.service.spec.ts +112 -0
  278. package/koala-nest/src/test/infra/red-lock.service.spec.ts +43 -0
  279. package/koala-nest/src/test/infra/redis-cache.service.spec.ts +100 -0
  280. package/koala-nest/src/test/infra/redis-indicator.service.spec.ts +75 -0
  281. package/koala-nest/src/test/mockup/person/person.entities.ts +35 -0
  282. package/koala-nest/src/test/mockup/person/person.requests.ts +23 -0
  283. package/koala-nest/src/test/mockup/person/person.responses.ts +31 -0
  284. package/koala-nest/src/test/services/cache.stub.ts +41 -0
  285. package/koala-nest/src/test/services/fake-logging.service.ts +13 -0
  286. package/koala-nest/src/test/services/fake-red-lock.service.ts +11 -0
  287. package/koala-nest/src/test/services/logged-user-info.fake-service.ts +18 -0
  288. package/koala-nest/src/test/setup-e2e.ts +66 -0
  289. package/koala-nest/src/test/setup.ts +1 -0
  290. package/koala-nest/src/test/utils/configure-test-app.ts +24 -0
  291. package/koala-nest/src/test/utils/create-e2e-database.ts +50 -0
  292. package/koala-nest/src/test/utils/e2e-database-client.ts +9 -0
  293. package/koala-nest/src/test/utils/guard-test-context.ts +28 -0
  294. package/koala-nest/src/test/utils/jwt-test-keys.ts +27 -0
  295. package/koala-nest/tsconfig.build.json +8 -0
  296. package/koala-nest/tsconfig.json +36 -0
  297. package/koala-nest/tsconfig.spec.json +11 -0
  298. package/package.json +19 -29
  299. package/core/backgroud-services/cron-service/cron-job.handler.base.d.ts +0 -16
  300. package/core/backgroud-services/cron-service/cron-job.handler.base.js +0 -49
  301. package/core/backgroud-services/event-service/event-class.d.ts +0 -5
  302. package/core/backgroud-services/event-service/event-class.js +0 -11
  303. package/core/backgroud-services/event-service/event-handler.base.d.ts +0 -8
  304. package/core/backgroud-services/event-service/event-handler.base.js +0 -14
  305. package/core/backgroud-services/event-service/event-is-trigger.d.ts +0 -3
  306. package/core/backgroud-services/event-service/event-is-trigger.js +0 -7
  307. package/core/backgroud-services/event-service/event-job.d.ts +0 -13
  308. package/core/backgroud-services/event-service/event-job.js +0 -21
  309. package/core/backgroud-services/event-service/event-queue.d.ts +0 -18
  310. package/core/backgroud-services/event-service/event-queue.js +0 -65
  311. package/core/constants/query-params.d.ts +0 -6
  312. package/core/constants/query-params.js +0 -8
  313. package/core/controllers/base.controller.d.ts +0 -4
  314. package/core/controllers/base.controller.js +0 -6
  315. package/core/controllers/controller.decorator.d.ts +0 -2
  316. package/core/controllers/controller.decorator.js +0 -11
  317. package/core/controllers/created-registre-response.base.d.ts +0 -10
  318. package/core/controllers/created-registre-response.base.js +0 -35
  319. package/core/controllers/list-response.base.d.ts +0 -4
  320. package/core/controllers/list-response.base.js +0 -21
  321. package/core/controllers/pagination.request.d.ts +0 -10
  322. package/core/controllers/pagination.request.js +0 -56
  323. package/core/controllers/router-config.base.d.ts +0 -7
  324. package/core/controllers/router-config.base.js +0 -18
  325. package/core/controllers/schemas/boolean.schema.d.ts +0 -2
  326. package/core/controllers/schemas/boolean.schema.js +0 -12
  327. package/core/controllers/schemas/document-number.schema.d.ts +0 -1
  328. package/core/controllers/schemas/document-number.schema.js +0 -26
  329. package/core/controllers/schemas/email.schema.d.ts +0 -1
  330. package/core/controllers/schemas/email.schema.js +0 -13
  331. package/core/controllers/schemas/list-query.schema.d.ts +0 -17
  332. package/core/controllers/schemas/list-query.schema.js +0 -19
  333. package/core/controllers/schemas/native-enum.schema.d.ts +0 -7
  334. package/core/controllers/schemas/native-enum.schema.js +0 -28
  335. package/core/controllers/schemas/set-mask-document-number.schema.d.ts +0 -1
  336. package/core/controllers/schemas/set-mask-document-number.schema.js +0 -13
  337. package/core/database/entity.base.d.ts +0 -27
  338. package/core/database/entity.base.js +0 -145
  339. package/core/database/entity.decorator.d.ts +0 -12
  340. package/core/database/entity.decorator.js +0 -37
  341. package/core/database/prisma-client-with-custom-transaction.interface.d.ts +0 -8
  342. package/core/database/prisma-client-with-custom-transaction.interface.js +0 -2
  343. package/core/database/prisma-resolver.d.ts +0 -2
  344. package/core/database/prisma-resolver.js +0 -74
  345. package/core/database/prisma-transactional-client.d.ts +0 -11
  346. package/core/database/prisma-transactional-client.js +0 -25
  347. package/core/database/prisma.service.d.ts +0 -24
  348. package/core/database/prisma.service.js +0 -104
  349. package/core/database/repository.base.d.ts +0 -82
  350. package/core/database/repository.base.js +0 -668
  351. package/core/dtos/pagination.dto.d.ts +0 -9
  352. package/core/dtos/pagination.dto.js +0 -49
  353. package/core/errors/bad-request.error.d.ts +0 -5
  354. package/core/errors/bad-request.error.js +0 -10
  355. package/core/errors/conflict.error.d.ts +0 -4
  356. package/core/errors/conflict.error.js +0 -10
  357. package/core/errors/error.base.d.ts +0 -4
  358. package/core/errors/error.base.js +0 -11
  359. package/core/errors/no-content.error.d.ts +0 -5
  360. package/core/errors/no-content.error.js +0 -10
  361. package/core/errors/not-allowed.error.d.ts +0 -5
  362. package/core/errors/not-allowed.error.js +0 -10
  363. package/core/errors/resource-not-found.error.d.ts +0 -5
  364. package/core/errors/resource-not-found.error.js +0 -10
  365. package/core/errors/use-case-error.d.ts +0 -3
  366. package/core/errors/use-case-error.js +0 -2
  367. package/core/errors/user-already-exist.error.d.ts +0 -4
  368. package/core/errors/user-already-exist.error.js +0 -10
  369. package/core/errors/wrong-credentials.error.d.ts +0 -4
  370. package/core/errors/wrong-credentials.error.js +0 -10
  371. package/core/health-check/health-check.controller.d.ts +0 -5
  372. package/core/health-check/health-check.controller.js +0 -32
  373. package/core/health-check/health-check.module.d.ts +0 -2
  374. package/core/health-check/health-check.module.js +0 -19
  375. package/core/index.d.ts +0 -18
  376. package/core/index.js +0 -7
  377. package/core/koala-app.d.ts +0 -64
  378. package/core/koala-app.js +0 -258
  379. package/core/koala-global-vars.d.ts +0 -7
  380. package/core/koala-global-vars.js +0 -9
  381. package/core/koala-nest-database.module.d.ts +0 -16
  382. package/core/koala-nest-database.module.js +0 -52
  383. package/core/koala-nest-http.module.d.ts +0 -13
  384. package/core/koala-nest-http.module.js +0 -37
  385. package/core/koala-nest.module.d.ts +0 -17
  386. package/core/koala-nest.module.js +0 -66
  387. package/core/mapping/auto-mapping-class-context.d.ts +0 -16
  388. package/core/mapping/auto-mapping-class-context.js +0 -18
  389. package/core/mapping/auto-mapping-context.d.ts +0 -11
  390. package/core/mapping/auto-mapping-context.js +0 -24
  391. package/core/mapping/auto-mapping-list.d.ts +0 -28
  392. package/core/mapping/auto-mapping-list.js +0 -99
  393. package/core/mapping/auto-mapping-profile.d.ts +0 -3
  394. package/core/mapping/auto-mapping-profile.js +0 -6
  395. package/core/mapping/auto-mapping.decorator.d.ts +0 -9
  396. package/core/mapping/auto-mapping.decorator.js +0 -27
  397. package/core/mapping/auto-mapping.module.d.ts +0 -5
  398. package/core/mapping/auto-mapping.module.js +0 -29
  399. package/core/mapping/auto-mapping.service.d.ts +0 -20
  400. package/core/mapping/auto-mapping.service.js +0 -197
  401. package/core/mapping/create-map.d.ts +0 -3
  402. package/core/mapping/create-map.js +0 -7
  403. package/core/mapping/for-member.d.ts +0 -5
  404. package/core/mapping/for-member.js +0 -8
  405. package/core/request-overflow/request-handler.base.d.ts +0 -4
  406. package/core/request-overflow/request-handler.base.js +0 -6
  407. package/core/request-overflow/request-result.d.ts +0 -15
  408. package/core/request-overflow/request-result.js +0 -37
  409. package/core/request-overflow/request-validator.base.d.ts +0 -7
  410. package/core/request-overflow/request-validator.base.js +0 -26
  411. package/core/security/strategies/api-key.strategy.d.ts +0 -16
  412. package/core/security/strategies/api-key.strategy.js +0 -31
  413. package/core/utils/assing-object.d.ts +0 -5
  414. package/core/utils/assing-object.js +0 -6
  415. package/core/utils/automap-cycle-context.d.ts +0 -6
  416. package/core/utils/automap-cycle-context.js +0 -33
  417. package/core/utils/env.config.d.ts +0 -6
  418. package/core/utils/env.config.js +0 -18
  419. package/core/utils/filter-request-params.d.ts +0 -13
  420. package/core/utils/filter-request-params.js +0 -22
  421. package/core/utils/find-on-list.d.ts +0 -2
  422. package/core/utils/find-on-list.js +0 -13
  423. package/core/utils/generate-prisma-include-schema.d.ts +0 -9
  424. package/core/utils/generate-prisma-include-schema.js +0 -60
  425. package/core/utils/get-type-by-prop.d.ts +0 -2
  426. package/core/utils/get-type-by-prop.js +0 -11
  427. package/core/utils/hydrate-entity-from-cache.d.ts +0 -22
  428. package/core/utils/hydrate-entity-from-cache.js +0 -76
  429. package/core/utils/instanciate-class-with-dependencies-injection.d.ts +0 -2
  430. package/core/utils/instanciate-class-with-dependencies-injection.js +0 -10
  431. package/core/utils/interfaces/icomparable.d.ts +0 -5
  432. package/core/utils/interfaces/icomparable.js +0 -6
  433. package/core/utils/is-plain-object.d.ts +0 -1
  434. package/core/utils/is-plain-object.js +0 -8
  435. package/core/utils/list.d.ts +0 -39
  436. package/core/utils/list.js +0 -167
  437. package/core/utils/promise-all.d.ts +0 -7
  438. package/core/utils/promise-all.js +0 -19
  439. package/core/utils/proxy.d.ts +0 -1
  440. package/core/utils/proxy.js +0 -27
  441. package/core/utils/set-mask-document-number.d.ts +0 -1
  442. package/core/utils/set-mask-document-number.js +0 -13
  443. package/core/validators/file-validator.d.ts +0 -27
  444. package/core/validators/file-validator.js +0 -94
  445. package/decorators/api-exclude-endpoint-diff-develop.decorator.d.ts +0 -1
  446. package/decorators/api-exclude-endpoint-diff-develop.decorator.js +0 -9
  447. package/decorators/api-property-enum.decorator.d.ts +0 -8
  448. package/decorators/api-property-enum.decorator.js +0 -21
  449. package/decorators/api-property-only-develop.decorator.d.ts +0 -2
  450. package/decorators/api-property-only-develop.decorator.js +0 -9
  451. package/decorators/cookies.decorator.d.ts +0 -1
  452. package/decorators/cookies.decorator.js +0 -8
  453. package/decorators/is-public.decorator.d.ts +0 -2
  454. package/decorators/is-public.decorator.js +0 -7
  455. package/decorators/upload.decorator.d.ts +0 -1
  456. package/decorators/upload.decorator.js +0 -18
  457. package/env/env.d.ts +0 -25
  458. package/env/env.js +0 -14
  459. package/env/env.module.d.ts +0 -2
  460. package/env/env.module.js +0 -20
  461. package/env/env.service.d.ts +0 -7
  462. package/env/env.service.js +0 -28
  463. package/filters/domain-errors.filter.d.ts +0 -18
  464. package/filters/domain-errors.filter.js +0 -92
  465. package/filters/global-exception.filter.d.ts +0 -8
  466. package/filters/global-exception.filter.js +0 -68
  467. package/filters/prisma-validation-exception.filter.d.ts +0 -10
  468. package/filters/prisma-validation-exception.filter.js +0 -82
  469. package/filters/zod-errors.filter.d.ts +0 -9
  470. package/filters/zod-errors.filter.js +0 -60
  471. package/services/logging/ilogging.service.d.ts +0 -16
  472. package/services/logging/ilogging.service.js +0 -6
  473. package/services/logging/logging.service.d.ts +0 -4
  474. package/services/logging/logging.service.js +0 -20
  475. package/services/redis/iredis.service.d.ts +0 -6
  476. package/services/redis/iredis.service.js +0 -6
  477. package/services/redis/redis.service.d.ts +0 -14
  478. package/services/redis/redis.service.js +0 -65
  479. package/services/redlock/ired-lock.service.d.ts +0 -4
  480. package/services/redlock/ired-lock.service.js +0 -6
  481. package/services/redlock/red-lock.service.d.ts +0 -9
  482. package/services/redlock/red-lock.service.js +0 -46
  483. package/test/koala-app-test-dependencies.d.ts +0 -10
  484. package/test/koala-app-test-dependencies.js +0 -13
  485. package/test/koala-app-test.d.ts +0 -22
  486. package/test/koala-app-test.js +0 -77
  487. package/test/repositories/in-memory-base.repository.d.ts +0 -17
  488. package/test/repositories/in-memory-base.repository.js +0 -67
  489. package/test/services/fake-logging.service.d.ts +0 -4
  490. package/test/services/fake-logging.service.js +0 -9
  491. package/test/services/fake-red-lock.service.d.ts +0 -5
  492. package/test/services/fake-red-lock.service.js +0 -11
  493. package/test/utils/create-e2e-database.d.ts +0 -7
  494. package/test/utils/create-e2e-database.js +0 -38
  495. package/test/utils/e2e-database-client.d.ts +0 -7
  496. package/test/utils/e2e-database-client.js +0 -12
  497. package/test/utils/wait-for.d.ts +0 -1
  498. package/test/utils/wait-for.js +0 -21
  499. package/tsconfig.lib.tsbuildinfo +0 -1
@@ -1,668 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RepositoryBase = void 0;
4
- const KlString_1 = require("@koalarx/utils/KlString");
5
- const pagination_dto_1 = require("../dtos/pagination.dto");
6
- const koala_global_vars_1 = require("../koala-global-vars");
7
- const auto_mapping_list_1 = require("../mapping/auto-mapping-list");
8
- const generate_prisma_include_schema_1 = require("../utils/generate-prisma-include-schema");
9
- const hydrate_entity_from_cache_1 = require("../utils/hydrate-entity-from-cache");
10
- const list_1 = require("../utils/list");
11
- const proxy_1 = require("../utils/proxy");
12
- const entity_base_1 = require("./entity.base");
13
- class RepositoryBase {
14
- _context;
15
- _modelName;
16
- _includeFindMany;
17
- constructor({ context, modelName }) {
18
- this._context = context;
19
- this._modelName = modelName;
20
- this._includeFindMany = (0, generate_prisma_include_schema_1.generateIncludeSchema)({
21
- forList: true,
22
- deepLimit: 2,
23
- entity: this._modelName,
24
- });
25
- }
26
- get entityInstance() {
27
- return this._modelName.prototype.constructor;
28
- }
29
- getIdPropName(entity) {
30
- const idConfig = Reflect.getMetadata('entity:id', entity ? entity.constructor.prototype : this._modelName.prototype);
31
- if (idConfig) {
32
- if (idConfig.single) {
33
- return idConfig.single;
34
- }
35
- else if (idConfig.composite) {
36
- return idConfig.composite;
37
- }
38
- }
39
- return 'id';
40
- }
41
- getWhereByIdSchema(entity, value) {
42
- const propIdName = this.getIdPropName(entity);
43
- if (Array.isArray(propIdName)) {
44
- const whereSchema = {};
45
- propIdName.forEach((propName) => {
46
- whereSchema[propName] =
47
- typeof value === 'object' ? value[propName] : value;
48
- });
49
- return whereSchema;
50
- }
51
- return {
52
- [propIdName]: typeof value === 'object' ? value[propIdName] : value,
53
- };
54
- }
55
- getConnectPrismaSchemaForRelation(entity, data) {
56
- return {
57
- connect: this.getWhereByIdSchema(entity, data ?? entity),
58
- };
59
- }
60
- checkIdHasValue(entity, value) {
61
- const result = this.getWhereByIdSchema(entity, value);
62
- return Object.values(result).every((val) => val !== undefined && val !== null);
63
- }
64
- getSelectRootPrismaSchema(entity) {
65
- const selectSchema = {};
66
- const entityProps = auto_mapping_list_1.AutoMappingList.getAllProps(entity);
67
- entityProps.forEach((prop) => {
68
- let instance;
69
- try {
70
- instance = new (prop.type())();
71
- }
72
- catch {
73
- instance = null;
74
- }
75
- if (instance instanceof entity_base_1.EntityBase) {
76
- selectSchema[prop.name] = {
77
- select: this.getWhereByIdSchema(instance, true),
78
- };
79
- }
80
- else if (instance instanceof list_1.List) {
81
- const list = new entity()[prop.name];
82
- const entityInstance = list.entityType;
83
- selectSchema[prop.name] = {
84
- select: this.getWhereByIdSchema(new entityInstance(), true),
85
- };
86
- }
87
- else {
88
- selectSchema[prop.name] = true;
89
- }
90
- });
91
- return selectSchema;
92
- }
93
- getSelectWithRelationsId(entity) {
94
- const selectSchema = {};
95
- const entityProps = auto_mapping_list_1.AutoMappingList.getAllProps(entity);
96
- entityProps.forEach((prop) => {
97
- let instance;
98
- try {
99
- instance = new (prop.type())();
100
- }
101
- catch {
102
- instance = null;
103
- }
104
- if (instance instanceof entity_base_1.EntityBase) {
105
- selectSchema[prop.name] = {
106
- select: this.getWhereByIdSchema(instance, true),
107
- };
108
- }
109
- else if (instance instanceof list_1.List) {
110
- const list = new entity()[prop.name];
111
- const entityInstance = list.entityType;
112
- selectSchema[prop.name] = {
113
- select: this.getWhereByIdSchema(new entityInstance(), true),
114
- };
115
- }
116
- else {
117
- selectSchema[prop.name] = true;
118
- }
119
- });
120
- return selectSchema;
121
- }
122
- getPropNameFromEntitySource(source, entity) {
123
- const entityProps = auto_mapping_list_1.AutoMappingList.getAllProps(source);
124
- return entityProps.find((prop) => {
125
- let instance;
126
- try {
127
- instance = new (prop.type())();
128
- }
129
- catch {
130
- instance = null;
131
- }
132
- if (instance) {
133
- if (instance.constructor.name === entity.name) {
134
- return true;
135
- }
136
- else if (source[prop.name] instanceof list_1.List) {
137
- const list = source[prop.name];
138
- return list.entityType?.name === entity.name;
139
- }
140
- }
141
- return false;
142
- })?.name;
143
- }
144
- listRelationEntities(entity, fromList = false) {
145
- const relationEntities = [];
146
- Object.keys(entity).forEach((key) => {
147
- if (entity[key] instanceof list_1.List) {
148
- const list = entity[key];
149
- list.toArray('added').forEach((item) => {
150
- relationEntities.push(item);
151
- });
152
- list.toArray('updated').forEach((item) => {
153
- relationEntities.push(item);
154
- });
155
- }
156
- else if (entity[key] instanceof entity_base_1.EntityBase && !fromList) {
157
- relationEntities.push(entity[key]);
158
- }
159
- });
160
- return relationEntities;
161
- }
162
- listToRelationActionList(entity) {
163
- const relationCreates = [];
164
- const relationUpdates = [];
165
- const relationDeletes = [];
166
- Object.keys(entity).forEach((key) => {
167
- if (entity[key] instanceof list_1.List) {
168
- const list = entity[key];
169
- const entityInstance = list.entityType;
170
- const modelName = entityInstance.name;
171
- const parentModelName = entity.constructor.name;
172
- const parentPropName = this.getPropNameFromEntitySource(entityInstance, entity.constructor) ?? (0, KlString_1.toCamelCase)(parentModelName);
173
- if (modelName) {
174
- list.toArray('removed').forEach((item) => {
175
- relationDeletes.push({
176
- modelName: (0, KlString_1.toCamelCase)(modelName),
177
- entityInstance,
178
- schema: this.getWhereByIdSchema(item, item),
179
- relations: [],
180
- });
181
- });
182
- list.toArray('added').forEach((item) => {
183
- relationCreates.push({
184
- modelName: (0, KlString_1.toCamelCase)(modelName),
185
- entityInstance,
186
- schema: {
187
- data: {
188
- ...this.entityToPrisma(item),
189
- [parentPropName]: this.getConnectPrismaSchemaForRelation(entity),
190
- },
191
- select: this.getSelectRootPrismaSchema(item.constructor),
192
- },
193
- relations: this.listRelationEntities(item, true),
194
- });
195
- });
196
- list.toArray('updated').forEach((item) => {
197
- relationUpdates.push({
198
- modelName: (0, KlString_1.toCamelCase)(modelName),
199
- entityInstance,
200
- schema: {
201
- where: this.getWhereByIdSchema(item, item),
202
- data: this.entityToPrisma(item),
203
- select: this.getSelectRootPrismaSchema(item.constructor),
204
- },
205
- relations: this.listRelationEntities(item, true),
206
- });
207
- });
208
- }
209
- }
210
- else if (entity[key] instanceof entity_base_1.EntityBase) {
211
- const entityInstance = entity[key];
212
- const modelName = entity[key].constructor.name;
213
- if (entity[key]._action === entity_base_1.EntityActionType.update &&
214
- entity[key]._hasUpdate) {
215
- relationUpdates.push({
216
- modelName: (0, KlString_1.toCamelCase)(modelName),
217
- entityInstance,
218
- schema: {
219
- where: { id: entityInstance._id },
220
- data: this.entityToPrisma(entityInstance),
221
- select: this.getSelectRootPrismaSchema(entityInstance.constructor),
222
- },
223
- relations: this.listRelationEntities(entityInstance),
224
- });
225
- }
226
- else if (entity[key]._action === entity_base_1.EntityActionType.create) {
227
- relationCreates.push({
228
- modelName: (0, KlString_1.toCamelCase)(modelName),
229
- entityInstance,
230
- schema: {
231
- data: this.entityToPrisma(entityInstance),
232
- select: this.getSelectRootPrismaSchema(entityInstance.constructor),
233
- },
234
- relations: this.listRelationEntities(entityInstance),
235
- });
236
- }
237
- }
238
- });
239
- return { relationCreates, relationUpdates, relationDeletes };
240
- }
241
- entityToPrisma(entity) {
242
- const prismaSchema = {};
243
- Object.keys(entity)
244
- .filter((key) => !['id', '_id', '_action'].includes(key))
245
- .filter((key) => !(entity[key] instanceof Function || entity[key] instanceof list_1.List))
246
- .forEach((key) => {
247
- if (entity[key] instanceof entity_base_1.EntityBase) {
248
- if (entity[key]._action === entity_base_1.EntityActionType.create) {
249
- if (entity[key] && this.checkIdHasValue(entity, entity[key])) {
250
- prismaSchema[key] = {
251
- connectOrCreate: {
252
- where: this.getWhereByIdSchema(entity[key].constructor, entity[key]),
253
- create: this.entityToPrisma(entity[key]),
254
- },
255
- };
256
- }
257
- else {
258
- prismaSchema[key] = {
259
- create: this.entityToPrisma(entity[key]),
260
- };
261
- }
262
- }
263
- else {
264
- prismaSchema[key] = entity[key]._hasUpdate
265
- ? { update: this.entityToPrisma(entity[key]) }
266
- : this.getConnectPrismaSchemaForRelation(entity[key]);
267
- }
268
- }
269
- else if (entity[key] === null) {
270
- const propDefinitions = auto_mapping_list_1.AutoMappingList.getPropDefinitions(entity.constructor, key);
271
- const relationEntity = auto_mapping_list_1.AutoMappingList.getSourceByName(propDefinitions?.type ?? '');
272
- if (relationEntity) {
273
- prismaSchema[key] = {
274
- disconnect: true,
275
- };
276
- }
277
- }
278
- else if (!(entity[key] instanceof list_1.List)) {
279
- prismaSchema[key] = entity[key];
280
- }
281
- });
282
- return prismaSchema;
283
- }
284
- getInclude(include) {
285
- include = include ?? {};
286
- const result = {};
287
- Object.keys(include).forEach((key) => {
288
- if (typeof include[key] === 'boolean') {
289
- result[key] = include[key];
290
- }
291
- else {
292
- result[key] = {
293
- include: this.getInclude(include[key]),
294
- };
295
- }
296
- });
297
- return result;
298
- }
299
- findManySchema(where, pagination) {
300
- return {
301
- include: this.getInclude(this._includeFindMany),
302
- where,
303
- orderBy: pagination?.generateOrderBy(),
304
- skip: pagination?.skip(),
305
- take: (pagination?.limit ?? 0) > 0 ? pagination?.limit : undefined,
306
- };
307
- }
308
- createEntity(data, entityClass) {
309
- const entity = new (entityClass || this._modelName)();
310
- const trackedEntity = entity;
311
- if (typeof trackedEntity.stopHasUpdateTracking === 'function') {
312
- trackedEntity.stopHasUpdateTracking();
313
- }
314
- entity._action = entity_base_1.EntityActionType.update;
315
- entity.automap(data);
316
- if (typeof trackedEntity.startHasUpdateTracking === 'function') {
317
- trackedEntity.startHasUpdateTracking();
318
- }
319
- return entity;
320
- }
321
- orphanRemoval(client, entity) {
322
- const where = {};
323
- Object.keys(entity)
324
- .filter((key) => key === 'id' || key.includes('Id'))
325
- .forEach((key) => (where[key] = entity[key]));
326
- return client[(0, KlString_1.toCamelCase)(entity.constructor.name)].delete({ where });
327
- }
328
- getIdOnEntity(entity, data) {
329
- const propIdName = this.getIdPropName(entity);
330
- if (Array.isArray(propIdName)) {
331
- const idValues = [];
332
- propIdName.forEach((propName) => {
333
- idValues.push(data[propName]);
334
- });
335
- return idValues.join('-');
336
- }
337
- return data[propIdName];
338
- }
339
- async loadRelationForEntity(where, entity, cache) {
340
- return this._context[(0, KlString_1.toCamelCase)((0, KlString_1.toCamelCase)(entity.name))]
341
- .findFirst({
342
- select: this.getSelectRootPrismaSchema(entity),
343
- where,
344
- })
345
- .then((data) => this.enrichEntityWithRelations(entity, (0, proxy_1.createProxy)(data), cache));
346
- }
347
- loadEntityFromCache(entity, data, cache) {
348
- return (0, hydrate_entity_from_cache_1.hydrateEntityFromCache)({
349
- entity: entity,
350
- data,
351
- cache,
352
- dependencies: {
353
- getAllProps: (sourceEntity) => auto_mapping_list_1.AutoMappingList.getAllProps(sourceEntity),
354
- getPropDefinitions: (sourceEntity, propName) => auto_mapping_list_1.AutoMappingList.getPropDefinitions(sourceEntity, propName),
355
- getSourceByName: (sourceName) => auto_mapping_list_1.AutoMappingList.getSourceByName(sourceName),
356
- getListEntityType: (sourceEntity, propName) => {
357
- const list = new sourceEntity()[propName];
358
- if (list instanceof list_1.List) {
359
- return list.entityType;
360
- }
361
- return null;
362
- },
363
- getIdOnEntity: (currentEntity, value) => this.getIdOnEntity(currentEntity, value),
364
- createEntity: (sourceEntity) => new sourceEntity(),
365
- },
366
- });
367
- }
368
- async enrichEntityWithRelations(entity, data, cache = new Map()) {
369
- if (!data) {
370
- return null;
371
- }
372
- const allProps = auto_mapping_list_1.AutoMappingList.getAllProps(entity);
373
- for (const prop of allProps) {
374
- const propName = prop.name;
375
- const propDef = auto_mapping_list_1.AutoMappingList.getPropDefinitions(entity, propName);
376
- if (propDef?.type === list_1.List.name) {
377
- const list = new entity()[prop.name];
378
- const entityInstance = list.entityType;
379
- for (const item of data[propName] || []) {
380
- const cacheKey = `${entityInstance.name}-${this.getIdOnEntity(new entityInstance(), item)}`;
381
- if (cache.has(cacheKey)) {
382
- continue;
383
- }
384
- cache.set(cacheKey, item);
385
- await this.loadRelationForEntity(this.getWhereByIdSchema(new entityInstance(), item), entityInstance, cache).then((response) => cache.set(cacheKey, response));
386
- }
387
- continue;
388
- }
389
- const relationEntity = auto_mapping_list_1.AutoMappingList.getSourceByName(propDef?.type ?? '');
390
- if (relationEntity && data[propName]) {
391
- const cacheKey = `${relationEntity.name}-${this.getIdOnEntity(new relationEntity(), data[propName])}`;
392
- if (cache.has(cacheKey)) {
393
- continue;
394
- }
395
- cache.set(cacheKey, data[propName]);
396
- await this.loadRelationForEntity(this.getWhereByIdSchema(new relationEntity(), data[propName]), relationEntity, cache).then((response) => cache.set(cacheKey, response));
397
- }
398
- }
399
- return data;
400
- }
401
- async persistRelations(transaction, entity) {
402
- const { relationCreates, relationUpdates, relationDeletes } = this.listToRelationActionList(entity);
403
- if (relationDeletes.length > 0) {
404
- await Promise.all(relationDeletes.map((relation) => transaction[relation.modelName].deleteMany({
405
- where: relation.schema,
406
- })));
407
- }
408
- if (relationUpdates.length > 0) {
409
- await Promise.all([
410
- ...relationUpdates.map((relationUpdate) => transaction[relationUpdate.modelName]
411
- .update(relationUpdate.schema)
412
- .then(() => {
413
- if (relationUpdate.relations.length === 0) {
414
- return Promise.all([]);
415
- }
416
- return Promise.all(relationUpdate.relations.map((relation) => {
417
- if (relation._action === entity_base_1.EntityActionType.update &&
418
- relation._hasUpdate) {
419
- return this.persistRelations(transaction, relation);
420
- }
421
- else if (relation._action === entity_base_1.EntityActionType.create) {
422
- const relationPropName = this.getPropNameFromEntitySource(relation.constructor, relationUpdate.entityInstance);
423
- if (relationPropName &&
424
- !(relation[relationPropName] instanceof list_1.List)) {
425
- relation[relationPropName] =
426
- this.getConnectPrismaSchemaForRelation(relationUpdate.entityInstance, relation[relationPropName] ??
427
- relationUpdate.schema.where);
428
- }
429
- return transaction[(0, KlString_1.toCamelCase)(relation.constructor.name)]
430
- .create({
431
- data: this.entityToPrisma(relation),
432
- select: this.getSelectRootPrismaSchema(relation.constructor),
433
- })
434
- .then((response) => {
435
- const idPropName = this.getIdPropName(relation);
436
- if (!Array.isArray(idPropName)) {
437
- relation[idPropName] = response[idPropName];
438
- }
439
- else {
440
- idPropName.forEach((propName) => {
441
- relation[propName] = response[propName];
442
- });
443
- }
444
- return this.persistRelations(transaction, relation);
445
- });
446
- }
447
- }));
448
- })),
449
- ]);
450
- }
451
- if (relationCreates.length > 0) {
452
- await Promise.all([
453
- ...relationCreates.map((relationCreate) => transaction[relationCreate.modelName]
454
- .create(relationCreate.schema)
455
- .then((response) => {
456
- if (relationCreate.relations.length === 0) {
457
- return Promise.all([]);
458
- }
459
- return Promise.all(relationCreate.relations.map((relation) => {
460
- if (relation._action === entity_base_1.EntityActionType.update &&
461
- relation._hasUpdate) {
462
- return this.persistRelations(transaction, relation);
463
- }
464
- else if (relation._action === entity_base_1.EntityActionType.create) {
465
- const relationPropName = this.getPropNameFromEntitySource(relation.constructor, relationCreate.entityInstance);
466
- if (relationPropName &&
467
- !(relation[relationPropName] instanceof list_1.List)) {
468
- relation[relationPropName] =
469
- this.getConnectPrismaSchemaForRelation(relationCreate.entityInstance, response);
470
- }
471
- return transaction[(0, KlString_1.toCamelCase)(relation.constructor.name)]
472
- .create({
473
- data: this.entityToPrisma(relation),
474
- select: this.getSelectRootPrismaSchema(relation.constructor),
475
- })
476
- .then((response) => {
477
- const idPropName = this.getIdPropName(relation);
478
- if (!Array.isArray(idPropName)) {
479
- relation[idPropName] = response[idPropName];
480
- }
481
- else {
482
- idPropName.forEach((propName) => {
483
- relation[propName] = response[propName];
484
- });
485
- }
486
- return this.persistRelations(transaction, relation);
487
- });
488
- }
489
- }));
490
- })),
491
- ]);
492
- }
493
- }
494
- setIdOnEntity(entityInstance, data) {
495
- const idPropName = this.getIdPropName(entityInstance);
496
- if (!Array.isArray(idPropName)) {
497
- entityInstance[idPropName] = data[idPropName];
498
- entityInstance._id = data[idPropName];
499
- }
500
- else {
501
- idPropName.forEach((propName) => {
502
- entityInstance[propName] = data[propName];
503
- });
504
- entityInstance._id = idPropName.map((name) => data[name]).join('-');
505
- }
506
- entityInstance._action = entity_base_1.EntityActionType.update;
507
- entityInstance._hasUpdate = false;
508
- }
509
- autofillCreatedId(entity, response) {
510
- this.setIdOnEntity(entity, response);
511
- Object.keys(entity).forEach((key) => {
512
- if (entity[key] instanceof entity_base_1.EntityBase && response[key]) {
513
- this.setIdOnEntity(entity[key], response[key]);
514
- }
515
- });
516
- }
517
- context(transactionalClient) {
518
- const modelName = this._modelName.name;
519
- if (!modelName)
520
- throw new Error('modelName não informado no contrutor do repositorio');
521
- const contextKey = (0, KlString_1.toCamelCase)(modelName);
522
- if (transactionalClient) {
523
- return transactionalClient[contextKey];
524
- }
525
- return this._context[contextKey];
526
- }
527
- async findById(id) {
528
- const data = await this.context().findFirst({
529
- select: this.getSelectWithRelationsId(this.entityInstance),
530
- where: this.getWhereByIdSchema(this.entityInstance, {
531
- id,
532
- }),
533
- });
534
- if (!data)
535
- return null;
536
- const cache = new Map();
537
- return this.enrichEntityWithRelations(this.entityInstance, (0, proxy_1.createProxy)(data), cache)
538
- .then((response) => this.loadEntityFromCache(this.entityInstance, response, cache))
539
- .then((response) => this.createEntity(response));
540
- }
541
- async findFirst(where) {
542
- const data = await this.context().findFirst({
543
- select: this.getSelectWithRelationsId(this.entityInstance),
544
- where,
545
- });
546
- if (!data)
547
- return null;
548
- const cache = new Map();
549
- return this.enrichEntityWithRelations(this.entityInstance, (0, proxy_1.createProxy)(data), cache)
550
- .then((response) => this.loadEntityFromCache(this.entityInstance, response, cache))
551
- .then((response) => this.createEntity(response));
552
- }
553
- async findUnique(where) {
554
- const data = await this.context().findUnique({
555
- select: this.getSelectWithRelationsId(this.entityInstance),
556
- where,
557
- });
558
- if (!data)
559
- return null;
560
- const cache = new Map();
561
- return this.enrichEntityWithRelations(this.entityInstance, (0, proxy_1.createProxy)(data), cache)
562
- .then((response) => this.loadEntityFromCache(this.entityInstance, response, cache))
563
- .then((response) => this.createEntity(response));
564
- }
565
- async findMany(where, pagination) {
566
- return this.context()
567
- .findMany(this.findManySchema(where, pagination))
568
- .then((result) => result.map((response) => this.createEntity(response)));
569
- }
570
- async findManyAndCount(where, pagination) {
571
- const count = await this.context().count({ where });
572
- if (count > 0) {
573
- const items = await this.findMany(where, Object.assign(new pagination_dto_1.PaginationDto(), pagination));
574
- return { items, count };
575
- }
576
- return { items: [], count };
577
- }
578
- async saveChanges(entity, updateWhere) {
579
- const prismaEntity = this.entityToPrisma(entity);
580
- if (entity._action === entity_base_1.EntityActionType.create) {
581
- return this.withTransaction((client) => this.context(client)
582
- .create({
583
- data: prismaEntity,
584
- select: this.getSelectRootPrismaSchema(entity.constructor),
585
- })
586
- .then((response) => {
587
- this.autofillCreatedId(entity, response);
588
- return this.persistRelations(client, entity).then(() => entity);
589
- }));
590
- }
591
- else {
592
- const where = updateWhere ?? { id: entity._id };
593
- return this.withTransaction((client) => this.context(client)
594
- .update({
595
- where,
596
- data: prismaEntity,
597
- select: this.getSelectRootPrismaSchema(entity.constructor),
598
- })
599
- .then((response) => {
600
- this.autofillCreatedId(entity, response);
601
- return this.persistRelations(client, entity);
602
- })).then(() => this.findUnique(where));
603
- }
604
- }
605
- async saveMany(entities, updateWhere) {
606
- await this.withTransaction(async (client) => {
607
- const prismaEntities = entities.map((entity) => this.entityToPrisma(entity));
608
- return Promise.all([
609
- this.context(client).createMany({
610
- data: prismaEntities,
611
- skipDuplicates: true,
612
- }),
613
- ...entities
614
- .filter((entity) => !!entity._id)
615
- .map((entity) => this.context(client).update({
616
- data: entity,
617
- where: updateWhere ?? { id: entity._id },
618
- })),
619
- ]);
620
- });
621
- }
622
- async remove(where, notCascadeEntityProps, externalServices) {
623
- const entity = await this.findUnique(where);
624
- if (!entity) {
625
- throw new Error(`Entity not found for where: ${JSON.stringify(where)}`);
626
- }
627
- const relationEntity = [];
628
- Object.keys(entity).forEach((key) => {
629
- if (entity[key] instanceof entity_base_1.EntityBase &&
630
- !notCascadeEntityProps?.includes(key)) {
631
- relationEntity.push(entity[key]);
632
- }
633
- });
634
- return this.withTransaction((client) => (externalServices
635
- ? externalServices.then(() => client)
636
- : Promise.resolve(client)).then((client) => this.context(client)
637
- .delete({ where })
638
- .then((response) => Promise.all(relationEntity.map((entity) => this.orphanRemoval(client, entity))).then(() => response))));
639
- }
640
- async removeMany(where, notCascadeEntityProps, externalServices) {
641
- const entities = await this.findMany(where);
642
- if (entities.length === 0) {
643
- throw new Error(`Entities not found for where: ${JSON.stringify(where)}`);
644
- }
645
- return this.withTransaction((client) => (externalServices
646
- ? externalServices.then(() => client)
647
- : Promise.resolve(client)).then(async (client) => {
648
- const relationEntity = [];
649
- for (const entity of entities) {
650
- Object.keys(entity).forEach((key) => {
651
- if (entity[key] instanceof entity_base_1.EntityBase &&
652
- !notCascadeEntityProps?.includes(key)) {
653
- relationEntity.push(entity[key]);
654
- }
655
- });
656
- }
657
- return this.context(client)
658
- .deleteMany({ where })
659
- .then((response) => Promise.all(relationEntity.map((entity) => this.orphanRemoval(client, entity))).then(() => response));
660
- }));
661
- }
662
- withTransaction(fn) {
663
- return this._context.withTransaction(async (client) => {
664
- return fn(new koala_global_vars_1.KoalaGlobalVars.dbTransactionContext(client));
665
- });
666
- }
667
- }
668
- exports.RepositoryBase = RepositoryBase;
@@ -1,9 +0,0 @@
1
- import type { QueryDirectionType } from '..';
2
- export declare class PaginationDto {
3
- page?: number;
4
- limit?: number;
5
- orderBy?: string;
6
- direction?: QueryDirectionType;
7
- skip(): number;
8
- generateOrderBy(): {} | undefined;
9
- }