@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
@@ -0,0 +1,44 @@
1
+ import { Command, CommandRunner, Option } from 'nest-commander';
2
+ import { FixturesService } from 'src/services/fixtures.service';
3
+
4
+ interface CommandOptions {
5
+ scenario: string;
6
+ module: string;
7
+ }
8
+
9
+ @Command({
10
+ name: 'fixtures setup',
11
+ description: 'Handles setup and tear down of fixtures for the SolidX application',
12
+ })
13
+ export class FixturesSetupCommand extends CommandRunner {
14
+ constructor(
15
+ private readonly fixturesService: FixturesService,
16
+ ) {
17
+ super();
18
+ }
19
+
20
+ async run(_passedParam: string[], options?: CommandOptions): Promise<void> {
21
+ await this.fixturesService.setupFixtures(options.module, options.scenario);
22
+ }
23
+
24
+ // Accept the task name i.e setup/tear-down for the fixtures command
25
+ @Option({
26
+ flags: '-s, --scenario [scenario name]',
27
+ description: 'Setup scenario name for the fixtures command',
28
+ required: true,
29
+ })
30
+ parseScenario(val: string): string {
31
+ return val;
32
+ }
33
+
34
+ // Accept the module name as an argument
35
+ @Option({
36
+ flags: '-m, --module-name [module name]',
37
+ description: 'Module Name from the ss_model_metadata table',
38
+ required: true,
39
+ })
40
+ parseModule(val: string): string {
41
+ return val;
42
+ }
43
+
44
+ }
@@ -0,0 +1,45 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { Command, CommandRunner, Option } from 'nest-commander';
3
+ import { SolidIntrospectService } from 'src/services/solid-introspect.service';
4
+
5
+ interface CommandOptions {
6
+ scenario: string;
7
+ module: string;
8
+ }
9
+
10
+ @Command({
11
+ name: 'fixtures tear-down',
12
+ description: 'Handles setup and tear down of fixtures for the SolidX application',
13
+ })
14
+ export class FixturesTearDownCommand extends CommandRunner {
15
+ constructor(
16
+ private readonly introspectService: SolidIntrospectService,
17
+ ) {
18
+ super();
19
+ }
20
+ private readonly logger = new Logger(this.constructor.name);
21
+
22
+ async run(_passedParam: string[], options?: CommandOptions): Promise<void> {
23
+ }
24
+
25
+ // Accept the task name i.e setup/tear-down for the fixtures command
26
+ @Option({
27
+ flags: '-s, --scenario [scenario name]',
28
+ description: 'Setup scenario name for the fixtures command',
29
+ required: true,
30
+ })
31
+ parseScenario(val: string): string {
32
+ return val;
33
+ }
34
+
35
+ // Accept the module name as an argument
36
+ @Option({
37
+ flags: '-m, --module [module name]',
38
+ description: 'Module Name from the ss_model_metadata table',
39
+ required: true,
40
+ })
41
+ parseModule(val: string): string {
42
+ return val;
43
+ }
44
+
45
+ }
@@ -0,0 +1,215 @@
1
+ import { Command, CommandRunner, Option } from 'nest-commander';
2
+ import { Logger } from '@nestjs/common';
3
+ import { spawn } from 'child_process';
4
+ import * as path from 'path';
5
+ import * as fs from 'fs';
6
+ import { SolidRegistry } from 'src/helpers/solid-registry';
7
+ import { ISolidDatabaseModule } from 'src/interfaces';
8
+ import { DatasourceType } from 'src/dtos/create-model-metadata.dto';
9
+
10
+ interface McpCommandOptions {
11
+ repoPath?: string;
12
+ detached?: boolean;
13
+ }
14
+
15
+ @Command({
16
+ name: 'mcp',
17
+ description: 'Manage the SolidX MCP server and Celery worker docker containers (start/stop)',
18
+ })
19
+ export class McpCommand extends CommandRunner {
20
+ private readonly logger = new Logger(McpCommand.name);
21
+
22
+ constructor(
23
+ private readonly solidRegistry: SolidRegistry
24
+ ) {
25
+ super();
26
+ }
27
+
28
+ async run(passedParams: string[], options?: McpCommandOptions): Promise<void> {
29
+ const mode = (passedParams[0] || 'start').toLowerCase();
30
+
31
+ if (mode === 'stop') {
32
+ await this.stopContainers(options);
33
+ } else if (mode === 'start') {
34
+ await this.startContainers(options);
35
+ } else {
36
+ this.logger.error(
37
+ `Unknown mode "${mode}". Supported modes are: start, stop.\n` +
38
+ 'Examples:\n' +
39
+ ' solid mcp start -p ~/mcp/servers/solidx_mcp_server\n' +
40
+ ' solid mcp stop -p ~/mcp/servers/solidx_mcp_server\n'
41
+ );
42
+ }
43
+ }
44
+
45
+ // ---------------------------------------------------------------
46
+ // START
47
+ // ---------------------------------------------------------------
48
+ private async startContainers(options?: McpCommandOptions): Promise<void> {
49
+ // 1. Validate license key
50
+ const apiKey = process.env.MCP_API_KEY;
51
+
52
+ // Form the Database url to be used by the MCP server based on the consuming projects details.
53
+ const defaultDatabaseUser = process.env.DEFAULT_DATABASE_USER;
54
+ const defaultDatabasePwd = process.env.DEFAULT_DATABASE_PASSWORD
55
+ ? encodeURIComponent(process.env.DEFAULT_DATABASE_PASSWORD)
56
+ : '';
57
+ const defaultDatabaseHost = process.env.DEFAULT_DATABASE_HOST === 'localhost' ? 'host.docker.internal' : process.env.DEFAULT_DATABASE_HOST;
58
+ const defaultDatabaseName = process.env.DEFAULT_DATABASE_NAME;
59
+ const databaseDialect = process.env.DEFAULT_DATABASE_TYPE?.toLowerCase() === 'mssql' ? 'mssql+pyodbc' : 'postgresql';
60
+ // const databaseUrl = `${databaseDialect}://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;
61
+
62
+ const defaultDatasource: ISolidDatabaseModule = this.solidRegistry.getDefaultSolidDatabaseModule()
63
+
64
+ let databaseUrl: string;
65
+ if (defaultDatasource.type() === DatasourceType.mssql) {
66
+ const base = `mssql+pyodbc://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;
67
+ const driver = encodeURIComponent('ODBC Driver 18 for SQL Server');
68
+ databaseUrl = `${base}?driver=${driver}&TrustServerCertificate=yes`;
69
+ }
70
+ if (defaultDatasource.type() === DatasourceType.postgres) {
71
+ databaseUrl = `postgresql://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;
72
+ }
73
+
74
+ if (!apiKey || apiKey.trim() === '') {
75
+ this.logger.error(
76
+ '❌ MCP_API_KEY environment variable is missing.\n' +
77
+ 'Set it before running:\n' +
78
+ ' export MCP_API_KEY="your_license_key"\n'
79
+ );
80
+ return;
81
+ }
82
+
83
+ this.logger.log('✔ MCP_API_KEY found.');
84
+
85
+ // 2. Resolve paths
86
+ const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();
87
+ const consumingProjectPath = path.resolve(process.cwd(), '..');
88
+ const composeFile = path.join(repoPath, 'docker-compose.yml');
89
+
90
+ if (!fs.existsSync(composeFile)) {
91
+ this.logger.error(`docker-compose.yml not found at ${composeFile}`);
92
+ return;
93
+ }
94
+
95
+ const detached = options?.detached ?? false;
96
+
97
+ this.logger.log(`Mode: start`);
98
+ this.logger.log(`Using repo path: ${repoPath}`);
99
+ this.logger.log(`Detached mode: ${detached}`);
100
+ this.logger.log(`Consuming project root: ${consumingProjectPath}`);
101
+
102
+ // 3. Build docker compose args
103
+ const cmd = 'docker';
104
+ const args = ['compose', '-f', composeFile, 'up'];
105
+
106
+ if (detached) {
107
+ args.push('-d');
108
+ }
109
+
110
+ // Service names as defined in docker-compose.yml
111
+ args.push('mcp_redis', 'mcp_server', 'mcp_celery_worker');
112
+
113
+ const env: NodeJS.ProcessEnv = {
114
+ ...process.env,
115
+ MCP_API_KEY: apiKey,
116
+ HOST_SOLIDX_CONSUMING_PROJECT_ROOT: consumingProjectPath,
117
+ DATABASE_URL: databaseUrl,
118
+ };
119
+
120
+ this.logger.log(`Running: ${cmd} ${args.join(' ')}`);
121
+ // const envLog = Object.entries(env)
122
+ // .map(([key, value]) => `${key}=${value ?? ''}`)
123
+ // .join('\n');
124
+ // this.logger.log(`Using env overrides:\n${envLog}`);
125
+
126
+ await this.runDockerCommand(cmd, args, repoPath, env);
127
+
128
+ this.logger.log(
129
+ detached
130
+ ? 'MCP containers started in detached mode.'
131
+ : 'MCP containers started in foreground.'
132
+ );
133
+ }
134
+
135
+ // ---------------------------------------------------------------
136
+ // STOP
137
+ // ---------------------------------------------------------------
138
+ private async stopContainers(options?: McpCommandOptions): Promise<void> {
139
+ const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();
140
+ const composeFile = path.join(repoPath, 'docker-compose.yml');
141
+
142
+ if (!fs.existsSync(composeFile)) {
143
+ this.logger.error(`docker-compose.yml not found at ${composeFile}`);
144
+ return;
145
+ }
146
+
147
+ this.logger.log(`Mode: stop`);
148
+ this.logger.log(`Using repo path: ${repoPath}`);
149
+
150
+ const cmd = 'docker';
151
+ const args = ['compose', '-f', composeFile, 'down'];
152
+
153
+ this.logger.log(`Running: ${cmd} ${args.join(' ')}`);
154
+
155
+ await this.runDockerCommand(cmd, args, repoPath, process.env);
156
+
157
+ this.logger.log('MCP containers stopped (docker compose down).');
158
+ }
159
+
160
+ // ---------------------------------------------------------------
161
+ // Helpers
162
+ // ---------------------------------------------------------------
163
+ private resolvePath(inputPath: string): string {
164
+ if (inputPath.startsWith('~')) {
165
+ return path.join(process.env.HOME!, inputPath.slice(1));
166
+ }
167
+ return path.resolve(inputPath);
168
+ }
169
+
170
+ private runDockerCommand(
171
+ cmd: string,
172
+ args: string[],
173
+ cwd: string,
174
+ env: NodeJS.ProcessEnv,
175
+ ): Promise<void> {
176
+ return new Promise((resolve, reject) => {
177
+ const child = spawn(cmd, args, {
178
+ cwd,
179
+ env,
180
+ stdio: 'inherit',
181
+ });
182
+
183
+ child.on('error', (err) => {
184
+ this.logger.error(`Docker error: ${err.message}`);
185
+ reject(err);
186
+ });
187
+
188
+ child.on('close', (code) => {
189
+ if (code === 0) resolve();
190
+ else reject(new Error(`Docker exited with code ${code}`));
191
+ });
192
+ });
193
+ }
194
+
195
+ // Flags
196
+
197
+ @Option({
198
+ flags: '-d, --detached [boolean]',
199
+ description: 'Run containers in detached mode (only for start, default: false)',
200
+ required: false,
201
+ })
202
+ parseDetached(val: string): boolean {
203
+ if (val === undefined) return false;
204
+ return val === 'true' || val === '1';
205
+ }
206
+
207
+ @Option({
208
+ flags: '-p, --repo-path [path]',
209
+ description: 'Path to the SolidX MCP Server repo containing docker-compose.yml',
210
+ required: false,
211
+ })
212
+ parseRepoPath(val: string): string {
213
+ return val;
214
+ }
215
+ }
@@ -1,12 +1,15 @@
1
- import { Logger } from '@nestjs/common';
1
+ import { BadRequestException, forwardRef, Inject, Logger } from '@nestjs/common';
2
2
  import { Command, CommandRunner, Option } from 'nest-commander';
3
3
  import { ModelMetadataService } from 'src/services/model-metadata.service';
4
4
  import { CommandError } from './helper';
5
+ import { In } from 'typeorm';
5
6
 
6
7
  interface CommandOptions {
7
- name: string;
8
- id: number;
9
- dryRun: boolean;
8
+ name?: string;
9
+ id?: number;
10
+ fieldIds?: number[];
11
+ fieldNames?: string[];
12
+ dryRun?: boolean;
10
13
  }
11
14
 
12
15
  @Command({
@@ -15,6 +18,7 @@ interface CommandOptions {
15
18
  })
16
19
  export class RefreshModelCommand extends CommandRunner {
17
20
  constructor(
21
+ @Inject(forwardRef(() => ModelMetadataService))
18
22
  private readonly modelMetadataService: ModelMetadataService,
19
23
  ) {
20
24
  super();
@@ -32,10 +36,13 @@ export class RefreshModelCommand extends CommandRunner {
32
36
  modelId: options.id,
33
37
  modelUserKey: options.name,
34
38
  dryRun: options.dryRun,
39
+ fieldIdsForRefresh: options.fieldIds,
40
+ fieldNamesForRefresh: options.fieldNames,
35
41
  };
36
42
  await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);
37
43
  }
38
44
 
45
+ // Accept the model ID as an argument
39
46
  @Option({
40
47
  flags: '-i, --id [model ID]',
41
48
  description: 'Model ID from the ss_model_metadata table',
@@ -53,6 +60,7 @@ export class RefreshModelCommand extends CommandRunner {
53
60
  return val;
54
61
  }
55
62
 
63
+ // Accept dry run as an argument
56
64
  @Option({
57
65
  flags: '-d, --dryRun [dry run]',
58
66
  description: 'Dry run the command',
@@ -62,8 +70,34 @@ export class RefreshModelCommand extends CommandRunner {
62
70
  return (val === 'false') ? false : true;
63
71
  }
64
72
 
73
+ // Accept field IDs as an argument
74
+ @Option({
75
+ flags: '-fids, --fieldIds [Array of field IDs]',
76
+ description: 'Json array of Field IDs from the ss_field_metadata table',
77
+ })
78
+ parseFieldIds(val: string): number[] {
79
+ //Check if the value is a json array
80
+ if (!val.startsWith('[') || !val.endsWith(']')) {
81
+ throw new BadRequestException('Field IDs should be a json array');
82
+ }
83
+ return JSON.parse(val).map((id: string) => parseInt(id));
84
+ }
85
+
86
+ // Accept field Names as an argument
87
+ @Option({
88
+ flags: '-fnames, --fieldNames [Array of field Names]',
89
+ description: 'Json array of Field Names from the ss_field_metadata table',
90
+ })
91
+ parseFieldNames(val: string): string[] {
92
+ //Check if the value is a json array
93
+ if (!val.startsWith('[') || !val.endsWith(']')) {
94
+ throw new BadRequestException('Field Names should be a json array');
95
+ }
96
+ return JSON.parse(val).map((name: string) => name.toString());
97
+ }
98
+
65
99
  // Validate the options passed
66
- validate(options: CommandOptions): CommandError[] {
100
+ private validate(options: CommandOptions): CommandError[] {
67
101
  if (!options.id && !options.name) {
68
102
  return [new CommandError('Model ID or Model Name is required')];
69
103
  }
@@ -11,7 +11,7 @@ interface CommandOptions {
11
11
 
12
12
  @Command({
13
13
  name: 'remove-fields',
14
- description: 'Adds fields to a model',
14
+ description: 'Removes fields from a model',
15
15
  })
16
16
  export class RemoveFieldsCommand extends CommandRunner {
17
17
  constructor(
@@ -3,7 +3,7 @@ import { Command, CommandRunner, Option } from 'nest-commander';
3
3
  import { SolidRegistry } from 'src/helpers/solid-registry';
4
4
 
5
5
  interface SeedCommandOptions {
6
- // module?: string;
6
+ conf?: string;
7
7
  seeder?: string;
8
8
  }
9
9
 
@@ -16,6 +16,25 @@ export class SeedCommand extends CommandRunner {
16
16
  }
17
17
 
18
18
  async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {
19
+ // TODO: check if options.conf is non empty and a valid json string only is -c flag is passed.
20
+ // TODO: convert to json object JSON.parse
21
+ let parsedConf: any = null;
22
+
23
+ // Parse conf only if provided
24
+ if (options?.conf !== undefined) {
25
+ try {
26
+ parsedConf = JSON.parse(options.conf);
27
+ this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);
28
+ } catch (err) {
29
+ this.logger.error('Failed to parse --conf. Please provide valid JSON.');
30
+ return;
31
+ }
32
+ } else {
33
+ this.logger.log('No --conf flag provided. Running with default seeder behavior.');
34
+ }
35
+
36
+
37
+
19
38
  const seeder = this.solidRegistry
20
39
  .getSeeders()
21
40
  .filter((seeder) => seeder.name === options.seeder)
@@ -26,22 +45,22 @@ export class SeedCommand extends CommandRunner {
26
45
  return;
27
46
  }
28
47
  this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);
29
- await seeder.seed();
48
+ await seeder.seed(parsedConf);
30
49
  }
31
50
 
32
- // @Option({
33
- // flags: '-m, --module [module name]',
34
- // description: 'Name of the module, all seeders inside this module will be run automatically.',
35
- // required: true
36
- // })
37
- // /**
38
- // * TODO
39
- // * This parameter will be useful, to support seeders with the same name in different modules
40
- // * Currently the seeder service won't support seeder with same classname within a module
41
- // **/
42
- // parseModule(val: string): string {
43
- // return val;
44
- // }
51
+ @Option({
52
+ flags: '-c, --conf [configuration json]',
53
+ description: 'A configuration json, pass a valid json string.',
54
+ required: false
55
+ })
56
+ /**
57
+ * TODO
58
+ * This parameter will be useful, to support seeders with the same name in different modules
59
+ * Currently the seeder service won't support seeder with same classname within a module
60
+ **/
61
+ parseConf(val: string): string {
62
+ return val;
63
+ }
45
64
 
46
65
  @Option({
47
66
  flags: '-s, --seeder [seeder name]',
@@ -84,7 +84,7 @@ export const ERROR_MESSAGES = {
84
84
  FIELD_NOT_FOUND: (id: number | string) => `No field with id #${id} exists`,
85
85
  PROVIDER_NOT_FOUND: (provider: string) => `Field incorrectly configured. No provider with name ${provider} registered in backend.`,
86
86
  FILE_WRITE_FAILED: 'File creation failed, rolling back transaction',
87
-
87
+ FILE_DELETE_FAILED: 'File deletion failed, rolling back transaction',
88
88
  // file service errors
89
89
  FILE_NOT_FOUND: 'File not found',
90
90
  FILE_COPY_ERROR: 'Error copying file',
@@ -123,4 +123,10 @@ export const ERROR_MESSAGES = {
123
123
  UNABLE_TO_RESOLVE_MCP_HANDLER: 'Unable to resolve a mcp tool handler.',
124
124
 
125
125
  DEFAULT_REGEX_PATTERN_NOT_MATCHING_ERROR_MSG: 'Invalid regex pattern.',
126
+
127
+ PERMISSION_MESSAGES: {
128
+ insertMany: (model?: string) =>
129
+ `You do not have permission to import ${model ?? 'these'} records.`,
130
+ } as Record<string, (model?: string) => string>,
131
+
126
132
  };
@@ -15,7 +15,7 @@ import { AuthenticationService } from '../services/authentication.service';
15
15
 
16
16
  // @Auth(AuthType.None)
17
17
  @Controller('iam')
18
- @ApiTags("Iam")
18
+ @ApiTags("Solid Core")
19
19
  // @UseGuards(ThrottlerGuard)
20
20
  // @SkipThrottle({login: true, short: true, burst: true, sustained: true}) // disable all sets by default for this controller
21
21
  export class AuthenticationController {
@@ -10,7 +10,7 @@ import Mailgen = require('mailgen');
10
10
 
11
11
 
12
12
  @Controller('email-template')
13
- @ApiTags("Common")
13
+ @ApiTags("Solid Core")
14
14
  export class EmailTemplateController {
15
15
  constructor(private readonly service: EmailTemplateService) { }
16
16
 
@@ -6,9 +6,10 @@ import { FieldMetadataService } from '../services/field-metadata.service';
6
6
  import { Public } from 'src/decorators/public.decorator';
7
7
  import { BasicFilterDto } from '../dtos/basic-filters.dto';
8
8
  import { SelectionDynamicQueryDto } from '../dtos/selection-dynamic-query.dto';
9
+ import { ResolveS3UrlDto } from 'src/dtos/resolve-s3-url.dto';
9
10
 
10
11
  @Controller('field-metadata')
11
- @ApiTags("App Builder")
12
+ @ApiTags("Solid Core")
12
13
  export class FieldMetadataController {
13
14
 
14
15
  constructor(
@@ -67,6 +68,11 @@ export class FieldMetadataController {
67
68
  return this.fieldMetadataService.delete(id);
68
69
  }
69
70
 
71
+ @ApiBearerAuth("jwt")
72
+ @Post('/resolve-s3-url')
73
+ resolveS3Url(@Body() resolveS3UrlDto: ResolveS3UrlDto) {
74
+ return this.fieldMetadataService.resolveS3Url(resolveS3UrlDto);
70
75
 
76
+ }
71
77
 
72
78
  }
@@ -8,7 +8,7 @@ import { UpdateMediaStorageProviderMetadataDto } from '../dtos/update-media-stor
8
8
  import { AnyFilesInterceptor } from '@nestjs/platform-express';
9
9
 
10
10
  @Controller('media-storage-provider-metadata')
11
- @ApiTags("App Builder")
11
+ @ApiTags("Solid Core")
12
12
  export class MediaStorageProviderMetadataController {
13
13
  private logger = new Logger(MediaStorageProviderMetadataController.name);
14
14
 
@@ -7,7 +7,7 @@ import { UpdateModelMetaDataDto } from '../dtos/update-model-metadata.dto';
7
7
  import { ModelMetadataService } from '../services/model-metadata.service';
8
8
 
9
9
  @Controller('model-metadata')
10
- @ApiTags("App Builder")
10
+ @ApiTags("Solid Core")
11
11
  // @UseGuards(ThrottlerGuard)
12
12
  // @SkipThrottle({ short: true, login: true, burst: true, sustained: true }) //Skip all
13
13
  export class ModelMetadataController {
@@ -0,0 +1,93 @@
1
+ import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';
2
+ import { AnyFilesInterceptor } from "@nestjs/platform-express";
3
+ import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
4
+ import { ModelSequenceService } from '../services/model-sequence.service';
5
+ import { CreateModelSequenceDto } from '../dtos/create-model-sequence.dto';
6
+ import { UpdateModelSequenceDto } from '../dtos/update-model-sequence.dto';
7
+
8
+ enum ShowSoftDeleted {
9
+ INCLUSIVE = "inclusive",
10
+ EXCLUSIVE = "exclusive",
11
+ }
12
+
13
+ @ApiTags('Solid Core')
14
+ @Controller('model-sequence')
15
+ export class ModelSequenceController {
16
+ constructor(private readonly service: ModelSequenceService) {}
17
+
18
+ @ApiBearerAuth("jwt")
19
+ @Post()
20
+ @UseInterceptors(AnyFilesInterceptor())
21
+ create(@Body() createDto: CreateModelSequenceDto, @UploadedFiles() files: Array<Express.Multer.File>) {
22
+ return this.service.create(createDto, files);
23
+ }
24
+
25
+ @ApiBearerAuth("jwt")
26
+ @Post('/bulk')
27
+ @UseInterceptors(AnyFilesInterceptor())
28
+ insertMany(@Body() createDtos: CreateModelSequenceDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {
29
+ return this.service.insertMany(createDtos, filesArray);
30
+ }
31
+
32
+
33
+ @ApiBearerAuth("jwt")
34
+ @Put(':id')
35
+ @UseInterceptors(AnyFilesInterceptor())
36
+ update(@Param('id') id: number, @Body() updateDto: UpdateModelSequenceDto, @UploadedFiles() files: Array<Express.Multer.File>) {
37
+ return this.service.update(id, updateDto, files);
38
+ }
39
+
40
+ @ApiBearerAuth("jwt")
41
+ @Patch(':id')
42
+ @UseInterceptors(AnyFilesInterceptor())
43
+ partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateModelSequenceDto, @UploadedFiles() files: Array<Express.Multer.File>) {
44
+ return this.service.update(id, updateDto, files, true);
45
+ }
46
+
47
+ @ApiBearerAuth("jwt")
48
+ @Post('/bulk-recover')
49
+ async recoverMany(@Body() ids: number[]) {
50
+ return this.service.recoverMany(ids);
51
+ }
52
+
53
+ @ApiBearerAuth("jwt")
54
+ @Get('/recover/:id')
55
+ async recover(@Param('id') id: number) {
56
+ return this.service.recover(id);
57
+ }
58
+
59
+ @ApiBearerAuth("jwt")
60
+ @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })
61
+ @ApiQuery({ name: 'limit', required: false, type: Number })
62
+ @ApiQuery({ name: 'offset', required: false, type: Number })
63
+ @ApiQuery({ name: 'fields', required: false, type: Array })
64
+ @ApiQuery({ name: 'sort', required: false, type: Array })
65
+ @ApiQuery({ name: 'groupBy', required: false, type: Array })
66
+ @ApiQuery({ name: 'populate', required: false, type: Array })
67
+ @ApiQuery({ name: 'populateMedia', required: false, type: Array })
68
+ @ApiQuery({ name: 'filters', required: false, type: Array })
69
+ @Get()
70
+ async findMany(@Query() query: any) {
71
+ return this.service.find(query);
72
+ }
73
+
74
+ @ApiBearerAuth("jwt")
75
+ @Get(':id')
76
+ async findOne(@Param('id') id: string, @Query() query: any) {
77
+ return this.service.findOne(+id, query);
78
+ }
79
+
80
+ @ApiBearerAuth("jwt")
81
+ @Delete('/bulk')
82
+ async deleteMany(@Body() ids: number[]) {
83
+ return this.service.deleteMany(ids);
84
+ }
85
+
86
+ @ApiBearerAuth("jwt")
87
+ @Delete(':id')
88
+ async delete(@Param('id') id: number) {
89
+ return this.service.delete(id);
90
+ }
91
+
92
+
93
+ }
@@ -19,7 +19,7 @@ import { ModuleMetadataService } from '../services/module-metadata.service';
19
19
  import { AnyFilesInterceptor } from '@nestjs/platform-express';
20
20
 
21
21
  @Controller('module-metadata')
22
- @ApiTags("App Builder")
22
+ @ApiTags("Solid Core")
23
23
  export class ModuleMetadataController {
24
24
  constructor(private readonly moduleMetadataService: ModuleMetadataService) { }
25
25
 
@@ -13,7 +13,7 @@ import { AuthenticationService } from '../services/authentication.service';
13
13
 
14
14
  @Auth(AuthType.None)
15
15
  @Controller('iam/otp')
16
- @ApiTags("Iam")
16
+ @ApiTags("Solid Core")
17
17
  // @UseGuards(ThrottlerGuard)
18
18
  // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only
19
19
  export class OTPAuthenticationController {