@solidstarters/solid-core 1.2.192 → 1.2.200

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 (376) hide show
  1. package/dist/commands/mcp.command.d.ts +20 -0
  2. package/dist/commands/mcp.command.d.ts.map +1 -0
  3. package/dist/commands/mcp.command.js +208 -0
  4. package/dist/commands/mcp.command.js.map +1 -0
  5. package/dist/commands/refresh-model.command.d.ts +8 -5
  6. package/dist/commands/refresh-model.command.d.ts.map +1 -1
  7. package/dist/commands/refresh-model.command.js +32 -0
  8. package/dist/commands/refresh-model.command.js.map +1 -1
  9. package/dist/commands/remove-fields.command.js +1 -1
  10. package/dist/commands/remove-fields.command.js.map +1 -1
  11. package/dist/commands/seed.command.d.ts +2 -0
  12. package/dist/commands/seed.command.d.ts.map +1 -1
  13. package/dist/commands/seed.command.js +28 -1
  14. package/dist/commands/seed.command.js.map +1 -1
  15. package/dist/controllers/authentication.controller.js +1 -1
  16. package/dist/controllers/authentication.controller.js.map +1 -1
  17. package/dist/controllers/email-template.controller.js +1 -1
  18. package/dist/controllers/email-template.controller.js.map +1 -1
  19. package/dist/controllers/field-metadata.controller.d.ts +136 -4
  20. package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
  21. package/dist/controllers/field-metadata.controller.js +14 -1
  22. package/dist/controllers/field-metadata.controller.js.map +1 -1
  23. package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
  24. package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
  25. package/dist/controllers/model-metadata.controller.js +1 -1
  26. package/dist/controllers/model-metadata.controller.js.map +1 -1
  27. package/dist/controllers/module-metadata.controller.js +1 -1
  28. package/dist/controllers/module-metadata.controller.js.map +1 -1
  29. package/dist/controllers/otp-authentication.controller.js +1 -1
  30. package/dist/controllers/otp-authentication.controller.js.map +1 -1
  31. package/dist/controllers/service.controller.js +1 -1
  32. package/dist/controllers/service.controller.js.map +1 -1
  33. package/dist/controllers/sms-template.controller.js +1 -1
  34. package/dist/controllers/sms-template.controller.js.map +1 -1
  35. package/dist/controllers/test-queue.controller.js +1 -1
  36. package/dist/controllers/test-queue.controller.js.map +1 -1
  37. package/dist/controllers/test.controller.js +1 -1
  38. package/dist/controllers/test.controller.js.map +1 -1
  39. package/dist/dtos/create-ai-interaction.dto.d.ts +2 -0
  40. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
  41. package/dist/dtos/create-ai-interaction.dto.js +14 -1
  42. package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
  43. package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
  44. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  45. package/dist/dtos/create-field-metadata.dto.js +33 -7
  46. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  47. package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
  48. package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
  49. package/dist/dtos/create-import-transaction.dto.js +1 -7
  50. package/dist/dtos/create-import-transaction.dto.js.map +1 -1
  51. package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
  52. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
  53. package/dist/dtos/create-model-metadata.dto.js +13 -1
  54. package/dist/dtos/create-model-metadata.dto.js.map +1 -1
  55. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  56. package/dist/dtos/create-role-metadata.dto.js +5 -1
  57. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  58. package/dist/dtos/resolve-s3-url.dto.d.ts +10 -0
  59. package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
  60. package/dist/dtos/resolve-s3-url.dto.js +49 -0
  61. package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
  62. package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
  63. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
  64. package/dist/dtos/update-ai-interaction.dto.js +13 -1
  65. package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
  66. package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
  67. package/dist/dtos/update-field-metadata.dto.js.map +1 -1
  68. package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
  69. package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
  70. package/dist/dtos/update-import-transaction.dto.js +1 -7
  71. package/dist/dtos/update-import-transaction.dto.js.map +1 -1
  72. package/dist/entities/action-metadata.entity.js +4 -4
  73. package/dist/entities/action-metadata.entity.js.map +1 -1
  74. package/dist/entities/ai-interaction.entity.d.ts +2 -0
  75. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  76. package/dist/entities/ai-interaction.entity.js +15 -6
  77. package/dist/entities/ai-interaction.entity.js.map +1 -1
  78. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  79. package/dist/entities/chatter-message-details.entity.js +1 -1
  80. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  81. package/dist/entities/chatter-message.entity.js +1 -1
  82. package/dist/entities/chatter-message.entity.js.map +1 -1
  83. package/dist/entities/common.entity.d.ts +2 -3
  84. package/dist/entities/common.entity.d.ts.map +1 -1
  85. package/dist/entities/common.entity.js +9 -11
  86. package/dist/entities/common.entity.js.map +1 -1
  87. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
  88. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  89. package/dist/entities/dashboard-question.entity.js +3 -3
  90. package/dist/entities/dashboard-question.entity.js.map +1 -1
  91. package/dist/entities/dashboard-variable.entity.js +3 -3
  92. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  93. package/dist/entities/dashboard.entity.js +1 -1
  94. package/dist/entities/dashboard.entity.js.map +1 -1
  95. package/dist/entities/email-template.entity.d.ts.map +1 -1
  96. package/dist/entities/email-template.entity.js +4 -3
  97. package/dist/entities/email-template.entity.js.map +1 -1
  98. package/dist/entities/export-template.entity.js +2 -2
  99. package/dist/entities/export-template.entity.js.map +1 -1
  100. package/dist/entities/export-transaction.entity.js +2 -2
  101. package/dist/entities/export-transaction.entity.js.map +1 -1
  102. package/dist/entities/field-metadata.entity.d.ts +1 -0
  103. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  104. package/dist/entities/field-metadata.entity.js +8 -4
  105. package/dist/entities/field-metadata.entity.js.map +1 -1
  106. package/dist/entities/import-transaction-error-log.entity.js +1 -1
  107. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  108. package/dist/entities/import-transaction.entity.d.ts +0 -1
  109. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  110. package/dist/entities/import-transaction.entity.js +2 -7
  111. package/dist/entities/import-transaction.entity.js.map +1 -1
  112. package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
  113. package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
  114. package/dist/entities/legacy-common-with-id.entity.js +32 -0
  115. package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
  116. package/dist/entities/legacy-common.entity.d.ts +13 -0
  117. package/dist/entities/legacy-common.entity.d.ts.map +1 -0
  118. package/dist/entities/legacy-common.entity.js +67 -0
  119. package/dist/entities/legacy-common.entity.js.map +1 -0
  120. package/dist/entities/list-of-values.entity.js +2 -2
  121. package/dist/entities/list-of-values.entity.js.map +1 -1
  122. package/dist/entities/locale.entity.js +1 -1
  123. package/dist/entities/locale.entity.js.map +1 -1
  124. package/dist/entities/media.entity.d.ts.map +1 -1
  125. package/dist/entities/media.entity.js +3 -3
  126. package/dist/entities/media.entity.js.map +1 -1
  127. package/dist/entities/menu-item-metadata.entity.js +4 -4
  128. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  129. package/dist/entities/model-metadata.entity.d.ts +2 -0
  130. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  131. package/dist/entities/model-metadata.entity.js +11 -3
  132. package/dist/entities/model-metadata.entity.js.map +1 -1
  133. package/dist/entities/mq-message-queue.entity.js +1 -1
  134. package/dist/entities/mq-message-queue.entity.js.map +1 -1
  135. package/dist/entities/mq-message.entity.d.ts +3 -3
  136. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  137. package/dist/entities/mq-message.entity.js +10 -10
  138. package/dist/entities/mq-message.entity.js.map +1 -1
  139. package/dist/entities/saved-filters.entity.js +4 -4
  140. package/dist/entities/saved-filters.entity.js.map +1 -1
  141. package/dist/entities/scheduled-job.entity.js +4 -4
  142. package/dist/entities/scheduled-job.entity.js.map +1 -1
  143. package/dist/entities/security-rule.entity.js +2 -2
  144. package/dist/entities/security-rule.entity.js.map +1 -1
  145. package/dist/entities/setting.entity.js +2 -2
  146. package/dist/entities/setting.entity.js.map +1 -1
  147. package/dist/entities/sms-template.entity.js +2 -2
  148. package/dist/entities/sms-template.entity.js.map +1 -1
  149. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  150. package/dist/entities/user-activity-history.entity.js +1 -1
  151. package/dist/entities/user-activity-history.entity.js.map +1 -1
  152. package/dist/entities/user-view-metadata.entity.js +2 -2
  153. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  154. package/dist/entities/user.entity.js +13 -15
  155. package/dist/entities/user.entity.js.map +1 -1
  156. package/dist/entities/view-metadata.entity.js +3 -3
  157. package/dist/entities/view-metadata.entity.js.map +1 -1
  158. package/dist/helpers/date.helper.d.ts +1 -1
  159. package/dist/helpers/date.helper.d.ts.map +1 -1
  160. package/dist/helpers/date.helper.js +24 -2
  161. package/dist/helpers/date.helper.js.map +1 -1
  162. package/dist/helpers/model-metadata-helper.service.d.ts +4 -1
  163. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  164. package/dist/helpers/model-metadata-helper.service.js +48 -30
  165. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  166. package/dist/helpers/module.helper.d.ts.map +1 -1
  167. package/dist/helpers/module.helper.js +1 -3
  168. package/dist/helpers/module.helper.js.map +1 -1
  169. package/dist/helpers/schematic.service.d.ts +9 -3
  170. package/dist/helpers/schematic.service.d.ts.map +1 -1
  171. package/dist/helpers/schematic.service.js +49 -32
  172. package/dist/helpers/schematic.service.js.map +1 -1
  173. package/dist/helpers/solid-registry.d.ts +3 -2
  174. package/dist/helpers/solid-registry.d.ts.map +1 -1
  175. package/dist/helpers/solid-registry.js +10 -0
  176. package/dist/helpers/solid-registry.js.map +1 -1
  177. package/dist/helpers/typeorm-db-helper.d.ts +3 -0
  178. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
  179. package/dist/helpers/typeorm-db-helper.js +24 -0
  180. package/dist/helpers/typeorm-db-helper.js.map +1 -0
  181. package/dist/index.d.ts +5 -1
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +5 -1
  184. package/dist/index.js.map +1 -1
  185. package/dist/interfaces.d.ts +3 -0
  186. package/dist/interfaces.d.ts.map +1 -1
  187. package/dist/interfaces.js.map +1 -1
  188. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  189. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
  190. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  191. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
  192. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  193. package/dist/seeders/module-metadata-seeder.service.js +39 -17
  194. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  195. package/dist/seeders/seed-data/solid-core-metadata.json +53 -468
  196. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  197. package/dist/seeders/system-fields-seeder.service.js +1 -1
  198. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  199. package/dist/services/ai-interaction.service.js +1 -1
  200. package/dist/services/ai-interaction.service.js.map +1 -1
  201. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
  202. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +6 -4
  203. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
  204. package/dist/services/crud-helper.service.d.ts +8 -0
  205. package/dist/services/crud-helper.service.d.ts.map +1 -1
  206. package/dist/services/crud-helper.service.js +28 -5
  207. package/dist/services/crud-helper.service.js.map +1 -1
  208. package/dist/services/crud.service.d.ts +4 -1
  209. package/dist/services/crud.service.d.ts.map +1 -1
  210. package/dist/services/crud.service.js +87 -7
  211. package/dist/services/crud.service.js.map +1 -1
  212. package/dist/services/field-metadata.service.d.ts +143 -6
  213. package/dist/services/field-metadata.service.d.ts.map +1 -1
  214. package/dist/services/field-metadata.service.js +211 -56
  215. package/dist/services/field-metadata.service.js.map +1 -1
  216. package/dist/services/menu-item-metadata.service.d.ts +3 -1
  217. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  218. package/dist/services/menu-item-metadata.service.js +31 -11
  219. package/dist/services/menu-item-metadata.service.js.map +1 -1
  220. package/dist/services/model-metadata.service.d.ts.map +1 -1
  221. package/dist/services/model-metadata.service.js +14 -3
  222. package/dist/services/model-metadata.service.js.map +1 -1
  223. package/dist/services/mq-message.service.d.ts.map +1 -1
  224. package/dist/services/mq-message.service.js +3 -4
  225. package/dist/services/mq-message.service.js.map +1 -1
  226. package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
  227. package/dist/services/queues/publisher-factory.service.js +4 -0
  228. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  229. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
  230. package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
  231. package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
  232. package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
  233. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
  234. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
  235. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
  236. package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
  237. package/dist/services/setting.service.d.ts.map +1 -1
  238. package/dist/services/setting.service.js +2 -1
  239. package/dist/services/setting.service.js.map +1 -1
  240. package/dist/services/solid-introspect.service.d.ts +19 -3
  241. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  242. package/dist/services/solid-introspect.service.js +83 -11
  243. package/dist/services/solid-introspect.service.js.map +1 -1
  244. package/dist/services/view-metadata.service.d.ts +3 -1
  245. package/dist/services/view-metadata.service.d.ts.map +1 -1
  246. package/dist/services/view-metadata.service.js +31 -5
  247. package/dist/services/view-metadata.service.js.map +1 -1
  248. package/dist/solid-core.module.d.ts.map +1 -1
  249. package/dist/solid-core.module.js +5 -1
  250. package/dist/solid-core.module.js.map +1 -1
  251. package/dist/subscribers/audit.subscriber.d.ts +3 -2
  252. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  253. package/dist/subscribers/audit.subscriber.js +6 -12
  254. package/dist/subscribers/audit.subscriber.js.map +1 -1
  255. package/dist/subscribers/computed-entity-field.subscriber.d.ts +3 -2
  256. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
  257. package/dist/subscribers/computed-entity-field.subscriber.js +7 -9
  258. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  259. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
  260. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
  261. package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
  262. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
  263. package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
  264. package/dist/subscribers/field-metadata.subscriber.js +0 -1
  265. package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
  266. package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
  267. package/dist/subscribers/model-metadata.subscriber.js +3 -2
  268. package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
  269. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
  270. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
  271. package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
  272. package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
  273. package/dist/tsconfig.tsbuildinfo +1 -1
  274. package/package.json +1 -1
  275. package/sql/mssql/proc_CleanupModelMetadata.sql +175 -0
  276. package/sql/mssql/proc_CleanupModuleMetadata.sql +78 -0
  277. package/sql/mssql/scratchpad.sql +10 -0
  278. package/sql/postgres/proc_CleanupModelMetadata.sql +148 -0
  279. package/sql/postgres/proc_CleanupModuleMetadata.sql +50 -0
  280. package/sql/postgres/scratchpad.sql +12 -0
  281. package/sql-server-changes.txt +88 -0
  282. package/src/commands/mcp.command.ts +215 -0
  283. package/src/commands/refresh-model.command.ts +37 -5
  284. package/src/commands/remove-fields.command.ts +1 -1
  285. package/src/commands/seed.command.ts +34 -15
  286. package/src/controllers/authentication.controller.ts +1 -1
  287. package/src/controllers/email-template.controller.ts +1 -1
  288. package/src/controllers/field-metadata.controller.ts +7 -1
  289. package/src/controllers/media-storage-provider-metadata.controller.ts +1 -1
  290. package/src/controllers/model-metadata.controller.ts +1 -1
  291. package/src/controllers/module-metadata.controller.ts +1 -1
  292. package/src/controllers/otp-authentication.controller.ts +1 -1
  293. package/src/controllers/service.controller.ts +1 -1
  294. package/src/controllers/sms-template.controller.ts +1 -1
  295. package/src/controllers/test-queue.controller.ts +1 -1
  296. package/src/controllers/test.controller.ts +1 -1
  297. package/src/dtos/create-ai-interaction.dto.ts +16 -9
  298. package/src/dtos/create-field-metadata.dto.ts +42 -12
  299. package/src/dtos/create-import-transaction.dto.ts +0 -4
  300. package/src/dtos/create-model-metadata.dto.ts +10 -0
  301. package/src/dtos/create-role-metadata.dto.ts +8 -2
  302. package/src/dtos/resolve-s3-url.dto.ts +33 -0
  303. package/src/dtos/update-ai-interaction.dto.ts +16 -9
  304. package/src/dtos/update-field-metadata.dto.ts +1 -2
  305. package/src/dtos/update-import-transaction.dto.ts +0 -4
  306. package/src/entities/action-metadata.entity.ts +4 -4
  307. package/src/entities/ai-interaction.entity.ts +16 -12
  308. package/src/entities/chatter-message-details.entity.ts +18 -18
  309. package/src/entities/chatter-message.entity.ts +2 -2
  310. package/src/entities/common.entity.ts +19 -10
  311. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
  312. package/src/entities/dashboard-question.entity.ts +3 -3
  313. package/src/entities/dashboard-variable.entity.ts +3 -3
  314. package/src/entities/dashboard.entity.ts +1 -1
  315. package/src/entities/email-template.entity.ts +4 -3
  316. package/src/entities/export-template.entity.ts +2 -2
  317. package/src/entities/export-transaction.entity.ts +2 -2
  318. package/src/entities/field-metadata.entity.ts +6 -3
  319. package/src/entities/import-transaction-error-log.entity.ts +2 -2
  320. package/src/entities/import-transaction.entity.ts +2 -5
  321. package/src/entities/legacy-common-with-id.entity.ts +11 -0
  322. package/src/entities/legacy-common.entity.ts +57 -0
  323. package/src/entities/list-of-values.entity.ts +2 -2
  324. package/src/entities/locale.entity.ts +1 -1
  325. package/src/entities/media.entity.ts +25 -25
  326. package/src/entities/menu-item-metadata.entity.ts +4 -4
  327. package/src/entities/model-metadata.entity.ts +9 -2
  328. package/src/entities/mq-message-queue.entity.ts +1 -1
  329. package/src/entities/mq-message.entity.ts +34 -34
  330. package/src/entities/saved-filters.entity.ts +5 -5
  331. package/src/entities/scheduled-job.entity.ts +4 -4
  332. package/src/entities/security-rule.entity.ts +2 -2
  333. package/src/entities/setting.entity.ts +2 -2
  334. package/src/entities/sms-template.entity.ts +2 -2
  335. package/src/entities/user-activity-history.entity.ts +14 -14
  336. package/src/entities/user-view-metadata.entity.ts +2 -2
  337. package/src/entities/user.entity.ts +15 -15
  338. package/src/entities/view-metadata.entity.ts +3 -3
  339. package/src/helpers/date.helper.ts +31 -10
  340. package/src/helpers/model-metadata-helper.service.ts +63 -32
  341. package/src/helpers/module.helper.ts +4 -3
  342. package/src/helpers/schematic.service.ts +72 -46
  343. package/src/helpers/solid-registry.ts +14 -2
  344. package/src/helpers/typeorm-db-helper.ts +26 -0
  345. package/src/index.ts +5 -1
  346. package/src/interfaces.ts +3 -0
  347. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
  348. package/src/seeders/module-metadata-seeder.service.ts +73 -29
  349. package/src/seeders/seed-data/solid-core-metadata.json +55 -470
  350. package/src/seeders/system-fields-seeder.service.ts +34 -35
  351. package/src/services/ai-interaction.service.ts +1 -1
  352. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +13 -9
  353. package/src/services/crud-helper.service.ts +32 -4
  354. package/src/services/crud.service.ts +158 -10
  355. package/src/services/field-metadata.service.ts +272 -67
  356. package/src/services/menu-item-metadata.service.ts +81 -50
  357. package/src/services/model-metadata.service.ts +18 -3
  358. package/src/services/mq-message.service.ts +16 -15
  359. package/src/services/queues/publisher-factory.service.ts +2 -1
  360. package/src/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
  361. package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
  362. package/src/services/setting.service.ts +13 -10
  363. package/src/services/solid-introspect.service.ts +110 -10
  364. package/src/services/view-metadata.service.ts +48 -18
  365. package/src/solid-core.module.ts +5 -1
  366. package/src/subscribers/audit.subscriber.ts +12 -8
  367. package/src/subscribers/computed-entity-field.subscriber.ts +13 -7
  368. package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
  369. package/src/subscribers/field-metadata.subscriber.ts +1 -1
  370. package/src/subscribers/model-metadata.subscriber.ts +4 -2
  371. package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
  372. package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
  373. package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
  374. package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
  375. package/src/entities/user.entity.ts.bkp +0 -144
  376. package/src/services/docker exec -it mssql //" +0 -8
@@ -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,14 @@
1
- import { Logger } from '@nestjs/common';
1
+ import { BadRequestException, 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
5
 
6
6
  interface CommandOptions {
7
- name: string;
8
- id: number;
9
- dryRun: boolean;
7
+ name?: string;
8
+ id?: number;
9
+ fieldIds?: number[];
10
+ fieldNames?: string[];
11
+ dryRun?: boolean;
10
12
  }
11
13
 
12
14
  @Command({
@@ -32,10 +34,13 @@ export class RefreshModelCommand extends CommandRunner {
32
34
  modelId: options.id,
33
35
  modelUserKey: options.name,
34
36
  dryRun: options.dryRun,
37
+ fieldIdsForRefresh: options.fieldIds,
38
+ fieldNamesForRefresh: options.fieldNames,
35
39
  };
36
40
  await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);
37
41
  }
38
42
 
43
+ // Accept the model ID as an argument
39
44
  @Option({
40
45
  flags: '-i, --id [model ID]',
41
46
  description: 'Model ID from the ss_model_metadata table',
@@ -53,6 +58,7 @@ export class RefreshModelCommand extends CommandRunner {
53
58
  return val;
54
59
  }
55
60
 
61
+ // Accept dry run as an argument
56
62
  @Option({
57
63
  flags: '-d, --dryRun [dry run]',
58
64
  description: 'Dry run the command',
@@ -62,8 +68,34 @@ export class RefreshModelCommand extends CommandRunner {
62
68
  return (val === 'false') ? false : true;
63
69
  }
64
70
 
71
+ // Accept field IDs as an argument
72
+ @Option({
73
+ flags: '-fids, --fieldIds [Array of field IDs]',
74
+ description: 'Json array of Field IDs from the ss_field_metadata table',
75
+ })
76
+ parseFieldIds(val: string): number[] {
77
+ //Check if the value is a json array
78
+ if (!val.startsWith('[') || !val.endsWith(']')) {
79
+ throw new BadRequestException('Field IDs should be a json array');
80
+ }
81
+ return JSON.parse(val).map((id: string) => parseInt(id));
82
+ }
83
+
84
+ // Accept field Names as an argument
85
+ @Option({
86
+ flags: '-fnames, --fieldNames [Array of field Names]',
87
+ description: 'Json array of Field Names from the ss_field_metadata table',
88
+ })
89
+ parseFieldNames(val: string): string[] {
90
+ //Check if the value is a json array
91
+ if (!val.startsWith('[') || !val.endsWith(']')) {
92
+ throw new BadRequestException('Field Names should be a json array');
93
+ }
94
+ return JSON.parse(val).map((name: string) => name.toString());
95
+ }
96
+
65
97
  // Validate the options passed
66
- validate(options: CommandOptions): CommandError[] {
98
+ private validate(options: CommandOptions): CommandError[] {
67
99
  if (!options.id && !options.name) {
68
100
  return [new CommandError('Model ID or Model Name is required')];
69
101
  }
@@ -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]',
@@ -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 {
@@ -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 {
@@ -14,7 +14,7 @@ export interface PostProcessCodeGenConfig {
14
14
  runSolidIngestion?: boolean; // If true, run solid ingestion command
15
15
  }
16
16
  @Controller('')
17
- @ApiTags("Common")
17
+ @ApiTags("Solid Core")
18
18
  // @UseGuards(ThrottlerGuard)
19
19
  // @SkipThrottle({ short: true, login: true, burst: true, sustained: true }) // Skip all
20
20
  export class ServiceController {
@@ -7,7 +7,7 @@ import { SmsTemplateService } from '../services/sms-template.service';
7
7
 
8
8
 
9
9
  @Controller('sms-template')
10
- @ApiTags("Common")
10
+ @ApiTags("Solid Core")
11
11
  // @UseGuards(ThrottlerGuard)
12
12
  // @SkipThrottle({ short: false, login: true, burst: true, sustained: true }) //Enable the short throttle only
13
13
  export class SmsTemplateController {
@@ -8,7 +8,7 @@ import { PublisherFactory } from 'src/services/queues/publisher-factory.service'
8
8
 
9
9
  @Auth(AuthType.None)
10
10
  @Controller('queues')
11
- @ApiTags("Queues")
11
+ @ApiTags("Solid Core")
12
12
  export class TestQueueController {
13
13
 
14
14
  constructor(
@@ -11,7 +11,7 @@ export class SeedData {
11
11
  }
12
12
 
13
13
  @Controller('test')
14
- @ApiTags("App Builder")
14
+ @ApiTags("Solid Core")
15
15
  export class TestController {
16
16
  private readonly logger = new Logger(TestController.name);
17
17
  constructor(
@@ -64,19 +64,26 @@ export class CreateAiInteractionDto {
64
64
  @IsBoolean()
65
65
  @ApiProperty()
66
66
  isAutoApply: boolean = false;
67
+ @IsOptional()
68
+ @IsInt()
69
+ @ApiProperty()
70
+ inputTokens: number;
71
+ @IsOptional()
72
+ @IsInt()
73
+ @ApiProperty()
74
+ outputTokens: number;
75
+ @IsOptional()
76
+ @IsInt()
77
+ @ApiProperty()
78
+ totalTokens: number;
67
79
 
68
80
  @IsOptional()
69
- @IsInt()
70
- @ApiProperty()
71
- inputTokens: number;
72
-
73
- @IsOptional()
74
- @IsInt()
81
+ @IsString()
75
82
  @ApiProperty()
76
- outputTokens: number;
83
+ originalMessage: string;
77
84
 
78
85
  @IsOptional()
79
- @IsInt()
86
+ @IsBoolean()
80
87
  @ApiProperty()
81
- totalTokens: number;
88
+ isEdited: boolean = false;
82
89
  }
@@ -5,6 +5,7 @@ import {
5
5
  IsArray,
6
6
  IsBoolean,
7
7
  IsEnum,
8
+ IsIn,
8
9
  IsInt,
9
10
  IsOptional,
10
11
  IsString,
@@ -62,10 +63,6 @@ export enum SolidFieldType {
62
63
  uuid = 'uuid'
63
64
  }
64
65
 
65
- export enum OrmType {
66
- MySQLType,
67
- }
68
-
69
66
  export enum MySQLType { //FIXME Currently this type is being used in the definition, Need to use OrmType instead
70
67
  // Numeric types
71
68
  int = 'int',
@@ -118,8 +115,35 @@ export enum PSQLType { //FIXME Currently this type is being used in the definiti
118
115
  // Other types
119
116
  json = 'json',
120
117
  jsonb = 'jsonb',
118
+ simplejson = 'simple-json'
121
119
  }
122
120
 
121
+ export enum MSSQLType {
122
+ int = "int",
123
+ bigint = "bigint",
124
+ decimal = "decimal",
125
+ numeric = "numeric",
126
+ varchar = "varchar",
127
+ nvarchar = "nvarchar",
128
+ simplejson = "simple-json",
129
+ text = "text",
130
+ bit = "bit",
131
+ date = "date",
132
+ datetime = "datetime",
133
+ datetime2 = "datetime2",
134
+ time = "time",
135
+ uniqueidentifier = "uniqueidentifier"
136
+ }
137
+
138
+ export const ALL_ORM_TYPES = [
139
+ ...Object.values(PSQLType),
140
+ ...Object.values(MSSQLType),
141
+ ...Object.values(MySQLType),
142
+ ] as const;
143
+
144
+ export type OrmType = typeof ALL_ORM_TYPES[number];
145
+
146
+ // export type OrmType = PSQLType | MySQLType | MSSQLType;
123
147
 
124
148
  export enum EncryptionType {
125
149
  aes128 = 'aes-128',
@@ -172,12 +196,12 @@ export enum ComputedFieldValueType {
172
196
  }
173
197
 
174
198
  export enum ComputedFieldTriggerOperation {
175
- beforeInsert = "before-insert",
176
- afterInsert = "after-insert",
177
- beforeUpdate = "before-update",
178
- afterUpdate = "after-update",
179
- beforeRemove = "before-delete",
180
- afterRemove = "after-delete",
199
+ beforeInsert = "before-insert",
200
+ afterInsert = "after-insert",
201
+ beforeUpdate = "before-update",
202
+ afterUpdate = "after-update",
203
+ beforeRemove = "before-delete",
204
+ afterRemove = "after-delete",
181
205
  }
182
206
 
183
207
  export class ComputedFieldTriggerConfig {
@@ -217,9 +241,9 @@ export class CreateFieldMetadataDto {
217
241
 
218
242
  //For all types of fields
219
243
  @ApiProperty({ description: 'Field can have orm types specific to your database', })
220
- @IsEnum(PSQLType)
244
+ @IsIn(ALL_ORM_TYPES)
221
245
  @IsOptional()
222
- readonly ormType: PSQLType;
246
+ readonly ormType: OrmType;
223
247
 
224
248
  @ApiProperty({ description: 'Length of the field. Only for type=text' })
225
249
  @IsInt()
@@ -426,6 +450,7 @@ export class CreateFieldMetadataDto {
426
450
  @IsOptional()
427
451
  relationJoinTableName: string
428
452
 
453
+ @ApiProperty({ description: 'Enable Audit Tracking for this field', })
429
454
  @IsOptional()
430
455
  @IsBoolean()
431
456
  enableAuditTracking?: boolean;
@@ -434,4 +459,9 @@ export class CreateFieldMetadataDto {
434
459
  @ApiProperty({ description: 'Is MultiSelect Field', })
435
460
  @IsBoolean()
436
461
  isMultiSelect: boolean;
462
+
463
+ @IsOptional()
464
+ @ApiProperty({ description: 'Is Primary Key Field', })
465
+ @IsBoolean()
466
+ isPrimaryKey?: boolean;
437
467
  }
@@ -10,10 +10,6 @@ export class CreateImportTransactionDto {
10
10
  @ApiProperty()
11
11
  status: string = "draft";
12
12
  @IsOptional()
13
- @IsString()
14
- @ApiProperty()
15
- importTransactionId: string;
16
- @IsOptional()
17
13
  @IsJSON()
18
14
  @ApiProperty()
19
15
  mapping: any;
@@ -112,4 +112,14 @@ export class CreateModelMetadataDto {
112
112
  @IsString()
113
113
  @IsOptional()
114
114
  parentModelUserKey: string;
115
+
116
+ @ApiProperty({ description: 'Is legacy table' })
117
+ @IsBoolean()
118
+ @IsOptional()
119
+ isLegacyTable?: boolean;
120
+
121
+ @ApiProperty({ description: 'Is legacy table with id' })
122
+ @IsBoolean()
123
+ @IsOptional()
124
+ isLegacyTableWithId?: boolean;
115
125
  }