@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
@@ -144,7 +144,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
144
144
 
145
145
  const existingControllerAndTheirMethods = this.solidRegistry.getControllers();
146
146
 
147
-
147
+
148
148
 
149
149
  // Build markdown sections using template interpolation
150
150
  const modulesSection = (existingModules ?? [])
@@ -170,7 +170,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
170
170
  `- name: ${d.name}`,
171
171
  `- description: ${d.description ?? ""}`,
172
172
  ].join('\n'))
173
- .join('\n\n');
173
+ .join('\n\n');
174
174
 
175
175
  const computationProvidersSection = (existingComputationProviders ?? [])
176
176
  .map(m => [
@@ -183,7 +183,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
183
183
  const controllersAndTheirMethods = (existingControllerAndTheirMethods ?? [])
184
184
  .map(m => [
185
185
  `### ${m.name}`,
186
- `- methods: ${m.methods.length ? m.methods.map(m => `- ${m}`).join('\n'): '- No methods found'}`,
186
+ `- methods: ${m.methods.length ? m.methods.map(m => `- ${m}`).join('\n') : '- No methods found'}`,
187
187
  ].join('\n'))
188
188
  .join('\n\n');
189
189
 
@@ -224,11 +224,10 @@ Use the below list of computed field providers to infer which provider the user
224
224
  ${computationProvidersSection}
225
225
  `.trim();
226
226
 
227
+ // ## LIST OF EXISTING CONTROLLERS AND THEIR METHODS
228
+ // Use the below list of controllers and their methods to infer whether the api call being made to a particular controller exists or not.
227
229
 
228
- // ## LIST OF EXISTING CONTROLLERS AND THEIR METHODS
229
- // Use the below list of controllers and their methods to infer whether the api call being made to a particular controller exists or not.
230
-
231
- // ${controllersAndTheirMethods}
230
+ // ${controllersAndTheirMethods}
232
231
 
233
232
  const aiResponse = await this.aiInteractionService.runMcpPrompt(finalPrompt);
234
233
  this.triggerMcpClientSubscriberLogger.log(`aiResponse: `);
@@ -247,7 +246,7 @@ ${computationProvidersSection}
247
246
  // role: 'gen-ai',
248
247
  // message: '-',
249
248
  // contentType: aiResponse.content_type,
250
- // errorMessage: errorsStr,
249
+ // errorMessage: `${errorsStr}\n\n${errorTrace}`,
251
250
  // modelUsed: aiResponse.model,
252
251
  // responseTimeMs: aiResponse.duration_ms,
253
252
  // metadata: JSON.stringify(aiResponse, null, 2),
@@ -257,7 +256,7 @@ ${computationProvidersSection}
257
256
 
258
257
  // TODO: Update the previously created genAiInteraction record with the respective error fields and save to DB
259
258
  await this.aiInteractionService.update(genAiInteraction.id, {
260
- // contentType: aiResponse.content_type,
259
+ contentType: aiResponse.content_type,
261
260
  errorMessage: `${errorsStr}\n\n${errorTrace}`,
262
261
  modelUsed: aiResponse.model,
263
262
  responseTimeMs: aiResponse.duration_ms,
@@ -271,6 +270,10 @@ ${computationProvidersSection}
271
270
  else {
272
271
  let nestedResponse = this.cleanNestedResponse(aiResponse);
273
272
 
273
+ // TODO: Update the previously created genAiInteraction record with the respective success fields and save to DB
274
+ const errorsStr = nestedResponse?.status == "error" && nestedResponse?.errors.join('\n ');
275
+ const errorTrace = nestedResponse?.status == "error" && nestedResponse?.error_trace?.join('\n');
276
+
274
277
  // const genAiInteraction = await this.aiInteractionService.create({
275
278
  // userId: aiInteraction.user.id,
276
279
  // threadId: aiInteraction.threadId,
@@ -278,7 +281,7 @@ ${computationProvidersSection}
278
281
  // role: 'gen-ai',
279
282
  // message: nestedResponse,
280
283
  // contentType: aiResponse.content_type,
281
- // errorMessage: '',
284
+ // errorMessage: `${errorsStr}\n\n${errorTrace}`,
282
285
  // modelUsed: aiResponse.model,
283
286
  // responseTimeMs: aiResponse.duration_ms,
284
287
  // metadata: JSON.stringify(aiResponse, null, 2),
@@ -286,21 +289,14 @@ ${computationProvidersSection}
286
289
  // status: aiResponse.success ? 'succeeded' : 'failed'
287
290
  // });
288
291
 
289
- // TODO: Update the previously created genAiInteraction record with the respective success fields and save to DB
290
- const errorsStr = nestedResponse?.status == "error" && nestedResponse?.errors.join('\n ');
291
- // const errorTrace = nestedResponse?.status == "error" && nestedResponse?.error_trace?.join('\n');
292
-
293
-
294
292
  await this.aiInteractionService.update(genAiInteraction.id, {
295
- errorMessage: nestedResponse.status == "error" ? `${errorsStr}` : "",
296
- // errorMessage:"",
297
- // contentType: aiResponse.content_type,
298
- // message: nestedResponse,
293
+ errorMessage: nestedResponse.status == "error" ? `${errorsStr}\n\n${errorTrace}` : "",
294
+ contentType: aiResponse.content_type,
295
+ message: JSON.stringify(nestedResponse),
299
296
  modelUsed: aiResponse.model,
300
297
  responseTimeMs: aiResponse.duration_ms,
298
+ metadata: JSON.stringify(aiResponse, null, 2),
301
299
  isApplied: aiInteraction.isApplied,
302
-
303
- // status: aiResponse.success ? 'succeeded' : 'failed'
304
300
  status: aiResponse.success && nestedResponse.status == "success" ? 'succeeded' : 'failed'
305
301
  }, [], true);
306
302
 
@@ -1,7 +1,7 @@
1
- import { Injectable } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable } from '@nestjs/common';
2
2
  import { Media } from 'src/entities/media.entity';
3
3
  import { RequestContextService } from 'src/services/request-context.service';
4
- import { DataSource } from 'typeorm';
4
+ import { DataSource, In } from 'typeorm';
5
5
  import { FieldMetadataRepository } from './field-metadata.repository';
6
6
  import { MediaStorageProviderMetadataRepository } from './media-storage-provider-metadata.repository';
7
7
  import { ModelMetadataRepository } from './model-metadata.repository';
@@ -21,6 +21,7 @@ export class MediaRepository extends SolidBaseRepository<Media> {
21
21
  // @InjectRepository(MediaStorageProviderMetadata)
22
22
  // private readonly mediaStorageProviderMetadataRepo: Repository<MediaStorageProviderMetadata>,
23
23
  private readonly fieldMetadataRepo: FieldMetadataRepository,
24
+ @Inject(forwardRef(() => ModelMetadataRepository))
24
25
  private readonly modelMetadataRepo: ModelMetadataRepository,
25
26
  private readonly mediaStorageProviderMetadataRepo: MediaStorageProviderMetadataRepository,
26
27
  ) {
@@ -0,0 +1,97 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ import { ModelSequence } from 'src/entities/model-sequence.entity';
3
+ import { RequestContextService } from 'src/services/request-context.service';
4
+ import { DataSource } from 'typeorm';
5
+ import { SecurityRuleRepository } from './security-rule.repository';
6
+ import { SolidBaseRepository } from './solid-base.repository';
7
+ import { CreateModelSequenceDto } from 'src/dtos/create-model-sequence.dto';
8
+ import { ModuleMetadata } from 'src/entities/module-metadata.entity';
9
+ import { ModelMetadata } from 'src/entities/model-metadata.entity';
10
+ import { FieldMetadata } from 'src/entities/field-metadata.entity';
11
+
12
+ @Injectable()
13
+ export class ModelSequenceRepository extends SolidBaseRepository<ModelSequence> {
14
+ constructor(
15
+ readonly dataSource: DataSource,
16
+ readonly requestContextService: RequestContextService,
17
+ readonly securityRuleRepository: SecurityRuleRepository,
18
+ ) {
19
+ super(ModelSequence, dataSource, requestContextService, securityRuleRepository);
20
+ }
21
+
22
+ async upsertWithDto(createDto: CreateModelSequenceDto) {
23
+ // Populate the module from moduleId or moduleUserKey
24
+ const moduleRepository = this.dataSource.getRepository(ModuleMetadata);
25
+ if (createDto.moduleId) {
26
+ const module = await moduleRepository.findOne({
27
+ where: {
28
+ id: createDto.moduleId,
29
+ },
30
+ });
31
+ createDto['module'] = module;
32
+ }
33
+
34
+ if (createDto.moduleUserKey) {
35
+ const module = await moduleRepository.findOne({
36
+ where: {
37
+ name: createDto.moduleUserKey,
38
+ },
39
+ });
40
+ createDto['module'] = module;
41
+ }
42
+
43
+ // Populate the model from modelId or modelUserKey
44
+ const modelRepository = this.dataSource.getRepository(ModelMetadata);
45
+ if (createDto.modelId) {
46
+ const model = await modelRepository.findOne({
47
+ where: {
48
+ id: createDto.modelId,
49
+ },
50
+ });
51
+ createDto['model'] = model;
52
+ }
53
+ if (createDto.modelUserKey) {
54
+ const model = await modelRepository.findOne({
55
+ where: {
56
+ singularName: createDto.modelUserKey,
57
+ },
58
+ });
59
+ createDto['model'] = model;
60
+ }
61
+
62
+ // Populate the field from fieldId or fieldUserKey
63
+ const fieldRepository = this.dataSource.getRepository(FieldMetadata);
64
+ if (createDto.fieldId) {
65
+ const field = await fieldRepository.findOne({
66
+ where: {
67
+ id: createDto.fieldId,
68
+ },
69
+ });
70
+ createDto['field'] = field;
71
+ }
72
+ if (createDto.fieldUserKey) {
73
+ const field = await fieldRepository.findOne({
74
+ where: {
75
+ name: createDto.fieldUserKey,
76
+ },
77
+ });
78
+ createDto['field'] = field;
79
+ }
80
+
81
+ // First check if sequence already exists using name
82
+ const existingModelSequence = await this.findOne({
83
+ where: {
84
+ sequenceName: createDto.sequenceName,
85
+ },
86
+ });
87
+
88
+ if (existingModelSequence) {
89
+ const updatedModelSequence = this.merge(existingModelSequence, createDto);
90
+ return this.save(updatedModelSequence);
91
+ }
92
+ else {
93
+ const modelSequence = this.create(createDto);
94
+ return this.save(modelSequence);
95
+ }
96
+ }
97
+ }
@@ -1,18 +1,13 @@
1
- import { Inject, Injectable, Logger } from '@nestjs/common';
1
+ import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
4
 
5
- import { ConfigType } from '@nestjs/config';
6
- import { InjectRepository } from '@nestjs/typeorm';
7
- import commonConfig from 'src/config/common.config';
8
- import { iamConfig } from 'src/config/iam.config';
9
5
  import { CreateDashboardDto } from 'src/dtos/create-dashboard.dto';
10
6
  import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';
11
7
  import { CreateListOfValuesDto } from 'src/dtos/create-list-of-values.dto';
12
8
  import { CreateSecurityRuleDto } from 'src/dtos/create-security-rule.dto';
13
9
  import { CreateSettingDto } from 'src/dtos/create-setting.dto';
14
10
  import { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';
15
- import { Setting } from 'src/entities/setting.entity';
16
11
  import { DashboardRepository } from 'src/repository/dashboard.repository';
17
12
  import { SecurityRuleRepository } from 'src/repository/security-rule.repository';
18
13
  import { AuthenticationService } from 'src/services/authentication.service';
@@ -25,14 +20,12 @@ import { DataSource, In, Repository } from 'typeorm';
25
20
  import appBuilderConfig from '../config/app-builder.config';
26
21
  import { CreateModelMetadataDto } from '../dtos/create-model-metadata.dto';
27
22
  import { CreateModuleMetadataDto } from '../dtos/create-module-metadata.dto';
28
- import { PermissionMetadata } from '../entities/permission-metadata.entity';
29
- import { getDynamicModuleNames } from '../helpers/module.helper';
23
+ import { getDynamicModuleNames, getDynamicModuleNamesBasedOnMetadata } from '../helpers/module.helper';
30
24
  import { SolidRegistry } from '../helpers/solid-registry';
31
25
  import { ActionMetadataService } from '../services/action-metadata.service';
32
26
  import { FieldMetadataService } from '../services/field-metadata.service';
33
27
  import { MediaStorageProviderMetadataSeederService } from '../services/media-storage-provider-metadata-seeder.service';
34
28
  import { MediaStorageProviderMetadataService } from '../services/media-storage-provider-metadata.service';
35
- import { MenuItemMetadataService } from '../services/menu-item-metadata.service';
36
29
  import { ModelMetadataService } from '../services/model-metadata.service';
37
30
  import { ModuleMetadataService } from '../services/module-metadata.service';
38
31
  import { RoleMetadataService } from '../services/role-metadata.service';
@@ -42,12 +35,14 @@ import { SystemFieldsSeederService } from './system-fields-seeder.service';
42
35
  // import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
43
36
  import { ActionMetadata, MENU_ROLE_JOIN_TABLE_NAME, MENU_ROLE_JOIN_TABLE_NAME_MENU_COL, MENU_ROLE_JOIN_TABLE_NAME_ROLE_COL, MenuItemMetadata, ModuleMetadata, RoleMetadata } from 'src';
44
37
  import { ADMIN_ROLE_NAME, INTERNAL_ROLE_NAME, INTERNAL_ROLE_PERMISSIONS, PUBLIC_ROLE_NAME } from 'src/dtos/create-role-metadata.dto';
38
+ import { CreateSavedFiltersDto } from 'src/dtos/create-saved-filters.dto';
45
39
  import { CreateScheduledJobDto } from 'src/dtos/create-scheduled-job.dto';
46
- import { ScheduledJobRepository } from 'src/repository/scheduled-job.repository';
47
40
  import { PermissionMetadataRepository } from 'src/repository/permission-metadata.repository';
48
- import { SettingRepository } from 'src/repository/setting.repository';
49
- import { CreateSavedFiltersDto } from 'src/dtos/create-saved-filters.dto';
50
41
  import { SavedFiltersRepository } from 'src/repository/saved-filters.repository';
42
+ import { ScheduledJobRepository } from 'src/repository/scheduled-job.repository';
43
+ import { SettingRepository } from 'src/repository/setting.repository';
44
+ import { CreateModelSequenceDto } from 'src/dtos/create-model-sequence.dto';
45
+ import { ModelSequenceRepository } from 'src/repository/model-sequence.repository';
51
46
 
52
47
 
53
48
  @Injectable()
@@ -57,6 +52,7 @@ export class ModuleMetadataSeederService {
57
52
 
58
53
  constructor(
59
54
  private readonly moduleMetadataService: ModuleMetadataService,
55
+ @Inject(forwardRef(() => ModelMetadataService))
60
56
  private readonly modelMetadataService: ModelMetadataService,
61
57
  private readonly fieldMetadataService: FieldMetadataService,
62
58
  private readonly mediaStorageProviderMetadataService: MediaStorageProviderMetadataService,
@@ -64,7 +60,6 @@ export class ModuleMetadataSeederService {
64
60
  private readonly userService: UserService,
65
61
  private readonly authenticationService: AuthenticationService,
66
62
  private readonly solidActionService: ActionMetadataService,
67
- private readonly solidMenuItemService: MenuItemMetadataService,
68
63
  private readonly solidViewService: ViewMetadataService,
69
64
  private readonly mediaStorageProviderSeederService: MediaStorageProviderMetadataSeederService,
70
65
  private readonly emailTemplateService: EmailTemplateService,
@@ -74,11 +69,6 @@ export class ModuleMetadataSeederService {
74
69
  // private readonly permissionRepo: Repository<PermissionMetadata>,
75
70
  private readonly permissionRepo: PermissionMetadataRepository,
76
71
  private readonly solidRegistry: SolidRegistry,
77
- @Inject(appBuilderConfig.KEY)
78
- private readonly appBuilderConfiguration: ConfigType<typeof appBuilderConfig>,
79
- @Inject(iamConfig.KEY) private readonly iamConfiguration: ConfigType<typeof iamConfig>,
80
- @Inject(commonConfig.KEY)
81
- private readonly commonConfiguration: ConfigType<typeof commonConfig>,
82
72
  private readonly settingService: SettingService,
83
73
  // @InjectRepository(Setting, 'default')
84
74
  // readonly settingsRepo: Repository<Setting>,
@@ -87,22 +77,51 @@ export class ModuleMetadataSeederService {
87
77
  readonly systemFieldsSeederService: SystemFieldsSeederService,
88
78
  readonly dashboardRepo: DashboardRepository,
89
79
  readonly scheduledJobRepository: ScheduledJobRepository,
90
- readonly savedFiltersRepo : SavedFiltersRepository,
80
+ readonly savedFiltersRepo: SavedFiltersRepository,
91
81
  readonly dataSource: DataSource,
82
+ readonly modelSequenceRepo: ModelSequenceRepository,
92
83
  ) { }
93
84
 
94
- async seed() {
85
+ async seed(conf?: any) {
95
86
  // Global seeding steps i.e across all modules
96
87
  await this.seedGlobalMetadata();
97
88
 
89
+
98
90
  // Module specific seeding steps.
99
91
  // Get all the module metadata files which needs to be seeded.
100
92
  const seedDataFiles = this.seedDataFiles;
101
93
  this.logger.debug(`Seed data files are: ${seedDataFiles}`);
94
+
95
+ /** -------------------------------------------------------------
96
+ * Selective module seeding via:
97
+ * solid seed -c "{\"modulesToSeed\": [\"onboarding\", \"reports\"]}"
98
+ * -------------------------------------------------------------
99
+ */
100
+ let modulesToSeed: string[] | null = null;
101
+
102
+ if (conf && Array.isArray(conf.modulesToSeed)) {
103
+ modulesToSeed = conf.modulesToSeed;
104
+ this.logger.log(`Selective seeding enabled. Modules to seed: ${modulesToSeed.join(', ')}`);
105
+ } else {
106
+ this.logger.log(`No modulesToSeed provided. Seeding ALL modules.`);
107
+ }
108
+
109
+ // Filter modules if needed
110
+ const filteredSeedDataFiles = modulesToSeed
111
+ ? seedDataFiles.filter((file) =>
112
+ modulesToSeed.includes(file.moduleMetadata?.name)
113
+ )
114
+ : seedDataFiles;
115
+
116
+ if (filteredSeedDataFiles.length === 0) {
117
+ this.logger.warn(`No modules matched the provided modulesToSeed list.`);
118
+ return;
119
+ }
120
+
102
121
  // let usersDetail;
103
122
  // For each module metadata file, we will process the seeding steps one by one.
104
- for (let i = 0; i < seedDataFiles.length; i++) {
105
- const overallMetadata = seedDataFiles[i];
123
+ for (let i = 0; i < filteredSeedDataFiles.length; i++) {
124
+ const overallMetadata = filteredSeedDataFiles[i];
106
125
  const moduleMetadata: CreateModuleMetadataDto = overallMetadata.moduleMetadata;
107
126
  this.logger.log(`Seeding Metadata for Module: ${moduleMetadata.name}`);
108
127
 
@@ -162,10 +181,14 @@ export class ModuleMetadataSeederService {
162
181
  this.logger.log(`Seeding Scheduled Jobs`);
163
182
  await this.seedScheduledJobs(moduleMetadata, overallMetadata);
164
183
 
165
- // Saved Filters
166
- this.logger.log(`Seeding Saved Filters`);
167
- await this.seedSavedFilters(moduleMetadata, overallMetadata);
168
-
184
+ // Saved Filters
185
+ this.logger.log(`Seeding Saved Filters`);
186
+ await this.seedSavedFilters(moduleMetadata, overallMetadata);
187
+
188
+ // Model Sequences
189
+ this.logger.log(`Seeding Model Sequences`);
190
+ await this.seedModelSequences(overallMetadata);
191
+
169
192
  this.logger.debug(`[End] module seed data: ${overallMetadata}`);
170
193
  }
171
194
 
@@ -194,7 +217,7 @@ export class ModuleMetadataSeederService {
194
217
  await this.handleSeedSavedFilters(savedFilters);
195
218
  }
196
219
  this.logger.debug(`[End] Processing saved filters for ${moduleMetadata.name}`);
197
- }
220
+ }
198
221
 
199
222
  private async seedDashboards(moduleMetadata: CreateModuleMetadataDto, overallMetadata: any) {
200
223
  this.logger.debug(`[Start] Processing dashboards for ${moduleMetadata.name}`);
@@ -301,7 +324,8 @@ export class ModuleMetadataSeederService {
301
324
  private get seedDataFiles(): any[] {
302
325
  const typedSolidCoreMetadata = structuredClone(solidCoreMetadata);
303
326
  const seedDataFiles = [typedSolidCoreMetadata];
304
- const enabledModules = getDynamicModuleNames();
327
+ // const enabledModules = getDynamicModuleNames();
328
+ const enabledModules = getDynamicModuleNamesBasedOnMetadata();
305
329
  for (const enabledModule of enabledModules) {
306
330
  const enabledModuleSeedFile = `module-metadata/${enabledModule}/${enabledModule}-metadata.json`;
307
331
  const fullPath = path.join(process.cwd(), enabledModuleSeedFile);
@@ -325,6 +349,8 @@ export class ModuleMetadataSeederService {
325
349
 
326
350
  this.logger.log(`Seeding System Fields Metadata`);
327
351
  await this.seedDefaultSystemFields();
352
+
353
+ this.logger.debug(`Global metadata seeding completed`);
328
354
  }
329
355
 
330
356
  private async seedDefaultSystemFields() {
@@ -395,6 +421,13 @@ export class ModuleMetadataSeederService {
395
421
  this.logger.debug(`[End] Processing Media Storage Provider`);
396
422
  }
397
423
 
424
+ private async seedModelSequences(overallMetadata: any) {
425
+ this.logger.debug(`[Start] Processing model sequences`);
426
+ const modelSequences: CreateModelSequenceDto[] = overallMetadata.modelSequences;
427
+ await this.handleSeedModelSequences(modelSequences);
428
+ this.logger.debug(`[End] Processing model sequences`);
429
+ }
430
+
398
431
  // OK
399
432
  private async handleSeedEmailTemplates(emailTemplates: CreateEmailTemplateDto[], moduleName: string) {
400
433
  if (!emailTemplates) {
@@ -407,12 +440,41 @@ export class ModuleMetadataSeederService {
407
440
 
408
441
  // We need to load the actual template contents.
409
442
  if (moduleName === 'solid-core') {
410
- const modulePath = path.dirname(require.resolve('@solidstarters/solid-core'));
411
- const seedDataPath = path.join(modulePath, '../src/seeders/seed-data/email-templates');
412
- const filePath = path.join(seedDataPath, emailTemplate.body);
413
- // this.logger.log(`Seeding email template from solid-core at path: ${filePath}`);
443
+ let moduleRoot: string | null = null;
444
+
445
+ try {
446
+ // Always resolve package.json, never the module entry
447
+ moduleRoot = path.dirname(
448
+ require.resolve('@solidstarters/solid-core/package.json'),
449
+ );
450
+ } catch (err) {
451
+ this.logger.debug(
452
+ 'Could not resolve @solidstarters/solid-core from node_modules, assuming local execution',
453
+ );
454
+ }
455
+
456
+ const filePathInternal = 'src/seeders/seed-data/email-templates/';
457
+ let filePath: string;
458
+ // Case 1: solid-core installed as dependency
459
+ if (moduleRoot) {
460
+ filePath = path.join(
461
+ moduleRoot,
462
+ filePathInternal,
463
+ emailTemplate.body,
464
+ );
465
+ }
466
+ else {
467
+ // Case 2: running INSIDE solid-core repo
468
+ const localCoreRoot = process.cwd(); // or configurable root
469
+ filePath = path.join(
470
+ localCoreRoot,
471
+ filePathInternal,
472
+ emailTemplate.body,
473
+ );
474
+ }
475
+
414
476
  if (fs.existsSync(filePath)) {
415
- emailTemplate.body = fs.readFileSync(filePath, 'utf-8').toString();
477
+ emailTemplate.body = fs.readFileSync(filePath, 'utf-8');
416
478
  }
417
479
  }
418
480
  else {
@@ -444,12 +506,41 @@ export class ModuleMetadataSeederService {
444
506
 
445
507
  // We need to load the actual template contents.
446
508
  if (moduleName === 'solid-core') {
447
- const modulePath = path.dirname(require.resolve('@solidstarters/solid-core'));
448
- const seedDataPath = path.join(modulePath, '../src/seeders/seed-data/sms-templates');
449
- const filePath = path.join(seedDataPath, smsTemplate.body);
450
- // this.logger.log(`Seeding sms template from solid-core at path: ${filePath}`);
509
+ let moduleRoot: string | null = null;
510
+
511
+ try {
512
+ // Always resolve package.json, never the module entry
513
+ moduleRoot = path.dirname(
514
+ require.resolve('@solidstarters/solid-core/package.json'),
515
+ );
516
+ } catch (err) {
517
+ this.logger.debug(
518
+ 'Could not resolve @solidstarters/solid-core from node_modules, assuming local execution',
519
+ );
520
+ }
521
+
522
+ const filePathInternal = 'src/seeders/seed-data/sms-templates/';
523
+ let filePath: string;
524
+ // Case 1: solid-core installed as dependency
525
+ if (moduleRoot) {
526
+ filePath = path.join(
527
+ moduleRoot,
528
+ filePathInternal,
529
+ smsTemplate.body,
530
+ );
531
+ }
532
+ else {
533
+ // Case 2: running INSIDE solid-core repo
534
+ const localCoreRoot = process.cwd(); // or configurable root
535
+ filePath = path.join(
536
+ localCoreRoot,
537
+ filePathInternal,
538
+ smsTemplate.body,
539
+ );
540
+ }
541
+
451
542
  if (fs.existsSync(filePath)) {
452
- smsTemplate.body = fs.readFileSync(filePath, 'utf-8').toString();
543
+ smsTemplate.body = fs.readFileSync(filePath, 'utf-8');
453
544
  }
454
545
  }
455
546
  else {
@@ -469,7 +560,7 @@ export class ModuleMetadataSeederService {
469
560
  }
470
561
  }
471
562
 
472
- // Not OK
563
+ // Ok
473
564
  private async handleSeedMenus(menus: any) {
474
565
  if (!menus) {
475
566
  return;
@@ -481,22 +572,42 @@ export class ModuleMetadataSeederService {
481
572
  const actionRepo = trx.getRepository(ActionMetadata);
482
573
  const moduleRepo = trx.getRepository(ModuleMetadata);
483
574
 
484
- // 1) Upsert menus WITHOUT roles
575
+ // 1) Upsert menus WITHOUT roles (manual upsert)
485
576
  for (const m of menus) {
486
- const entity = menuRepo.create({
577
+ const action = m.actionUserKey
578
+ ? await actionRepo.findOne({ where: { name: m.actionUserKey }, select: ["id"] })
579
+ : null;
580
+
581
+ const module = m.moduleUserKey
582
+ ? await moduleRepo.findOne({ where: { name: m.moduleUserKey }, select: ["id"] })
583
+ : null;
584
+
585
+ const parentMenuItem = m.parentMenuItemUserKey
586
+ ? await menuRepo.findOne({ where: { name: m.parentMenuItemUserKey }, select: ["id"] })
587
+ : null;
588
+
589
+ // Check if a menu with this name already exists
590
+ const existing = await menuRepo.findOne({
591
+ where: { name: m.name },
592
+ select: ["id"],
593
+ });
594
+
595
+ // Build the entity data (without id)
596
+ const base = {
487
597
  name: m.name,
488
598
  displayName: m.displayName,
489
- action: m.actionUserKey
490
- ? await actionRepo.findOne({ where: { name: m.actionUserKey }, select: ["id"] })
491
- : null,
492
- module: m.moduleUserKey
493
- ? await moduleRepo.findOne({ where: { name: m.moduleUserKey }, select: ["id"] })
494
- : null,
495
- parentMenuItem: m.parentMenuItemUserKey
496
- ? await menuRepo.findOne({ where: { name: m.parentMenuItemUserKey }, select: ["id"] })
497
- : null,
498
- });
499
- await menuRepo.upsert(entity, ["name"]); // or ["userKey"]
599
+ action,
600
+ module,
601
+ parentMenuItem,
602
+ sequenceNumber: m.sequenceNumber
603
+ };
604
+
605
+ // If existing, set its id so save() will perform an update, otherwise insert
606
+ const entity = menuRepo.create(
607
+ existing ? { id: existing.id, ...base } : base,
608
+ );
609
+
610
+ await menuRepo.save(entity);
500
611
  }
501
612
 
502
613
  // 2) Fetch ids for batching
@@ -528,8 +639,7 @@ export class ModuleMetadataSeederService {
528
639
  }
529
640
  }
530
641
 
531
- // 4) Replace in bulk — QueryBuilder version
532
-
642
+ // 4) Replace in bulk — no orIgnore, safe for MSSQL
533
643
  // 4a) delete existing for affected menus
534
644
  const menuIds = [...new Set(joinRows.map(r => r.menuId))];
535
645
  if (menuIds.length) {
@@ -543,7 +653,6 @@ export class ModuleMetadataSeederService {
543
653
 
544
654
  // 4b) bulk insert all pairs
545
655
  if (joinRows.length) {
546
- // Build objects with the exact column names used by the join table
547
656
  const values = joinRows.map(r => ({
548
657
  [MENU_ROLE_JOIN_TABLE_NAME_MENU_COL]: r.menuId,
549
658
  [MENU_ROLE_JOIN_TABLE_NAME_ROLE_COL]: r.roleId,
@@ -552,9 +661,9 @@ export class ModuleMetadataSeederService {
552
661
  await trx
553
662
  .createQueryBuilder()
554
663
  .insert()
555
- .into(MENU_ROLE_JOIN_TABLE_NAME) // string table name
664
+ .into(MENU_ROLE_JOIN_TABLE_NAME)
556
665
  .values(values)
557
- .orIgnore() // optional if you have a UNIQUE(menuItemId, roleId) and want to skip dups
666
+ // .orIgnore() // remove this it triggers unsupported onUpdate path
558
667
  .execute();
559
668
  }
560
669
  });
@@ -664,7 +773,7 @@ export class ModuleMetadataSeederService {
664
773
  // console.log(fieldMetadata.displayName);
665
774
 
666
775
  const affectedField = await this.fieldMetadataService.upsert(fieldMetadata);
667
- if (fieldMetadata.name === userKeyFieldName) {
776
+ if (fieldMetadata.name === userKeyFieldName || fieldMetadata.isUserKey) {
668
777
  const { model, ...fieldData } = affectedField;
669
778
  userKeyField = fieldData;
670
779
  }
@@ -738,5 +847,14 @@ export class ModuleMetadataSeederService {
738
847
  await this.savedFiltersRepo.upsertWithDto({ ...dto, filterQueryJson: JSON.stringify(dto.filterQueryJson) });
739
848
  }
740
849
  }
850
+ private async handleSeedModelSequences(modelSequencesDto: CreateModelSequenceDto[]) {
851
+ if (!modelSequencesDto || modelSequencesDto.length === 0) {
852
+ this.logger.debug(`No Model Sequences found to seed`);
853
+ return;
854
+ }
855
+ for (const dto of modelSequencesDto) {
856
+ await this.modelSequenceRepo.upsertWithDto(dto);
857
+ }
858
+ }
741
859
 
742
860
  }