@solidstarters/solid-core 1.2.193 → 1.2.201

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 (630) hide show
  1. package/dist/commands/fixtures/fixtures-setup.command.d.ts +15 -0
  2. package/dist/commands/fixtures/fixtures-setup.command.d.ts.map +1 -0
  3. package/dist/commands/fixtures/fixtures-setup.command.js +58 -0
  4. package/dist/commands/fixtures/fixtures-setup.command.js.map +1 -0
  5. package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +16 -0
  6. package/dist/commands/fixtures/fixtures-tear-down.command.d.ts.map +1 -0
  7. package/dist/commands/fixtures/fixtures-tear-down.command.js +59 -0
  8. package/dist/commands/fixtures/fixtures-tear-down.command.js.map +1 -0
  9. package/dist/commands/mcp.command.d.ts +20 -0
  10. package/dist/commands/mcp.command.d.ts.map +1 -0
  11. package/dist/commands/mcp.command.js +208 -0
  12. package/dist/commands/mcp.command.js.map +1 -0
  13. package/dist/commands/refresh-model.command.d.ts +8 -5
  14. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  15. package/dist/commands/refresh-model.command.js +36 -0
  16. package/dist/commands/refresh-model.command.js.map +1 -1
  17. package/dist/commands/remove-fields.command.js +1 -1
  18. package/dist/commands/remove-fields.command.js.map +1 -1
  19. package/dist/commands/seed.command.d.ts +2 -0
  20. package/dist/commands/seed.command.d.ts.map +1 -1
  21. package/dist/commands/seed.command.js +28 -1
  22. package/dist/commands/seed.command.js.map +1 -1
  23. package/dist/constants/error-messages.d.ts +2 -0
  24. package/dist/constants/error-messages.d.ts.map +1 -1
  25. package/dist/constants/error-messages.js +4 -0
  26. package/dist/constants/error-messages.js.map +1 -1
  27. package/dist/controllers/authentication.controller.js +1 -1
  28. package/dist/controllers/authentication.controller.js.map +1 -1
  29. package/dist/controllers/email-template.controller.js +1 -1
  30. package/dist/controllers/email-template.controller.js.map +1 -1
  31. package/dist/controllers/field-metadata.controller.d.ts +136 -4
  32. package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
  33. package/dist/controllers/field-metadata.controller.js +14 -1
  34. package/dist/controllers/field-metadata.controller.js.map +1 -1
  35. package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
  36. package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
  37. package/dist/controllers/model-metadata.controller.js +1 -1
  38. package/dist/controllers/model-metadata.controller.js.map +1 -1
  39. package/dist/controllers/model-sequence.controller.d.ts +43 -0
  40. package/dist/controllers/model-sequence.controller.d.ts.map +1 -0
  41. package/dist/controllers/model-sequence.controller.js +179 -0
  42. package/dist/controllers/model-sequence.controller.js.map +1 -0
  43. package/dist/controllers/module-metadata.controller.js +1 -1
  44. package/dist/controllers/module-metadata.controller.js.map +1 -1
  45. package/dist/controllers/otp-authentication.controller.js +1 -1
  46. package/dist/controllers/otp-authentication.controller.js.map +1 -1
  47. package/dist/controllers/service.controller.js +1 -1
  48. package/dist/controllers/service.controller.js.map +1 -1
  49. package/dist/controllers/setting.controller.d.ts +1 -0
  50. package/dist/controllers/setting.controller.d.ts.map +1 -1
  51. package/dist/controllers/setting.controller.js +15 -0
  52. package/dist/controllers/setting.controller.js.map +1 -1
  53. package/dist/controllers/sms-template.controller.js +1 -1
  54. package/dist/controllers/sms-template.controller.js.map +1 -1
  55. package/dist/controllers/test-queue.controller.js +1 -1
  56. package/dist/controllers/test-queue.controller.js.map +1 -1
  57. package/dist/controllers/test.controller.js +1 -1
  58. package/dist/controllers/test.controller.js.map +1 -1
  59. package/dist/dtos/basic-filters.dto.d.ts +3 -1
  60. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  61. package/dist/dtos/basic-filters.dto.js +8 -2
  62. package/dist/dtos/basic-filters.dto.js.map +1 -1
  63. package/dist/dtos/basic-group-filters.dto.d.ts +6 -0
  64. package/dist/dtos/basic-group-filters.dto.d.ts.map +1 -0
  65. package/dist/dtos/basic-group-filters.dto.js +46 -0
  66. package/dist/dtos/basic-group-filters.dto.js.map +1 -0
  67. package/dist/dtos/create-ai-interaction.dto.d.ts +2 -0
  68. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
  69. package/dist/dtos/create-ai-interaction.dto.js +14 -1
  70. package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
  71. package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
  72. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  73. package/dist/dtos/create-field-metadata.dto.js +34 -8
  74. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  75. package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
  76. package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
  77. package/dist/dtos/create-import-transaction.dto.js +1 -7
  78. package/dist/dtos/create-import-transaction.dto.js.map +1 -1
  79. package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
  80. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  81. package/dist/dtos/create-model-metadata.dto.js +13 -1
  82. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  83. package/dist/dtos/create-model-sequence.dto.d.ts +14 -0
  84. package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -0
  85. package/dist/dtos/create-model-sequence.dto.js +90 -0
  86. package/dist/dtos/create-model-sequence.dto.js.map +1 -0
  87. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  88. package/dist/dtos/create-role-metadata.dto.js +6 -1
  89. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  90. package/dist/dtos/get-mcp-url.dto.d.ts +5 -0
  91. package/dist/dtos/get-mcp-url.dto.d.ts.map +1 -0
  92. package/dist/dtos/get-mcp-url.dto.js +31 -0
  93. package/dist/dtos/get-mcp-url.dto.js.map +1 -0
  94. package/dist/dtos/resolve-s3-url.dto.d.ts +10 -0
  95. package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
  96. package/dist/dtos/resolve-s3-url.dto.js +49 -0
  97. package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
  98. package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
  99. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
  100. package/dist/dtos/update-ai-interaction.dto.js +13 -1
  101. package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
  102. package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
  103. package/dist/dtos/update-field-metadata.dto.js.map +1 -1
  104. package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
  105. package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
  106. package/dist/dtos/update-import-transaction.dto.js +1 -7
  107. package/dist/dtos/update-import-transaction.dto.js.map +1 -1
  108. package/dist/dtos/update-model-sequence.dto.d.ts +15 -0
  109. package/dist/dtos/update-model-sequence.dto.d.ts.map +1 -0
  110. package/dist/dtos/update-model-sequence.dto.js +94 -0
  111. package/dist/dtos/update-model-sequence.dto.js.map +1 -0
  112. package/dist/entities/action-metadata.entity.js +4 -4
  113. package/dist/entities/action-metadata.entity.js.map +1 -1
  114. package/dist/entities/ai-interaction.entity.d.ts +2 -0
  115. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  116. package/dist/entities/ai-interaction.entity.js +15 -6
  117. package/dist/entities/ai-interaction.entity.js.map +1 -1
  118. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  119. package/dist/entities/chatter-message-details.entity.js +1 -1
  120. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  121. package/dist/entities/chatter-message.entity.js +1 -1
  122. package/dist/entities/chatter-message.entity.js.map +1 -1
  123. package/dist/entities/common.entity.d.ts +2 -3
  124. package/dist/entities/common.entity.d.ts.map +1 -1
  125. package/dist/entities/common.entity.js +10 -11
  126. package/dist/entities/common.entity.js.map +1 -1
  127. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
  128. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  129. package/dist/entities/dashboard-question.entity.js +3 -3
  130. package/dist/entities/dashboard-question.entity.js.map +1 -1
  131. package/dist/entities/dashboard-variable.entity.js +3 -3
  132. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  133. package/dist/entities/dashboard.entity.js +1 -1
  134. package/dist/entities/dashboard.entity.js.map +1 -1
  135. package/dist/entities/email-template.entity.d.ts.map +1 -1
  136. package/dist/entities/email-template.entity.js +4 -3
  137. package/dist/entities/email-template.entity.js.map +1 -1
  138. package/dist/entities/export-template.entity.js +2 -2
  139. package/dist/entities/export-template.entity.js.map +1 -1
  140. package/dist/entities/export-transaction.entity.js +2 -2
  141. package/dist/entities/export-transaction.entity.js.map +1 -1
  142. package/dist/entities/field-metadata.entity.d.ts +1 -0
  143. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  144. package/dist/entities/field-metadata.entity.js +8 -4
  145. package/dist/entities/field-metadata.entity.js.map +1 -1
  146. package/dist/entities/import-transaction-error-log.entity.js +1 -1
  147. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  148. package/dist/entities/import-transaction.entity.d.ts +0 -1
  149. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  150. package/dist/entities/import-transaction.entity.js +2 -7
  151. package/dist/entities/import-transaction.entity.js.map +1 -1
  152. package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
  153. package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
  154. package/dist/entities/legacy-common-with-id.entity.js +32 -0
  155. package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
  156. package/dist/entities/legacy-common.entity.d.ts +13 -0
  157. package/dist/entities/legacy-common.entity.d.ts.map +1 -0
  158. package/dist/entities/legacy-common.entity.js +68 -0
  159. package/dist/entities/legacy-common.entity.js.map +1 -0
  160. package/dist/entities/list-of-values.entity.js +2 -2
  161. package/dist/entities/list-of-values.entity.js.map +1 -1
  162. package/dist/entities/locale.entity.js +1 -1
  163. package/dist/entities/locale.entity.js.map +1 -1
  164. package/dist/entities/media.entity.d.ts.map +1 -1
  165. package/dist/entities/media.entity.js +3 -3
  166. package/dist/entities/media.entity.js.map +1 -1
  167. package/dist/entities/menu-item-metadata.entity.js +4 -4
  168. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  169. package/dist/entities/model-metadata.entity.d.ts +2 -0
  170. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  171. package/dist/entities/model-metadata.entity.js +11 -3
  172. package/dist/entities/model-metadata.entity.js.map +1 -1
  173. package/dist/entities/model-sequence.entity.d.ts +15 -0
  174. package/dist/entities/model-sequence.entity.d.ts.map +1 -0
  175. package/dist/entities/model-sequence.entity.js +67 -0
  176. package/dist/entities/model-sequence.entity.js.map +1 -0
  177. package/dist/entities/mq-message-queue.entity.js +1 -1
  178. package/dist/entities/mq-message-queue.entity.js.map +1 -1
  179. package/dist/entities/mq-message.entity.d.ts +3 -3
  180. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  181. package/dist/entities/mq-message.entity.js +10 -10
  182. package/dist/entities/mq-message.entity.js.map +1 -1
  183. package/dist/entities/saved-filters.entity.js +4 -4
  184. package/dist/entities/saved-filters.entity.js.map +1 -1
  185. package/dist/entities/scheduled-job.entity.js +4 -4
  186. package/dist/entities/scheduled-job.entity.js.map +1 -1
  187. package/dist/entities/security-rule.entity.js +2 -2
  188. package/dist/entities/security-rule.entity.js.map +1 -1
  189. package/dist/entities/setting.entity.js +2 -2
  190. package/dist/entities/setting.entity.js.map +1 -1
  191. package/dist/entities/sms-template.entity.js +2 -2
  192. package/dist/entities/sms-template.entity.js.map +1 -1
  193. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  194. package/dist/entities/user-activity-history.entity.js +1 -1
  195. package/dist/entities/user-activity-history.entity.js.map +1 -1
  196. package/dist/entities/user-view-metadata.entity.js +2 -2
  197. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  198. package/dist/entities/user.entity.js +13 -15
  199. package/dist/entities/user.entity.js.map +1 -1
  200. package/dist/entities/view-metadata.entity.js +3 -3
  201. package/dist/entities/view-metadata.entity.js.map +1 -1
  202. package/dist/helpers/date.helper.d.ts +1 -1
  203. package/dist/helpers/date.helper.d.ts.map +1 -1
  204. package/dist/helpers/date.helper.js +24 -2
  205. package/dist/helpers/date.helper.js.map +1 -1
  206. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -1
  207. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +13 -2
  208. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
  209. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +0 -1
  210. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
  211. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +4 -9
  212. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
  213. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +0 -1
  214. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
  215. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +7 -8
  216. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
  217. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +0 -1
  218. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
  219. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +4 -9
  220. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
  221. package/dist/helpers/model-metadata-helper.service.d.ts +4 -1
  222. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  223. package/dist/helpers/model-metadata-helper.service.js +52 -30
  224. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  225. package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
  226. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  227. package/dist/helpers/module-metadata-helper.service.js +9 -0
  228. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  229. package/dist/helpers/module.helper.d.ts +1 -0
  230. package/dist/helpers/module.helper.d.ts.map +1 -1
  231. package/dist/helpers/module.helper.js +26 -2
  232. package/dist/helpers/module.helper.js.map +1 -1
  233. package/dist/helpers/schematic.service.d.ts +9 -3
  234. package/dist/helpers/schematic.service.d.ts.map +1 -1
  235. package/dist/helpers/schematic.service.js +49 -32
  236. package/dist/helpers/schematic.service.js.map +1 -1
  237. package/dist/helpers/solid-registry.d.ts +14 -2
  238. package/dist/helpers/solid-registry.d.ts.map +1 -1
  239. package/dist/helpers/solid-registry.js +10 -0
  240. package/dist/helpers/solid-registry.js.map +1 -1
  241. package/dist/helpers/typeorm-db-helper.d.ts +3 -0
  242. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
  243. package/dist/helpers/typeorm-db-helper.js +24 -0
  244. package/dist/helpers/typeorm-db-helper.js.map +1 -0
  245. package/dist/index.d.ts +7 -2
  246. package/dist/index.d.ts.map +1 -1
  247. package/dist/index.js +8 -3
  248. package/dist/index.js.map +1 -1
  249. package/dist/interfaces.d.ts +3 -0
  250. package/dist/interfaces.d.ts.map +1 -1
  251. package/dist/interfaces.js.map +1 -1
  252. package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts +1 -0
  253. package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
  254. package/dist/jobs/computed-field-evaluation-subscriber.service.js +16 -4
  255. package/dist/jobs/computed-field-evaluation-subscriber.service.js.map +1 -1
  256. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  257. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
  258. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  259. package/dist/repository/media.repository.d.ts.map +1 -1
  260. package/dist/repository/media.repository.js +4 -0
  261. package/dist/repository/media.repository.js.map +1 -1
  262. package/dist/repository/model-sequence.repository.d.ts +14 -0
  263. package/dist/repository/model-sequence.repository.d.ts.map +1 -0
  264. package/dist/repository/model-sequence.repository.js +103 -0
  265. package/dist/repository/model-sequence.repository.js.map +1 -0
  266. package/dist/seeders/module-metadata-seeder.service.d.ts +8 -13
  267. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  268. package/dist/seeders/module-metadata-seeder.service.js +103 -43
  269. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  270. package/dist/seeders/seed-data/solid-core-metadata.json +553 -652
  271. package/dist/seeders/system-fields-seeder.service.d.ts +1 -0
  272. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  273. package/dist/seeders/system-fields-seeder.service.js +12 -3
  274. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  275. package/dist/services/action-metadata.service.d.ts.map +1 -1
  276. package/dist/services/action-metadata.service.js +1 -0
  277. package/dist/services/action-metadata.service.js.map +1 -1
  278. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  279. package/dist/services/ai-interaction.service.js +2 -1
  280. package/dist/services/ai-interaction.service.js.map +1 -1
  281. package/dist/services/authentication.service.d.ts.map +1 -1
  282. package/dist/services/authentication.service.js +22 -14
  283. package/dist/services/authentication.service.js.map +1 -1
  284. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  285. package/dist/services/chatter-message-details.service.js +1 -0
  286. package/dist/services/chatter-message-details.service.js.map +1 -1
  287. package/dist/services/chatter-message.service.d.ts.map +1 -1
  288. package/dist/services/chatter-message.service.js +7 -3
  289. package/dist/services/chatter-message.service.js.map +1 -1
  290. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
  291. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +10 -6
  292. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
  293. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +15 -0
  294. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -0
  295. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +72 -0
  296. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -0
  297. package/dist/services/crud-helper.service.d.ts +31 -6
  298. package/dist/services/crud-helper.service.d.ts.map +1 -1
  299. package/dist/services/crud-helper.service.js +285 -50
  300. package/dist/services/crud-helper.service.js.map +1 -1
  301. package/dist/services/crud.service.d.ts +7 -2
  302. package/dist/services/crud.service.d.ts.map +1 -1
  303. package/dist/services/crud.service.js +135 -26
  304. package/dist/services/crud.service.js.map +1 -1
  305. package/dist/services/database/database-bootstrap.service.d.ts +12 -0
  306. package/dist/services/database/database-bootstrap.service.d.ts.map +1 -0
  307. package/dist/services/database/database-bootstrap.service.js +115 -0
  308. package/dist/services/database/database-bootstrap.service.js.map +1 -0
  309. package/dist/services/email-template.service.d.ts +7 -7
  310. package/dist/services/email-template.service.d.ts.map +1 -1
  311. package/dist/services/email-template.service.js +8 -7
  312. package/dist/services/email-template.service.js.map +1 -1
  313. package/dist/services/excel.service.d.ts +10 -0
  314. package/dist/services/excel.service.d.ts.map +1 -1
  315. package/dist/services/excel.service.js +100 -0
  316. package/dist/services/excel.service.js.map +1 -1
  317. package/dist/services/field-metadata.service.d.ts +146 -6
  318. package/dist/services/field-metadata.service.d.ts.map +1 -1
  319. package/dist/services/field-metadata.service.js +218 -58
  320. package/dist/services/field-metadata.service.js.map +1 -1
  321. package/dist/services/file.service.d.ts +1 -0
  322. package/dist/services/file.service.d.ts.map +1 -1
  323. package/dist/services/file.service.js +9 -0
  324. package/dist/services/file.service.js.map +1 -1
  325. package/dist/services/fixtures.service.d.ts +13 -0
  326. package/dist/services/fixtures.service.d.ts.map +1 -0
  327. package/dist/services/fixtures.service.js +95 -0
  328. package/dist/services/fixtures.service.js.map +1 -0
  329. package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
  330. package/dist/services/genai/ingest-metadata.service.js +1 -1
  331. package/dist/services/genai/ingest-metadata.service.js.map +1 -1
  332. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  333. package/dist/services/import-transaction-error-log.service.js +1 -0
  334. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  335. package/dist/services/import-transaction.service.d.ts.map +1 -1
  336. package/dist/services/import-transaction.service.js +7 -1
  337. package/dist/services/import-transaction.service.js.map +1 -1
  338. package/dist/services/list-of-values.service.d.ts +2 -2
  339. package/dist/services/list-of-values.service.d.ts.map +1 -1
  340. package/dist/services/list-of-values.service.js +2 -1
  341. package/dist/services/list-of-values.service.js.map +1 -1
  342. package/dist/services/locale.service.d.ts.map +1 -1
  343. package/dist/services/locale.service.js +1 -0
  344. package/dist/services/locale.service.js.map +1 -1
  345. package/dist/services/mail/smtp-email.service.js +0 -1
  346. package/dist/services/mail/smtp-email.service.js.map +1 -1
  347. package/dist/services/media.service.d.ts +3 -3
  348. package/dist/services/media.service.d.ts.map +1 -1
  349. package/dist/services/media.service.js +6 -4
  350. package/dist/services/media.service.js.map +1 -1
  351. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  352. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +17 -6
  353. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  354. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  355. package/dist/services/mediaStorageProviders/file-storage-provider.js +0 -13
  356. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  357. package/dist/services/menu-item-metadata.service.d.ts +3 -1
  358. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  359. package/dist/services/menu-item-metadata.service.js +35 -11
  360. package/dist/services/menu-item-metadata.service.js.map +1 -1
  361. package/dist/services/model-metadata.service.d.ts.map +1 -1
  362. package/dist/services/model-metadata.service.js +16 -45
  363. package/dist/services/model-metadata.service.js.map +1 -1
  364. package/dist/services/model-sequence.service.d.ts +23 -0
  365. package/dist/services/model-sequence.service.d.ts.map +1 -0
  366. package/dist/services/model-sequence.service.js +55 -0
  367. package/dist/services/model-sequence.service.js.map +1 -0
  368. package/dist/services/module-metadata.service.d.ts +1 -0
  369. package/dist/services/module-metadata.service.d.ts.map +1 -1
  370. package/dist/services/module-metadata.service.js +35 -1
  371. package/dist/services/module-metadata.service.js.map +1 -1
  372. package/dist/services/mq-message.service.d.ts.map +1 -1
  373. package/dist/services/mq-message.service.js +3 -4
  374. package/dist/services/mq-message.service.js.map +1 -1
  375. package/dist/services/permission-metadata.service.d.ts +5 -5
  376. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  377. package/dist/services/permission-metadata.service.js +6 -5
  378. package/dist/services/permission-metadata.service.js.map +1 -1
  379. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  380. package/dist/services/queues/database-subscriber.service.js +2 -1
  381. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  382. package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
  383. package/dist/services/queues/publisher-factory.service.js +4 -0
  384. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  385. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  386. package/dist/services/queues/rabbitmq-subscriber.service.js +2 -2
  387. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  388. package/dist/services/role-metadata.service.d.ts.map +1 -1
  389. package/dist/services/role-metadata.service.js +1 -0
  390. package/dist/services/role-metadata.service.js.map +1 -1
  391. package/dist/services/scheduled-job.service.d.ts +6 -6
  392. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  393. package/dist/services/scheduled-job.service.js +8 -8
  394. package/dist/services/scheduled-job.service.js.map +1 -1
  395. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  396. package/dist/services/scheduled-jobs/scheduler.service.js +4 -0
  397. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  398. package/dist/services/security-rule.service.d.ts.map +1 -1
  399. package/dist/services/security-rule.service.js +1 -0
  400. package/dist/services/security-rule.service.js.map +1 -1
  401. package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -1
  402. package/dist/services/selection-providers/list-of-models-selection-provider.service.js +4 -0
  403. package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
  404. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
  405. package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
  406. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
  407. package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
  408. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
  409. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
  410. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
  411. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
  412. package/dist/services/setting.service.d.ts +7 -5
  413. package/dist/services/setting.service.d.ts.map +1 -1
  414. package/dist/services/setting.service.js +28 -5
  415. package/dist/services/setting.service.js.map +1 -1
  416. package/dist/services/sms-template.service.d.ts +7 -7
  417. package/dist/services/sms-template.service.d.ts.map +1 -1
  418. package/dist/services/sms-template.service.js +8 -7
  419. package/dist/services/sms-template.service.js.map +1 -1
  420. package/dist/services/solid-introspect.service.d.ts +10 -3
  421. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  422. package/dist/services/solid-introspect.service.js +66 -12
  423. package/dist/services/solid-introspect.service.js.map +1 -1
  424. package/dist/services/solid-ts-morph.service.js +2 -2
  425. package/dist/services/solid-ts-morph.service.js.map +1 -1
  426. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  427. package/dist/services/user-activity-history.service.js +1 -0
  428. package/dist/services/user-activity-history.service.js.map +1 -1
  429. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  430. package/dist/services/user-view-metadata.service.js +3 -2
  431. package/dist/services/user-view-metadata.service.js.map +1 -1
  432. package/dist/services/user.service.d.ts.map +1 -1
  433. package/dist/services/user.service.js +1 -0
  434. package/dist/services/user.service.js.map +1 -1
  435. package/dist/services/view-metadata.service.d.ts +3 -1
  436. package/dist/services/view-metadata.service.d.ts.map +1 -1
  437. package/dist/services/view-metadata.service.js +33 -5
  438. package/dist/services/view-metadata.service.js.map +1 -1
  439. package/dist/solid-core-cli-db.module.d.ts.map +1 -1
  440. package/dist/solid-core-cli-db.module.js +5 -2
  441. package/dist/solid-core-cli-db.module.js.map +1 -1
  442. package/dist/solid-core.module.d.ts.map +1 -1
  443. package/dist/solid-core.module.js +23 -1
  444. package/dist/solid-core.module.js.map +1 -1
  445. package/dist/subscribers/audit.subscriber.d.ts +3 -2
  446. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  447. package/dist/subscribers/audit.subscriber.js +8 -10
  448. package/dist/subscribers/audit.subscriber.js.map +1 -1
  449. package/dist/subscribers/computed-entity-field.subscriber.d.ts +7 -4
  450. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
  451. package/dist/subscribers/computed-entity-field.subscriber.js +60 -21
  452. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  453. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
  454. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
  455. package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
  456. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
  457. package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
  458. package/dist/subscribers/field-metadata.subscriber.js +0 -1
  459. package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
  460. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
  461. package/dist/subscribers/model-metadata.subscriber.js +3 -2
  462. package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
  463. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
  464. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
  465. package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
  466. package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
  467. package/dist/transformers/typeorm/local-date-time-transformer.d.ts +5 -0
  468. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -0
  469. package/dist/transformers/typeorm/local-date-time-transformer.js +26 -0
  470. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -0
  471. package/dist/tsconfig.tsbuildinfo +1 -1
  472. package/docs/grouping-enhancements.md +89 -0
  473. package/package.json +1 -1
  474. package/sql/default/mssql/proc_CleanupModelMetadata.sql +175 -0
  475. package/sql/default/mssql/proc_CleanupModuleMetadata.sql +78 -0
  476. package/sql/default/mssql/scratchpad.sql.txt +10 -0
  477. package/sql/default/postgres/proc_CleanupModelMetadata.sql +148 -0
  478. package/sql/default/postgres/proc_CleanupModuleMetadata.sql +50 -0
  479. package/sql/default/postgres/scratchpad.sql.txt +12 -0
  480. package/sql-server-changes.txt +88 -0
  481. package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
  482. package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
  483. package/src/commands/mcp.command.ts +215 -0
  484. package/src/commands/refresh-model.command.ts +39 -5
  485. package/src/commands/remove-fields.command.ts +1 -1
  486. package/src/commands/seed.command.ts +34 -15
  487. package/src/constants/error-messages.ts +7 -1
  488. package/src/controllers/authentication.controller.ts +1 -1
  489. package/src/controllers/email-template.controller.ts +1 -1
  490. package/src/controllers/field-metadata.controller.ts +7 -1
  491. package/src/controllers/media-storage-provider-metadata.controller.ts +1 -1
  492. package/src/controllers/model-metadata.controller.ts +1 -1
  493. package/src/controllers/model-sequence.controller.ts +93 -0
  494. package/src/controllers/module-metadata.controller.ts +1 -1
  495. package/src/controllers/otp-authentication.controller.ts +1 -1
  496. package/src/controllers/service.controller.ts +1 -1
  497. package/src/controllers/setting.controller.ts +33 -21
  498. package/src/controllers/sms-template.controller.ts +1 -1
  499. package/src/controllers/test-queue.controller.ts +1 -1
  500. package/src/controllers/test.controller.ts +1 -1
  501. package/src/dtos/basic-filters.dto.ts +6 -1
  502. package/src/dtos/basic-group-filters.dto.ts +23 -0
  503. package/src/dtos/create-ai-interaction.dto.ts +16 -9
  504. package/src/dtos/create-field-metadata.dto.ts +43 -13
  505. package/src/dtos/create-import-transaction.dto.ts +0 -4
  506. package/src/dtos/create-model-metadata.dto.ts +10 -0
  507. package/src/dtos/create-model-sequence.dto.ts +51 -0
  508. package/src/dtos/create-role-metadata.dto.ts +23 -4
  509. package/src/dtos/get-mcp-url.dto.ts +13 -0
  510. package/src/dtos/resolve-s3-url.dto.ts +31 -0
  511. package/src/dtos/update-ai-interaction.dto.ts +16 -9
  512. package/src/dtos/update-field-metadata.dto.ts +1 -2
  513. package/src/dtos/update-import-transaction.dto.ts +0 -4
  514. package/src/dtos/update-model-sequence.dto.ts +53 -0
  515. package/src/entities/action-metadata.entity.ts +4 -4
  516. package/src/entities/ai-interaction.entity.ts +16 -12
  517. package/src/entities/chatter-message-details.entity.ts +18 -18
  518. package/src/entities/chatter-message.entity.ts +2 -2
  519. package/src/entities/common.entity.ts +20 -11
  520. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
  521. package/src/entities/dashboard-question.entity.ts +3 -3
  522. package/src/entities/dashboard-variable.entity.ts +3 -3
  523. package/src/entities/dashboard.entity.ts +1 -1
  524. package/src/entities/email-template.entity.ts +4 -3
  525. package/src/entities/export-template.entity.ts +2 -2
  526. package/src/entities/export-transaction.entity.ts +2 -2
  527. package/src/entities/field-metadata.entity.ts +6 -3
  528. package/src/entities/import-transaction-error-log.entity.ts +2 -2
  529. package/src/entities/import-transaction.entity.ts +2 -5
  530. package/src/entities/legacy-common-with-id.entity.ts +11 -0
  531. package/src/entities/legacy-common.entity.ts +58 -0
  532. package/src/entities/list-of-values.entity.ts +2 -2
  533. package/src/entities/locale.entity.ts +1 -1
  534. package/src/entities/media.entity.ts +25 -25
  535. package/src/entities/menu-item-metadata.entity.ts +4 -4
  536. package/src/entities/model-metadata.entity.ts +9 -2
  537. package/src/entities/model-sequence.entity.ts +32 -0
  538. package/src/entities/mq-message-queue.entity.ts +1 -1
  539. package/src/entities/mq-message.entity.ts +34 -34
  540. package/src/entities/saved-filters.entity.ts +5 -5
  541. package/src/entities/scheduled-job.entity.ts +4 -4
  542. package/src/entities/security-rule.entity.ts +2 -2
  543. package/src/entities/setting.entity.ts +2 -2
  544. package/src/entities/sms-template.entity.ts +2 -2
  545. package/src/entities/user-activity-history.entity.ts +14 -14
  546. package/src/entities/user-view-metadata.entity.ts +2 -2
  547. package/src/entities/user.entity.ts +15 -15
  548. package/src/entities/view-metadata.entity.ts +3 -3
  549. package/src/helpers/date.helper.ts +31 -10
  550. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +18 -5
  551. package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +9 -9
  552. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +16 -8
  553. package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +9 -9
  554. package/src/helpers/model-metadata-helper.service.ts +67 -34
  555. package/src/helpers/module-metadata-helper.service.ts +18 -1
  556. package/src/helpers/module.helper.ts +37 -1
  557. package/src/helpers/schematic.service.ts +72 -46
  558. package/src/helpers/solid-registry.ts +28 -2
  559. package/src/helpers/typeorm-db-helper.ts +26 -0
  560. package/src/index.ts +7 -2
  561. package/src/interfaces.ts +3 -0
  562. package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
  563. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
  564. package/src/repository/media.repository.ts +3 -2
  565. package/src/repository/model-sequence.repository.ts +97 -0
  566. package/src/seeders/module-metadata-seeder.service.ts +176 -58
  567. package/src/seeders/seed-data/solid-core-metadata.json +555 -654
  568. package/src/seeders/system-fields-seeder.service.ts +39 -36
  569. package/src/services/action-metadata.service.ts +3 -2
  570. package/src/services/ai-interaction.service.ts +3 -2
  571. package/src/services/authentication.service.ts +46 -14
  572. package/src/services/chatter-message-details.service.ts +2 -1
  573. package/src/services/chatter-message.service.ts +10 -4
  574. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +17 -12
  575. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
  576. package/src/services/crud-helper.service.ts +319 -53
  577. package/src/services/crud.service.ts +233 -34
  578. package/src/services/database/database-bootstrap.service.ts +91 -0
  579. package/src/services/email-template.service.ts +11 -13
  580. package/src/services/excel.service.ts +146 -3
  581. package/src/services/field-metadata.service.ts +322 -70
  582. package/src/services/file.service.ts +9 -0
  583. package/src/services/fixtures.service.ts +108 -0
  584. package/src/services/genai/ingest-metadata.service.ts +4 -3
  585. package/src/services/import-transaction-error-log.service.ts +2 -1
  586. package/src/services/import-transaction.service.ts +8 -4
  587. package/src/services/list-of-values.service.ts +4 -4
  588. package/src/services/locale.service.ts +2 -1
  589. package/src/services/mail/smtp-email.service.ts +1 -1
  590. package/src/services/media.service.ts +10 -11
  591. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +22 -7
  592. package/src/services/mediaStorageProviders/file-storage-provider.ts +18 -13
  593. package/src/services/menu-item-metadata.service.ts +87 -52
  594. package/src/services/model-metadata.service.ts +68 -47
  595. package/src/services/model-sequence.service.ts +33 -0
  596. package/src/services/module-metadata.service.ts +49 -2
  597. package/src/services/mq-message.service.ts +16 -15
  598. package/src/services/permission-metadata.service.ts +8 -9
  599. package/src/services/queues/database-subscriber.service.ts +3 -1
  600. package/src/services/queues/publisher-factory.service.ts +2 -1
  601. package/src/services/queues/rabbitmq-subscriber.service.ts +4 -2
  602. package/src/services/role-metadata.service.ts +1 -0
  603. package/src/services/scheduled-job.service.ts +9 -9
  604. package/src/services/scheduled-jobs/scheduler.service.ts +5 -0
  605. package/src/services/security-rule.service.ts +1 -0
  606. package/src/services/selection-providers/list-of-models-selection-provider.service.ts +5 -2
  607. package/src/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
  608. package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
  609. package/src/services/setting.service.ts +46 -16
  610. package/src/services/sms-template.service.ts +11 -13
  611. package/src/services/solid-introspect.service.ts +97 -10
  612. package/src/services/solid-ts-morph.service.ts +2 -2
  613. package/src/services/user-activity-history.service.ts +3 -2
  614. package/src/services/user-view-metadata.service.ts +4 -3
  615. package/src/services/user.service.ts +2 -1
  616. package/src/services/view-metadata.service.ts +52 -21
  617. package/src/solid-core-cli-db.module.ts +5 -4
  618. package/src/solid-core.module.ts +23 -1
  619. package/src/subscribers/audit.subscriber.ts +14 -9
  620. package/src/subscribers/computed-entity-field.subscriber.ts +71 -22
  621. package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
  622. package/src/subscribers/field-metadata.subscriber.ts +1 -1
  623. package/src/subscribers/model-metadata.subscriber.ts +4 -2
  624. package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
  625. package/src/transformers/typeorm/local-date-time-transformer.ts +30 -0
  626. package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
  627. package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
  628. package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
  629. package/src/entities/user.entity.ts.bkp +0 -144
  630. package/src/services/docker exec -it mssql //" +0 -8
@@ -1,6 +1,8 @@
1
1
  // Return the system fields metadata for a model
2
2
 
3
- import { Injectable, Logger } from "@nestjs/common";
3
+ import { forwardRef, Inject, Injectable, Logger } from "@nestjs/common";
4
+ import { _ } from "lodash";
5
+ import { LEGACY_TABLE_FIELDS_PREFIX } from "src/entities/legacy-common.entity";
4
6
  import { ModelMetadataRepository } from "src/repository/model-metadata.repository";
5
7
  import { SolidRegistry } from "./solid-registry";
6
8
 
@@ -8,104 +10,135 @@ import { SolidRegistry } from "./solid-registry";
8
10
  export class ModelMetadataHelperService {
9
11
  private readonly logger = new Logger(ModelMetadataHelperService.name);
10
12
 
11
- constructor(private readonly registry: SolidRegistry,
13
+ constructor(
14
+ private readonly registry: SolidRegistry,
12
15
  // @InjectRepository(ModelMetadata)
13
16
  // private readonly modelMetadataRepo: Repository<ModelMetadata>,
17
+ @Inject(forwardRef(() => ModelMetadataRepository))
14
18
  private readonly modelMetadataRepo: ModelMetadataRepository,
15
19
  ) {
16
20
  }
17
21
 
18
- getSystemFieldsMetadata(): any[] {
19
- const systemFieldsMetadata = [
22
+ getSystemFieldsMetadata(isLegacyTable: boolean=false, isLegacyTableWithId: boolean=false): any[] {
23
+ let systemFieldsMetadata: any[];
24
+ if (isLegacyTableWithId) {
25
+ systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(true);
26
+ }
27
+ else if (isLegacyTable) {
28
+ systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(false);
29
+ }
30
+ else {
31
+ systemFieldsMetadata = this.getSystemFieldsMetadataMapping();
32
+ }
33
+
34
+ this.checkWithRegistry(systemFieldsMetadata);
35
+
36
+ return systemFieldsMetadata;
37
+ }
38
+
39
+ // TODO: Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly
40
+ // Ideally this should be reflection based code
41
+ private checkWithRegistry(systemFieldsMetadata: ({ name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; isSystem: boolean; ormType?: undefined; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType: string; relationCoModelSingularName: string; relationCreateInverse: boolean; relationCascade: string; relationModelModuleName: string; })[]) {
42
+ const commonEntityKeys = this.registry.getCommonEntityKeys();
43
+ const systemFieldNames = systemFieldsMetadata.map(field => field.name);
44
+ const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));
45
+ if (missingKeys.length > 0) {
46
+ this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);
47
+ }
48
+ }
49
+
50
+ private getSystemFieldsMetadataMapping() {
51
+ return [
20
52
  {
21
53
  name: "id",
22
54
  displayName: "Id",
23
55
  type: "int",
24
- ormType: "bigint",
25
56
  isSystem: true,
26
57
  },
27
58
  {
28
59
  name: "createdAt",
29
60
  displayName: "Created At",
30
61
  type: "datetime",
31
- ormType: "timestamp",
32
62
  isSystem: true,
33
63
  },
34
64
  {
35
65
  name: "updatedAt",
36
66
  displayName: "Updated At",
37
67
  type: "datetime",
38
- ormType: "timestamp",
39
68
  isSystem: true,
40
69
  },
41
70
  {
42
71
  name: "deletedAt",
43
72
  displayName: "Deleted At",
44
73
  type: "datetime",
45
- ormType: "timestamp",
46
74
  isSystem: true,
47
75
  },
48
76
  {
49
77
  name: "deletedTracker",
50
78
  displayName: "Deleted Tracker",
51
79
  type: "shortText",
52
- ormType: "varchar",
53
80
  isSystem: true,
54
81
  },
55
82
  {
56
83
  name: "publishedAt",
57
84
  displayName: "Published At",
58
85
  type: "datetime",
59
- ormType: "timestamp",
60
86
  isSystem: true,
87
+ enableAuditTracking:true
61
88
  },
62
89
  {
63
90
  name: "localeName",
64
91
  displayName: "Locale",
65
92
  type: "shortText",
66
- ormType: "varchar",
67
93
  isSystem: true,
68
94
  },
69
95
  {
70
96
  name: "defaultEntityLocaleId",
71
97
  displayName: "Default Entity Locale Id",
72
98
  type: "int",
73
- ormType: "integer",
74
99
  isSystem: true,
75
100
  },
76
101
  {
77
102
  name: "createdBy",
78
103
  displayName: "Created By",
79
- type: "relation",
80
- ormType: "integer",
104
+ type: "int",
81
105
  isSystem: true,
82
- relationType: "many-to-one",
83
- relationCoModelSingularName: "user",
84
- relationCreateInverse: false,
85
- relationCascade: "restrict",
86
- relationModelModuleName: "solid-core"
106
+ columnName: "created_by_id",
87
107
  },
88
108
  {
89
109
  name: "updatedBy",
90
110
  displayName: "Updated By",
91
- type: "relation",
92
- ormType: "integer",
111
+ type: "int",
93
112
  isSystem: true,
94
- relationType: "many-to-one",
95
- relationCoModelSingularName: "user",
96
- relationCreateInverse: false,
97
- relationCascade: "restrict",
98
- relationModelModuleName: "solid-core"
99
- },
100
- ]
113
+ columnName: "updated_by_id",
114
+ }
115
+ ];
116
+ }
101
117
 
102
- // Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly
103
- const commonEntityKeys = this.registry.getCommonEntityKeys();
104
- const systemFieldNames = systemFieldsMetadata.map(field => field.name);
105
- const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));
106
- if (missingKeys.length > 0) {
107
- this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);
118
+ private getSystemFieldsMetadataMappingForLegacyTable(withId: boolean=true) {
119
+ const systemFieldsMetadata = this.getSystemFieldsMetadataMapping();
120
+ if (!withId) {
121
+ // Remove the id field metadata
122
+ const index = systemFieldsMetadata.findIndex(field => field.name === 'id');
123
+ if (index !== -1) {
124
+ systemFieldsMetadata.splice(index, 1);
125
+ }
108
126
  }
127
+
128
+ // For legacy table, system fields, remove the ormType atribute from the metadata
129
+ // systemFieldsMetadata.forEach(field => {
130
+ // delete field.ormType;
131
+ // });
132
+
133
+ // Except for createdBy and updatedBy fields, for which we need to keep the columnName as created_by_id and updated_by_id respectively,
134
+ // we need to add a columnName attribute with legacy prefix concatenated with the kebab cased field name of the system field
135
+ systemFieldsMetadata.forEach(field => {
136
+ if (field.name === 'createdBy' || field.name === 'updatedBy') {
137
+ field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}_id`;
138
+ } else {
139
+ field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}`;
140
+ }
141
+ });
109
142
  return systemFieldsMetadata;
110
143
  }
111
144
 
@@ -57,4 +57,21 @@ export class ModuleMetadataHelperService {
57
57
  }
58
58
  return filePath;
59
59
  }
60
- }
60
+ async getModuleMetadataFolderPath(moduleName: string): Promise<string> {
61
+ if (!moduleName) {
62
+ return '';
63
+ }
64
+
65
+ const dashModuleName = dasherize(moduleName);
66
+
67
+ const folderPath = path.resolve(
68
+ process.cwd(),
69
+ 'module-metadata',
70
+ dashModuleName,
71
+ );
72
+
73
+ const exists = await this.fileService.pathExists(folderPath);
74
+ return exists ? folderPath : '';
75
+ }
76
+
77
+ }
@@ -1,6 +1,8 @@
1
+ import { Logger } from '@nestjs/common';
1
2
  import * as fs from 'fs'; // Use the Promise-based version of fs for async/await
2
3
  import * as path from 'path'; // To handle file paths
3
4
 
5
+ const logger = new Logger('module.helper');
4
6
 
5
7
  export const getDynamicModuleNames = (): string[] => {
6
8
  const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];
@@ -21,6 +23,7 @@ export const getDynamicModuleNames = (): string[] => {
21
23
 
22
24
  if (!isValidDirectory) return false;
23
25
 
26
+ // return true
24
27
  const fullPath = path.join(srcPath, dirent.name);
25
28
  const files = fs.readdirSync(fullPath);
26
29
  // skip if empty directory
@@ -28,7 +31,40 @@ export const getDynamicModuleNames = (): string[] => {
28
31
  })
29
32
  .map(dirent => dirent.name);
30
33
 
31
- console.log(`Enabled dynamic modules:`, enabledModules);
34
+ // logger.debug(`Enabled dynamic modules:`, enabledModules);
35
+ return enabledModules;
36
+ }
37
+
38
+ export const getDynamicModuleNamesBasedOnMetadata = (): string[] => {
39
+ const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];
40
+
41
+ // Find a path that is ../${srcPath}/module-metadata save it in a variable.
42
+ // const srcPath = path.join(process.cwd(), 'src');
43
+ const moduleMetadataPath = path.join(process.cwd(), 'module-metadata');
44
+ const coreModuleNames = getCoreModuleNames();
45
+ const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];
46
+
47
+ // if module-metadata path does not exist, return empty array
48
+ if (!fs.existsSync(moduleMetadataPath)) {
49
+ logger.warn(`Module metadata path does not exist: ${moduleMetadataPath}`);
50
+ return [];
51
+ }
52
+
53
+ const moduleMetadataDirectories = fs.readdirSync(moduleMetadataPath, { withFileTypes: true });
54
+ const enabledModules = moduleMetadataDirectories
55
+ .filter(dirent => {
56
+ const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);
57
+
58
+ if (!isValidDirectory) return false;
59
+
60
+ const fullPath = path.join(moduleMetadataPath, dirent.name, `${dirent.name}-metadata.json`);
61
+
62
+ const stats = fs.statSync(fullPath, { throwIfNoEntry: false });
63
+ return !!stats && stats.isFile();
64
+ })
65
+ .map(dirent => dirent.name);
66
+
67
+ // logger.debug(`Enabled dynamic modules basis src:`, enabledModules);
32
68
  return enabledModules;
33
69
  }
34
70
 
@@ -1,24 +1,29 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
- import { CommandService } from './command.service';
3
2
  import { snakeCase } from "lodash";
4
- import { CommonEntity } from 'src/entities/common.entity';
3
+ import { FieldMetadata } from 'src/entities/field-metadata.entity';
4
+ import { CommandService } from './command.service';
5
5
  import { SolidRegistry } from './solid-registry';
6
6
 
7
7
  export const ADD_MODULE_COMMAND = 'add-module';
8
8
  export type GenerateModuleOptions = {
9
9
  module: string;
10
10
  };
11
- type FieldOptions = {
11
+ type ModelGenerationOptions = Omit<ModelAndFieldGenerationOptions, 'fields'>;
12
+
13
+ type ModelAndFieldGenerationOptions = {
12
14
  module: string;
13
15
  model: string;
14
16
  moduleDisplayName: string;
15
17
  table?: string;
16
18
  dataSource: string;
17
- fields: any[]; //FIXME This type can be improved
18
19
  modelEnableSoftDelete?: boolean;
19
20
  parentModel?: string;
20
21
  parentModule?: string;
21
22
  draftPublishWorkflowEnabled?: boolean;
23
+ isLegacyTable?: boolean;
24
+ isLegacyTableWithId?: boolean;
25
+ dataSourceType?: string;
26
+ fields: FieldMetadata[]; //FIXME This type can be improved
22
27
  };
23
28
  export const REMOVE_FIELDS_COMMAND = 'remove-fields';
24
29
  export const REFRESH_MODEL_COMMAND = 'refresh-model';
@@ -32,7 +37,7 @@ export class SchematicService {
32
37
 
33
38
  async executeSchematicCommand(
34
39
  command: string,
35
- options: GenerateModuleOptions | FieldOptions,
40
+ options: GenerateModuleOptions | ModelAndFieldGenerationOptions,
36
41
  debug = false,
37
42
  ): Promise<string> {
38
43
  return await this.commandService.executeCommand(
@@ -42,7 +47,7 @@ export class SchematicService {
42
47
 
43
48
  private generateSchematicCommand(
44
49
  command: string,
45
- options: GenerateModuleOptions | FieldOptions,
50
+ options: GenerateModuleOptions | ModelAndFieldGenerationOptions,
46
51
  debug: boolean,
47
52
  ): string {
48
53
  const baseCommand = `schematics ${this.SCHEMATIC_PROJECT}:${command} --debug=${debug}`;
@@ -50,55 +55,76 @@ export class SchematicService {
50
55
  command === REMOVE_FIELDS_COMMAND ||
51
56
  command === REFRESH_MODEL_COMMAND
52
57
  ) {
53
- const fieldOptions = options as FieldOptions;
54
- let modelCommand = `${baseCommand} --module=${fieldOptions.module} --model=${fieldOptions.model}`;
55
- if (fieldOptions.moduleDisplayName) {
56
- modelCommand += ` --module-display-name=${snakeCase(fieldOptions.moduleDisplayName)}`;
57
- }
58
-
59
- if (fieldOptions.table) {
60
- modelCommand += ` --table=${fieldOptions.table}`;
61
- }
62
-
63
- if (fieldOptions.dataSource) {
64
- modelCommand += ` --data-source=${fieldOptions.dataSource}`;
65
- }
66
-
67
- if (fieldOptions.modelEnableSoftDelete) {
68
- modelCommand += ` --model-enable-soft-delete=${fieldOptions.modelEnableSoftDelete}`;
69
- }
70
-
71
- if (fieldOptions.parentModel) {
72
- modelCommand += ` --parent-model=${fieldOptions.parentModel}`;
73
- }
74
- if (fieldOptions.parentModule) {
75
- modelCommand += ` --parent-module=${fieldOptions.parentModule}`;
76
- }
77
-
78
- if (fieldOptions.draftPublishWorkflowEnabled) {
79
- modelCommand += ` --draft-publish-workflow-enabled=${fieldOptions.draftPublishWorkflowEnabled}`;
80
- }
81
-
82
- let fieldCommand = fieldOptions.fields
83
- .filter((field) => {
84
- return !this.solidRegistry.getCommonEntityKeys().includes(field.name);
85
- })
86
- .map((field) => {
87
- return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
88
- })
89
- .join(' ');
58
+ const {fields, ...modelSpecificOptions} = options as ModelAndFieldGenerationOptions;
59
+ const modelCommand = this.buildModelGenerationCommand(baseCommand, modelSpecificOptions);
60
+ const fieldCommand = this.buildFieldGenerationCommand(fields);
90
61
  const schematicCommand = modelCommand + ' ' + fieldCommand;
91
- // console.log('schematicCommand', schematicCommand);
62
+ this.logger.debug('schematicCommand', schematicCommand);
92
63
  return schematicCommand;
93
64
  } else if (command === ADD_MODULE_COMMAND) {
94
65
  const moduleOptions = options as GenerateModuleOptions;
95
- // console.log('moduleOptions', moduleOptions);
96
66
  const schematicCommand = ` ${baseCommand} --module=${moduleOptions.module}`;
97
- // console.log('schematicCommand', schematicCommand);
98
67
  this.logger.debug('schematicCommand', schematicCommand);
99
68
  return schematicCommand;
100
69
  } else {
101
70
  throw new Error('Schematic command not supported.');
102
71
  }
103
72
  }
73
+
74
+ private buildFieldGenerationCommand(fields: FieldMetadata[]) {
75
+ return fields
76
+ .filter((field) => {
77
+ return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);
78
+ })
79
+ .map((field) => {
80
+ return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
81
+ })
82
+ .join(' ');
83
+ }
84
+
85
+ private buildModelGenerationCommand(baseCommand: string, modelSpecificOptions: ModelGenerationOptions): string {
86
+ let modelCommand = `${baseCommand} --module=${modelSpecificOptions.module} --model=${modelSpecificOptions.model}`;
87
+
88
+ // Make below options code generate i.e if option exists then add to command with proper casing
89
+ if (modelSpecificOptions.moduleDisplayName) {
90
+ modelCommand += ` --module-display-name=${snakeCase(modelSpecificOptions.moduleDisplayName)}`;
91
+ }
92
+
93
+ if (modelSpecificOptions.table) {
94
+ modelCommand += ` --table=${modelSpecificOptions.table}`;
95
+ }
96
+
97
+ if (modelSpecificOptions.dataSource) {
98
+ modelCommand += ` --data-source=${modelSpecificOptions.dataSource}`;
99
+ }
100
+
101
+ if (modelSpecificOptions.modelEnableSoftDelete) {
102
+ modelCommand += ` --model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`;
103
+ }
104
+
105
+ if (modelSpecificOptions.parentModel) {
106
+ modelCommand += ` --parent-model=${modelSpecificOptions.parentModel}`;
107
+ }
108
+ if (modelSpecificOptions.parentModule) {
109
+ modelCommand += ` --parent-module=${modelSpecificOptions.parentModule}`;
110
+ }
111
+
112
+ if (modelSpecificOptions.draftPublishWorkflowEnabled) {
113
+ modelCommand += ` --draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`;
114
+ }
115
+
116
+ if (modelSpecificOptions.isLegacyTable) {
117
+ modelCommand += ` --is-legacy-table=${modelSpecificOptions.isLegacyTable}`;
118
+ }
119
+
120
+ if (modelSpecificOptions.isLegacyTableWithId) {
121
+ modelCommand += ` --is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`;
122
+ }
123
+
124
+ if (modelSpecificOptions.dataSourceType) {
125
+ modelCommand += ` --data-source-type=${modelSpecificOptions.dataSourceType}`;
126
+ }
127
+
128
+ return modelCommand;
129
+ }
104
130
  }
@@ -5,7 +5,11 @@ import { CommonEntity } from 'src/entities/common.entity';
5
5
  import { Locale } from 'src/entities/locale.entity';
6
6
  import { SecurityRule } from 'src/entities/security-rule.entity';
7
7
  import { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';
8
- import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext } from "../interfaces";
8
+ import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from "../interfaces";
9
+ import { DatasourceType } from 'src/dtos/create-model-metadata.dto';
10
+ import { ObjectLiteral } from 'typeorm';
11
+ import { ColumnMetadata } from 'typeorm/metadata/ColumnMetadata';
12
+ import { RelationMetadata } from 'typeorm/metadata/RelationMetadata';
9
13
 
10
14
  type ControllerMetadata = {
11
15
  name: string;
@@ -38,6 +42,16 @@ export enum RESERVED_SOLID_KEYWORDS {
38
42
  locale = "locale"
39
43
  }
40
44
 
45
+ export interface TypeOrmEventContext {
46
+ eventType?: string;
47
+ entity?: ObjectLiteral | undefined;
48
+ databaseEntity?: any;
49
+ entityId?: any;
50
+ metadataName?: string;
51
+ updatedColumns?: string[];
52
+ updatedRelations?: string[];
53
+ }
54
+
41
55
  export interface ComputedFieldMetadata<TContext = any> {
42
56
  moduleName: string; // Name of the module where the computed field is defined
43
57
  modelName: string; // Name of the model where the computed field is defined
@@ -48,6 +62,7 @@ export interface ComputedFieldMetadata<TContext = any> {
48
62
  computedFieldValueProviderName: string; // Name of the provider that computes the field value
49
63
  // Example: '{"contextKey": "contextValue"}'
50
64
  computedFieldValueProviderCtxt: TContext; // Context for the computed field value
65
+ eventContext: TypeOrmEventContext;
51
66
  }
52
67
 
53
68
  @Injectable()
@@ -247,6 +262,17 @@ export class SolidRegistry {
247
262
  return Array.from(this.solidDatabaseModules);
248
263
  }
249
264
 
265
+ getDefaultSolidDatabaseModule(): ISolidDatabaseModule {
266
+ const solidDatabaseModulesAsArray = Array.from(this.solidDatabaseModules);
267
+ for (let i = 0; i < solidDatabaseModulesAsArray.length; i++) {
268
+ const solidDatabaseModule = solidDatabaseModulesAsArray[i];
269
+ const solidDatabaseModuleInstance: ISolidDatabaseModule = solidDatabaseModule.instance;
270
+ if (solidDatabaseModuleInstance.name() === 'default') {
271
+ return solidDatabaseModuleInstance;
272
+ }
273
+ }
274
+ }
275
+
250
276
  getModules(): Array<InstanceWrapper> {
251
277
  return Array.from(this.modules);
252
278
  }
@@ -288,7 +314,7 @@ export class SolidRegistry {
288
314
  });
289
315
  }
290
316
 
291
- getCommonEntityKeys(): (keyof CommonEntity)[] {
317
+ getCommonEntityKeys(): (keyof CommonEntity | 'createdBy' | 'updatedBy')[] {
292
318
  return ['id', 'createdAt', 'updatedAt', 'deletedAt', 'createdBy', 'updatedBy', 'deletedTracker', 'localeName', 'defaultEntityLocaleId', 'publishedAt'];
293
319
  // return Reflect.getMetadataKeys(CommonEntity.prototype) as (keyof CommonEntity)[];
294
320
  }
@@ -0,0 +1,26 @@
1
+ import { ColumnOptions } from "typeorm";
2
+ import { DatasourceType } from "src/dtos/create-model-metadata.dto";
3
+
4
+ const LONG_TEXT_MAP: Record<DatasourceType, ColumnOptions> = {
5
+ [DatasourceType.postgres]: { type: "text" },
6
+ [DatasourceType.mssql]: { type: "nvarchar", length: "max" },
7
+ [DatasourceType.mysql]: { type: "longtext" },
8
+ [DatasourceType.mariadb]: { type: "longtext" },
9
+ [DatasourceType.oracle]: { type: "clob" },
10
+ };
11
+
12
+ const solidCoreDbType: DatasourceType =
13
+ Object.values(DatasourceType).includes(process.env.SOLID_CORE_DB_TYPE as DatasourceType)
14
+ ? (process.env.SOLID_CORE_DB_TYPE as DatasourceType)
15
+ : DatasourceType.postgres;
16
+
17
+ export function getColumnType(solidType: string): ColumnOptions {
18
+ switch (solidType) {
19
+ case "longText":
20
+ case "richText":
21
+ return LONG_TEXT_MAP[solidCoreDbType];
22
+
23
+ default:
24
+ return {};
25
+ }
26
+ }
package/src/index.ts CHANGED
@@ -26,6 +26,7 @@ export * from './decorators/mail-provider.decorator'
26
26
  export * from './decorators/security-rule-config-provider.decorator'
27
27
 
28
28
  export * from './dtos/post-chatter-message.dto'
29
+ export * from './dtos/security-rule-config.dto'
29
30
  export * from './dtos/basic-filters.dto'
30
31
  export * from './dtos/solid-request-context.dto'
31
32
  export * from './dtos/change-password.dto'
@@ -99,6 +100,8 @@ export * from './dtos/update-user-activity-history.dto'
99
100
 
100
101
  export * from './entities/action-metadata.entity'
101
102
  export * from './entities/common.entity'
103
+ export * from './entities/legacy-common.entity'
104
+ export * from './entities/legacy-common-with-id.entity'
102
105
  export * from './entities/email-attachment.entity'
103
106
  export * from './entities/email-template.entity'
104
107
  export * from './entities/field-metadata.entity'
@@ -134,6 +137,7 @@ export * from './entities/dashboard-variable.entity'
134
137
  export * from './entities/dashboard-question.entity'
135
138
  export * from './entities/dashboard-question-sql-dataset-config.entity'
136
139
  export * from './entities/ai-interaction.entity'
140
+ export * from './entities/model-sequence.entity'
137
141
 
138
142
  export * from './enums/auth-type.enum'
139
143
  export * from './decorators/disallow-in-production.decorator'
@@ -205,7 +209,7 @@ export * from './listeners/user-registration.listener'
205
209
  export * from './passport-strategies/google-oauth.strategy'
206
210
  export * from './passport-strategies/local.strategy'
207
211
 
208
- export * from './providers/list-of-values-selection-providers.service'
212
+ export * from './services/selection-providers/list-of-values-selection-providers.service'
209
213
 
210
214
  // seed-data
211
215
  export * from './seeders/email-template-seeder.service'
@@ -296,6 +300,8 @@ export * from './subscribers/audit.subscriber'
296
300
  export * from './transformers/array-transformer'
297
301
  export * from './transformers/boolean-transformer'
298
302
  export * from './transformers/integer-transformer'
303
+ export { default as datetimeTransformer } from './transformers/datetime-transformer'
304
+ export * from './transformers/typeorm/local-date-time-transformer'
299
305
 
300
306
  export * from './validators/is-parsable-int'
301
307
 
@@ -304,6 +310,5 @@ export * from './interfaces'
304
310
  export * from './solid-core.module'
305
311
 
306
312
  export * from './winston.logger'
307
- export { default as datetimeTransformer } from './transformers/datetime-transformer'
308
313
 
309
314
  export { ERROR_MESSAGES } from './constants/error-messages'
package/src/interfaces.ts CHANGED
@@ -64,7 +64,10 @@ export interface CodeGenerationOptions {
64
64
  modelId?: number;
65
65
  modelUserKey?: string;
66
66
  fieldIdsForRemoval?: number[];
67
+ fieldNamesForRemoval?: string[];
67
68
  dryRun?: boolean;
69
+ fieldIdsForRefresh?: number[];
70
+ fieldNamesForRefresh?: string[];
68
71
  }
69
72
 
70
73
  export interface TriggerMcpClientOptions {
@@ -1,4 +1,4 @@
1
- import { Injectable } from "@nestjs/common";
1
+ import { Injectable, Logger } from "@nestjs/common";
2
2
  import { SolidRegistry } from "src/helpers/solid-registry";
3
3
  import { IEntityPostComputeFieldProvider, QueuesModuleOptions } from "src/interfaces";
4
4
  import { QueueMessage } from "src/interfaces/mq";
@@ -11,6 +11,7 @@ import computedFieldEvaluationQueueOptions from "./computed-field-evaluation-que
11
11
 
12
12
  @Injectable()
13
13
  export class ComputedFieldEvaluationSubscriberRabbitmq extends RabbitMqSubscriber<ComputedFieldEvaluationPayload> {
14
+ private readonly _logger = new Logger(ComputedFieldEvaluationSubscriberRabbitmq.name);
14
15
  constructor(
15
16
  readonly mqMessageService: MqMessageService,
16
17
  readonly mqMessageQueueService: MqMessageQueueService,
@@ -30,9 +31,19 @@ export class ComputedFieldEvaluationSubscriberRabbitmq extends RabbitMqSubscribe
30
31
  // It will then call the corresponding provider computeAndSave method to perform the evaluation
31
32
  async subscribe(message: QueueMessage<ComputedFieldEvaluationPayload>) {
32
33
  const { databaseEntity, ...computedFieldMetadata } = message.payload;
33
- const provider = this.solidRegistry.getComputedFieldProvider(computedFieldMetadata.computedFieldValueProviderName);
34
+ const { computedFieldValueProviderName } = computedFieldMetadata;
35
+ const provider = this.solidRegistry.getComputedFieldProvider(computedFieldValueProviderName);
34
36
  // Get the instance of the provider and assert it is of type IEntityComputedFieldProvider
35
37
  const providerInstance = provider.instance as IEntityPostComputeFieldProvider<any, any>; // IEntityComputedFieldProvider
36
- await providerInstance.postComputeAndSaveValue(databaseEntity, computedFieldMetadata); //FIXME There should some way to check/assert if the provider actually has a postComputeAndSaveValue
38
+ if (typeof providerInstance.postComputeAndSaveValue !== 'function') {
39
+ this._logger.warn(`Provider "${computedFieldValueProviderName}" does not implement postComputeAndSaveValue; skipping post-compute.`);
40
+ return;
41
+ }
42
+ await providerInstance.postComputeAndSaveValue(databaseEntity, {
43
+ ...computedFieldMetadata,
44
+ computedFieldValueProviderCtxt: {
45
+ ...(computedFieldMetadata.computedFieldValueProviderCtxt || {}),
46
+ },
47
+ }); //FIXME There should some way to check/assert if the provider actually has a postComputeAndSaveValue
37
48
  }
38
- }
49
+ }