@solidxai/core 0.1.6-beta.9 → 0.1.7

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 (311) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CHANGELOG.md +71 -0
  3. package/dist/controllers/dashboard-layout.controller.d.ts +47 -0
  4. package/dist/controllers/dashboard-layout.controller.d.ts.map +1 -0
  5. package/dist/controllers/dashboard-layout.controller.js +204 -0
  6. package/dist/controllers/dashboard-layout.controller.js.map +1 -0
  7. package/dist/dtos/create-dashboard-layout.dto.d.ts +8 -0
  8. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +1 -0
  9. package/dist/dtos/create-dashboard-layout.dto.js +53 -0
  10. package/dist/dtos/create-dashboard-layout.dto.js.map +1 -0
  11. package/dist/dtos/create-dashboard-variable.dto.d.ts +1 -0
  12. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +1 -1
  13. package/dist/dtos/create-dashboard-variable.dto.js +7 -1
  14. package/dist/dtos/create-dashboard-variable.dto.js.map +1 -1
  15. package/dist/dtos/update-dashboard-layout.dto.d.ts +8 -0
  16. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +1 -0
  17. package/dist/dtos/update-dashboard-layout.dto.js +53 -0
  18. package/dist/dtos/update-dashboard-layout.dto.js.map +1 -0
  19. package/dist/dtos/update-dashboard-variable.dto.d.ts +1 -0
  20. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +1 -1
  21. package/dist/dtos/update-dashboard-variable.dto.js +7 -1
  22. package/dist/dtos/update-dashboard-variable.dto.js.map +1 -1
  23. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  24. package/dist/entities/action-metadata.entity.js.map +1 -1
  25. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  26. package/dist/entities/ai-interaction.entity.js +5 -4
  27. package/dist/entities/ai-interaction.entity.js.map +1 -1
  28. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  29. package/dist/entities/chatter-message-details.entity.js +4 -3
  30. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  31. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  32. package/dist/entities/chatter-message.entity.js +4 -3
  33. package/dist/entities/chatter-message.entity.js.map +1 -1
  34. package/dist/entities/dashboard-layout.entity.d.ts +9 -0
  35. package/dist/entities/dashboard-layout.entity.d.ts.map +1 -0
  36. package/dist/entities/dashboard-layout.entity.js +41 -0
  37. package/dist/entities/dashboard-layout.entity.js.map +1 -0
  38. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -1
  39. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +5 -4
  40. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  41. package/dist/entities/dashboard-question.entity.d.ts.map +1 -1
  42. package/dist/entities/dashboard-question.entity.js +5 -4
  43. package/dist/entities/dashboard-question.entity.js.map +1 -1
  44. package/dist/entities/dashboard-variable.entity.d.ts +1 -0
  45. package/dist/entities/dashboard-variable.entity.d.ts.map +1 -1
  46. package/dist/entities/dashboard-variable.entity.js +10 -4
  47. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  48. package/dist/entities/dashboard.entity.d.ts +2 -0
  49. package/dist/entities/dashboard.entity.d.ts.map +1 -1
  50. package/dist/entities/dashboard.entity.js +9 -3
  51. package/dist/entities/dashboard.entity.js.map +1 -1
  52. package/dist/entities/email-attachment.entity.d.ts.map +1 -1
  53. package/dist/entities/email-attachment.entity.js +2 -1
  54. package/dist/entities/email-attachment.entity.js.map +1 -1
  55. package/dist/entities/email-template.entity.js +1 -1
  56. package/dist/entities/email-template.entity.js.map +1 -1
  57. package/dist/entities/export-transaction.entity.d.ts.map +1 -1
  58. package/dist/entities/export-transaction.entity.js +2 -1
  59. package/dist/entities/export-transaction.entity.js.map +1 -1
  60. package/dist/entities/field-metadata.entity.js +2 -2
  61. package/dist/entities/field-metadata.entity.js.map +1 -1
  62. package/dist/entities/import-transaction-error-log.entity.d.ts.map +1 -1
  63. package/dist/entities/import-transaction-error-log.entity.js +3 -2
  64. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  65. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  66. package/dist/entities/import-transaction.entity.js +2 -1
  67. package/dist/entities/import-transaction.entity.js.map +1 -1
  68. package/dist/entities/mq-message-queue.entity.d.ts.map +1 -1
  69. package/dist/entities/mq-message-queue.entity.js.map +1 -1
  70. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  71. package/dist/entities/mq-message.entity.js +5 -3
  72. package/dist/entities/mq-message.entity.js.map +1 -1
  73. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  74. package/dist/entities/saved-filters.entity.js +3 -2
  75. package/dist/entities/saved-filters.entity.js.map +1 -1
  76. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  77. package/dist/entities/security-rule.entity.js +2 -1
  78. package/dist/entities/security-rule.entity.js.map +1 -1
  79. package/dist/entities/sms-template.entity.js +1 -1
  80. package/dist/entities/sms-template.entity.js.map +1 -1
  81. package/dist/entities/user-view-metadata.entity.d.ts.map +1 -1
  82. package/dist/entities/user-view-metadata.entity.js +2 -1
  83. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  84. package/dist/entities/user.entity.d.ts.map +1 -1
  85. package/dist/entities/user.entity.js +2 -0
  86. package/dist/entities/user.entity.js.map +1 -1
  87. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  88. package/dist/entities/view-metadata.entity.js.map +1 -1
  89. package/dist/helpers/bootstrap.helper.d.ts +14 -0
  90. package/dist/helpers/bootstrap.helper.d.ts.map +1 -0
  91. package/dist/helpers/bootstrap.helper.js +132 -0
  92. package/dist/helpers/bootstrap.helper.js.map +1 -0
  93. package/dist/helpers/cache.helper.d.ts +2 -0
  94. package/dist/helpers/cache.helper.d.ts.map +1 -0
  95. package/dist/helpers/cache.helper.js +8 -0
  96. package/dist/helpers/cache.helper.js.map +1 -0
  97. package/dist/helpers/cors.helper.d.ts.map +1 -1
  98. package/dist/helpers/cors.helper.js +13 -4
  99. package/dist/helpers/cors.helper.js.map +1 -1
  100. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  101. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  102. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +8 -9
  103. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  104. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts +2 -2
  105. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts.map +1 -1
  106. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js +8 -5
  107. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  108. package/dist/helpers/solid-registry.d.ts +3 -0
  109. package/dist/helpers/solid-registry.d.ts.map +1 -1
  110. package/dist/helpers/solid-registry.js +7 -0
  111. package/dist/helpers/solid-registry.js.map +1 -1
  112. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  113. package/dist/helpers/typeorm-db-helper.js +21 -0
  114. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  115. package/dist/index.d.ts +3 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +3 -0
  118. package/dist/index.js.map +1 -1
  119. package/dist/interfaces.d.ts +2 -0
  120. package/dist/interfaces.d.ts.map +1 -1
  121. package/dist/interfaces.js.map +1 -1
  122. package/dist/jobs/chatter-queue-options.js +1 -1
  123. package/dist/jobs/chatter-queue-options.js.map +1 -1
  124. package/dist/jobs/chatter-queue-publisher.service.d.ts +9 -9
  125. package/dist/jobs/chatter-queue-publisher.service.d.ts.map +1 -1
  126. package/dist/jobs/chatter-queue-publisher.service.js +5 -5
  127. package/dist/jobs/chatter-queue-publisher.service.js.map +1 -1
  128. package/dist/jobs/chatter-queue-subscriber.service.d.ts +4 -4
  129. package/dist/jobs/chatter-queue-subscriber.service.d.ts.map +1 -1
  130. package/dist/jobs/chatter-queue-subscriber.service.js +11 -11
  131. package/dist/jobs/chatter-queue-subscriber.service.js.map +1 -1
  132. package/dist/jobs/computed-field-evaluation-queue-options.d.ts +2 -0
  133. package/dist/jobs/computed-field-evaluation-queue-options.d.ts.map +1 -1
  134. package/dist/jobs/computed-field-evaluation-queue-options.js +2 -0
  135. package/dist/jobs/computed-field-evaluation-queue-options.js.map +1 -1
  136. package/dist/jobs/database/chatter-queue-options-database.d.ts +8 -0
  137. package/dist/jobs/database/chatter-queue-options-database.d.ts.map +1 -0
  138. package/dist/jobs/database/chatter-queue-options-database.js +10 -0
  139. package/dist/jobs/database/chatter-queue-options-database.js.map +1 -0
  140. package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts +12 -0
  141. package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts.map +1 -0
  142. package/dist/jobs/database/chatter-queue-publisher-database.service.js +39 -0
  143. package/dist/jobs/database/chatter-queue-publisher-database.service.js.map +1 -0
  144. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts +19 -0
  145. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -0
  146. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +62 -0
  147. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -0
  148. package/dist/repository/dashboard-layout.repository.d.ts +12 -0
  149. package/dist/repository/dashboard-layout.repository.d.ts.map +1 -0
  150. package/dist/repository/dashboard-layout.repository.js +34 -0
  151. package/dist/repository/dashboard-layout.repository.js.map +1 -0
  152. package/dist/repository/model-metadata.repository.d.ts +6 -1
  153. package/dist/repository/model-metadata.repository.d.ts.map +1 -1
  154. package/dist/repository/model-metadata.repository.js +41 -2
  155. package/dist/repository/model-metadata.repository.js.map +1 -1
  156. package/dist/seeders/module-metadata-seeder.service.js +4 -4
  157. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  158. package/dist/seeders/seed-data/solid-core-metadata.json +372 -32
  159. package/dist/services/chatter-message.service.d.ts +4 -4
  160. package/dist/services/chatter-message.service.d.ts.map +1 -1
  161. package/dist/services/chatter-message.service.js +33 -9
  162. package/dist/services/chatter-message.service.js.map +1 -1
  163. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +7 -3
  164. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
  165. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +61 -22
  166. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
  167. package/dist/services/crud.service.js +1 -1
  168. package/dist/services/crud.service.js.map +1 -1
  169. package/dist/services/dashboard-layout.service.d.ts +20 -0
  170. package/dist/services/dashboard-layout.service.d.ts.map +1 -0
  171. package/dist/services/dashboard-layout.service.js +120 -0
  172. package/dist/services/dashboard-layout.service.js.map +1 -0
  173. package/dist/services/dashboard.service.d.ts +2 -0
  174. package/dist/services/dashboard.service.d.ts.map +1 -1
  175. package/dist/services/dashboard.service.js +4 -0
  176. package/dist/services/dashboard.service.js.map +1 -1
  177. package/dist/services/model-metadata.service.d.ts +3 -1
  178. package/dist/services/model-metadata.service.d.ts.map +1 -1
  179. package/dist/services/model-metadata.service.js +21 -2
  180. package/dist/services/model-metadata.service.js.map +1 -1
  181. package/dist/services/permission-metadata.service.d.ts +5 -1
  182. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  183. package/dist/services/permission-metadata.service.js +66 -20
  184. package/dist/services/permission-metadata.service.js.map +1 -1
  185. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  186. package/dist/services/queues/database-subscriber.service.js +6 -1
  187. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  188. package/dist/services/queues/publisher-factory.service.js +0 -1
  189. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  190. package/dist/services/queues/rabbitmq-publisher.service.d.ts +1 -0
  191. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
  192. package/dist/services/queues/rabbitmq-publisher.service.js +6 -1
  193. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  194. package/dist/services/queues/rabbitmq-subscriber.service.d.ts +5 -1
  195. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  196. package/dist/services/queues/rabbitmq-subscriber.service.js +84 -9
  197. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  198. package/dist/services/request-context.service.d.ts +2 -1
  199. package/dist/services/request-context.service.d.ts.map +1 -1
  200. package/dist/services/request-context.service.js.map +1 -1
  201. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  202. package/dist/services/scheduled-jobs/scheduler.service.js +20 -2
  203. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  204. package/dist/services/solid-introspect.service.d.ts +6 -1
  205. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  206. package/dist/services/solid-introspect.service.js +27 -2
  207. package/dist/services/solid-introspect.service.js.map +1 -1
  208. package/dist/services/solid-ts-morph.service.d.ts +9 -0
  209. package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
  210. package/dist/services/solid-ts-morph.service.js +76 -0
  211. package/dist/services/solid-ts-morph.service.js.map +1 -1
  212. package/dist/solid-core.module.d.ts.map +1 -1
  213. package/dist/solid-core.module.js +16 -0
  214. package/dist/solid-core.module.js.map +1 -1
  215. package/dist/subscribers/audit.subscriber.d.ts +10 -7
  216. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  217. package/dist/subscribers/audit.subscriber.js +58 -85
  218. package/dist/subscribers/audit.subscriber.js.map +1 -1
  219. package/dist/subscribers/computed-entity-field.subscriber.js +3 -1
  220. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  221. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +0 -1
  222. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
  223. package/dist/subscribers/created-by-updated-by.subscriber.js +3 -13
  224. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
  225. package/dist/winston.logger.d.ts.map +1 -1
  226. package/dist/winston.logger.js +2 -1
  227. package/dist/winston.logger.js.map +1 -1
  228. package/package.json +3 -1
  229. package/sql/default/mariadb/proc_CleanupModelMetadata.sql +153 -0
  230. package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +56 -0
  231. package/sql/default/mysql/proc_CleanupModelMetadata.sql +153 -0
  232. package/sql/default/mysql/proc_CleanupModuleMetadata.sql +56 -0
  233. package/src/controllers/dashboard-layout.controller.ts +106 -0
  234. package/src/dtos/create-dashboard-layout.dto.ts +31 -0
  235. package/src/dtos/create-dashboard-variable.dto.ts +4 -0
  236. package/src/dtos/update-dashboard-layout.dto.ts +30 -0
  237. package/src/dtos/update-dashboard-variable.dto.ts +5 -1
  238. package/src/entities/action-metadata.entity.ts +3 -2
  239. package/src/entities/ai-interaction.entity.ts +5 -4
  240. package/src/entities/chatter-message-details.entity.ts +4 -3
  241. package/src/entities/chatter-message.entity.ts +4 -3
  242. package/src/entities/dashboard-layout.entity.ts +18 -0
  243. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +5 -4
  244. package/src/entities/dashboard-question.entity.ts +5 -4
  245. package/src/entities/dashboard-variable.entity.ts +9 -4
  246. package/src/entities/dashboard.entity.ts +7 -2
  247. package/src/entities/email-attachment.entity.ts +2 -1
  248. package/src/entities/email-template.entity.ts +1 -1
  249. package/src/entities/export-transaction.entity.ts +2 -1
  250. package/src/entities/field-metadata.entity.ts +2 -2
  251. package/src/entities/import-transaction-error-log.entity.ts +3 -2
  252. package/src/entities/import-transaction.entity.ts +2 -1
  253. package/src/entities/mq-message-queue.entity.ts +8 -8
  254. package/src/entities/mq-message.entity.ts +5 -3
  255. package/src/entities/saved-filters.entity.ts +3 -2
  256. package/src/entities/security-rule.entity.ts +2 -1
  257. package/src/entities/sms-template.entity.ts +1 -1
  258. package/src/entities/user-view-metadata.entity.ts +2 -1
  259. package/src/entities/user.entity.ts +37 -2
  260. package/src/entities/view-metadata.entity.ts +3 -0
  261. package/src/helpers/bootstrap.helper.ts +222 -0
  262. package/src/helpers/cache.helper.ts +5 -0
  263. package/src/helpers/cors.helper.ts +26 -6
  264. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +9 -9
  265. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +9 -6
  266. package/src/helpers/solid-registry.ts +10 -5
  267. package/src/helpers/typeorm-db-helper.ts +26 -0
  268. package/src/index.ts +3 -0
  269. package/src/interfaces.ts +3 -0
  270. package/src/jobs/chatter-queue-options.ts +1 -1
  271. package/src/jobs/chatter-queue-publisher.service.ts +11 -11
  272. package/src/jobs/chatter-queue-subscriber.service.ts +13 -8
  273. package/src/jobs/computed-field-evaluation-queue-options.ts +2 -0
  274. package/src/jobs/database/chatter-queue-options-database.ts +9 -0
  275. package/src/jobs/database/chatter-queue-publisher-database.service.ts +24 -0
  276. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +53 -0
  277. package/src/repository/dashboard-layout.repository.ts +17 -0
  278. package/src/repository/model-metadata.repository.ts +45 -2
  279. package/src/seeders/module-metadata-seeder.service.ts +5 -5
  280. package/src/seeders/seed-data/solid-core-metadata.json +373 -33
  281. package/src/services/1.js +6 -0
  282. package/src/services/chatter-message.service.ts +41 -9
  283. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +79 -40
  284. package/src/services/crud.service.ts +1 -1
  285. package/src/services/dashboard-layout.service.ts +111 -0
  286. package/src/services/dashboard.service.ts +7 -0
  287. package/src/services/model-metadata.service.ts +22 -43
  288. package/src/services/permission-metadata.service.ts +73 -20
  289. package/src/services/queues/database-subscriber.service.ts +7 -1
  290. package/src/services/queues/publisher-factory.service.ts +1 -1
  291. package/src/services/queues/rabbitmq-publisher.service.ts +8 -2
  292. package/src/services/queues/rabbitmq-subscriber.service.ts +127 -10
  293. package/src/services/request-context.service.ts +2 -1
  294. package/src/services/scheduled-jobs/scheduler.service.ts +22 -4
  295. package/src/services/solid-introspect.service.ts +28 -0
  296. package/src/services/solid-ts-morph.service.ts +98 -0
  297. package/src/solid-core.module.ts +21 -2
  298. package/src/subscribers/audit.subscriber.ts +63 -271
  299. package/src/subscribers/computed-entity-field.subscriber.ts +3 -3
  300. package/src/subscribers/created-by-updated-by.subscriber.ts +22 -16
  301. package/src/winston.logger.ts +2 -1
  302. package/dist-tests/api/authenticate.spec.js +0 -119
  303. package/dist-tests/api/authenticate.spec.js.map +0 -1
  304. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  305. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  306. package/dist-tests/api/ping.spec.js +0 -21
  307. package/dist-tests/api/ping.spec.js.map +0 -1
  308. package/dist-tests/helpers/auth.js +0 -41
  309. package/dist-tests/helpers/auth.js.map +0 -1
  310. package/dist-tests/helpers/env.js +0 -11
  311. package/dist-tests/helpers/env.js.map +0 -1
@@ -4410,7 +4410,7 @@
4410
4410
  "dataSource": "default",
4411
4411
  "dataSourceType": "postgres",
4412
4412
  "tableName": "ss_dashboard_variable",
4413
- "userKeyFieldUserKey": "variableName",
4413
+ "userKeyFieldUserKey": "externalId",
4414
4414
  "fields": [
4415
4415
  {
4416
4416
  "name": "variableName",
@@ -4419,12 +4419,12 @@
4419
4419
  "ormType": "varchar",
4420
4420
  "length": 256,
4421
4421
  "required": true,
4422
- "unique": true,
4422
+ "unique": false,
4423
4423
  "index": true,
4424
4424
  "private": false,
4425
4425
  "encrypt": false,
4426
4426
  "isSystem": true,
4427
- "isUserKey": true
4427
+ "isUserKey": false
4428
4428
  },
4429
4429
  {
4430
4430
  "name": "variableType",
@@ -4576,6 +4576,35 @@
4576
4576
  "$gte:Greater Than or Equal To"
4577
4577
  ],
4578
4578
  "description": "This is the default operator for this variable when it is rendered at runtime. It can be a static value for this variable when it is rendered at runtime."
4579
+ },
4580
+ {
4581
+ "name": "externalId",
4582
+ "displayName": "Dashboard Variable User KExternal IDey",
4583
+ "description": "Concatenation of variable name and dashboard name",
4584
+ "type": "computed",
4585
+ "ormType": "varchar",
4586
+ "isSystem": false,
4587
+ "computedFieldValueType": "string",
4588
+ "computedFieldTriggerConfig": [
4589
+ {
4590
+ "modelName": "dashboardVariable",
4591
+ "moduleName": "solid-core",
4592
+ "operations": [
4593
+ "before-insert"
4594
+ ]
4595
+ }
4596
+ ],
4597
+ "computedFieldValueProvider": "ConcatEntityComputedFieldProvider",
4598
+ "computedFieldValueProviderCtxt": "{\n \"fields\": [\n \"variableName\",\n \"dashboard.name\"\n ],\n \"separator\": \"-\",\n \"slugify\": true\n}",
4599
+ "required": false,
4600
+ "unique": true,
4601
+ "index": true,
4602
+ "private": false,
4603
+ "encrypt": false,
4604
+ "encryptionType": null,
4605
+ "decryptWhen": null,
4606
+ "columnName": null,
4607
+ "isUserKey": true
4579
4608
  }
4580
4609
  ]
4581
4610
  },
@@ -4587,7 +4616,7 @@
4587
4616
  "dataSource": "default",
4588
4617
  "dataSourceType": "postgres",
4589
4618
  "tableName": "ss_dashboard_question",
4590
- "userKeyFieldUserKey": "name",
4619
+ "userKeyFieldUserKey": "externalId",
4591
4620
  "fields": [
4592
4621
  {
4593
4622
  "name": "name",
@@ -4596,8 +4625,8 @@
4596
4625
  "ormType": "varchar",
4597
4626
  "length": 256,
4598
4627
  "required": true,
4599
- "unique": true,
4600
- "index": true,
4628
+ "unique": false,
4629
+ "index": false,
4601
4630
  "private": false,
4602
4631
  "encrypt": false,
4603
4632
  "isSystem": true,
@@ -4746,27 +4775,31 @@
4746
4775
  {
4747
4776
  "name": "externalId",
4748
4777
  "displayName": "External ID",
4778
+ "description": "Concatenation of question name and dashboard name",
4749
4779
  "type": "computed",
4750
4780
  "ormType": "varchar",
4751
- "length": 128,
4752
- "required": false,
4753
- "unique": true,
4754
- "index": true,
4755
- "private": false,
4756
- "encrypt": false,
4757
- "isSystem": true,
4781
+ "isSystem": false,
4758
4782
  "computedFieldValueType": "string",
4759
- "computedFieldValueProvider": "AlphaNumExternalIdComputationProvider",
4760
- "computedFieldValueProviderCtxt": "{\"prefix\": \"DQ\"}",
4761
4783
  "computedFieldTriggerConfig": [
4762
4784
  {
4763
4785
  "modelName": "dashboardQuestion",
4764
- "moduleName": "fees-portal",
4786
+ "moduleName": "solid-core",
4765
4787
  "operations": [
4766
4788
  "before-insert"
4767
4789
  ]
4768
4790
  }
4769
- ]
4791
+ ],
4792
+ "computedFieldValueProvider": "ConcatEntityComputedFieldProvider",
4793
+ "computedFieldValueProviderCtxt": "{\n \"fields\": [\n \"name\",\n \"dashboard.name\"\n ],\n \"separator\": \"-\",\n \"slugify\": true\n}",
4794
+ "required": false,
4795
+ "unique": true,
4796
+ "index": true,
4797
+ "private": false,
4798
+ "encrypt": false,
4799
+ "encryptionType": null,
4800
+ "decryptWhen": null,
4801
+ "columnName": null,
4802
+ "isUserKey": true
4770
4803
  }
4771
4804
  ]
4772
4805
  },
@@ -4778,7 +4811,7 @@
4778
4811
  "dataSource": "default",
4779
4812
  "dataSourceType": "postgres",
4780
4813
  "tableName": "ss_dashboard_question_sql_dataset_config",
4781
- "userKeyFieldUserKey": "datasetName",
4814
+ "userKeyFieldUserKey": "externalId",
4782
4815
  "fields": [
4783
4816
  {
4784
4817
  "name": "datasetName",
@@ -4787,7 +4820,7 @@
4787
4820
  "ormType": "varchar",
4788
4821
  "length": 256,
4789
4822
  "required": true,
4790
- "unique": true,
4823
+ "unique": false,
4791
4824
  "index": false,
4792
4825
  "private": false,
4793
4826
  "encrypt": false,
@@ -4893,27 +4926,100 @@
4893
4926
  {
4894
4927
  "name": "externalId",
4895
4928
  "displayName": "External ID",
4929
+ "description": "Concatenation of dataset name, question name and dashboard name",
4896
4930
  "type": "computed",
4897
4931
  "ormType": "varchar",
4898
- "length": 128,
4899
- "required": false,
4900
- "unique": true,
4901
- "index": true,
4902
- "private": false,
4903
- "encrypt": false,
4904
- "isSystem": true,
4932
+ "isSystem": false,
4905
4933
  "computedFieldValueType": "string",
4906
- "computedFieldValueProvider": "AlphaNumExternalIdComputationProvider",
4907
- "computedFieldValueProviderCtxt": "{\"prefix\": \"DQSDC\"}",
4908
4934
  "computedFieldTriggerConfig": [
4909
4935
  {
4910
4936
  "modelName": "dashboardQuestionSqlDatasetConfig",
4911
- "moduleName": "fees-portal",
4937
+ "moduleName": "solid-core",
4912
4938
  "operations": [
4913
4939
  "before-insert"
4914
4940
  ]
4915
4941
  }
4916
- ]
4942
+ ],
4943
+ "computedFieldValueProvider": "ConcatEntityComputedFieldProvider",
4944
+ "computedFieldValueProviderCtxt": "{\n \"fields\": [\n \"datasetName\",\n \"question.name\",\n \"question.dashboard.name\"\n ],\n \"separator\": \"-\",\n \"slugify\": true\n}",
4945
+ "required": false,
4946
+ "unique": true,
4947
+ "index": true,
4948
+ "private": false,
4949
+ "encrypt": false,
4950
+ "encryptionType": null,
4951
+ "decryptWhen": null,
4952
+ "columnName": null,
4953
+ "isUserKey": true
4954
+ }
4955
+ ]
4956
+ },
4957
+ {
4958
+ "singularName": "dashboardLayout",
4959
+ "pluralName": "dashboardLayouts",
4960
+ "displayName": "Dashboard Layout",
4961
+ "description": "This is used to maintain dashboard layouts",
4962
+ "dataSource": "default",
4963
+ "dataSourceType": "postgres",
4964
+ "tableName": "ss_dashboard_layout",
4965
+ "userKeyFieldUserKey": "externalId",
4966
+ "fields": [
4967
+ {
4968
+ "name": "layout",
4969
+ "displayName": "Layout",
4970
+ "type": "longText",
4971
+ "ormType": "text",
4972
+ "required": false,
4973
+ "unique": false,
4974
+ "index": false,
4975
+ "private": false,
4976
+ "encrypt": false,
4977
+ "isSystem": true,
4978
+ "description": "This stores the dashboard layout"
4979
+ },
4980
+ {
4981
+ "name": "dashboard",
4982
+ "displayName": "Dashboard",
4983
+ "description": "Related Dashboard Model",
4984
+ "type": "relation",
4985
+ "ormType": "integer",
4986
+ "isSystem": true,
4987
+ "relationType": "many-to-one",
4988
+ "relationCoModelFieldName": "dashboardLayouts",
4989
+ "relationCreateInverse": true,
4990
+ "relationCoModelSingularName": "dashboard",
4991
+ "relationModelModuleName": "solid-core",
4992
+ "relationCascade": "cascade",
4993
+ "required": false,
4994
+ "unique": false,
4995
+ "index": false,
4996
+ "private": false,
4997
+ "encrypt": false
4998
+ },
4999
+ {
5000
+ "name": "user",
5001
+ "displayName": "User",
5002
+ "description": null,
5003
+ "type": "relation",
5004
+ "ormType": "integer",
5005
+ "isSystem": false,
5006
+ "relationType": "many-to-one",
5007
+ "relationCoModelFieldName": null,
5008
+ "relationCreateInverse": false,
5009
+ "relationCoModelSingularName": "user",
5010
+ "relationCoModelColumnName": "",
5011
+ "relationModelModuleName": "solid-core",
5012
+ "relationCascade": "cascade",
5013
+ "required": false,
5014
+ "unique": false,
5015
+ "index": false,
5016
+ "private": false,
5017
+ "encrypt": false,
5018
+ "encryptionType": null,
5019
+ "decryptWhen": null,
5020
+ "columnName": null,
5021
+ "relationJoinTableName": "",
5022
+ "isRelationManyToManyOwner": null
4917
5023
  }
4918
5024
  ]
4919
5025
  },
@@ -5629,6 +5735,19 @@
5629
5735
  "moduleUserKey": "solid-core",
5630
5736
  "modelUserKey": "mqMessage"
5631
5737
  },
5738
+ {
5739
+ "displayName": "Message Tree Action",
5740
+ "name": "mqMessage-tree-action",
5741
+ "type": "solid",
5742
+ "domain": "",
5743
+ "context": "",
5744
+ "customComponent": "",
5745
+ "customIsModal": true,
5746
+ "serverEndpoint": "",
5747
+ "viewUserKey": "mqMessage-tree-view",
5748
+ "moduleUserKey": "solid-core",
5749
+ "modelUserKey": "mqMessage"
5750
+ },
5632
5751
  {
5633
5752
  "displayName": "Queues List Action",
5634
5753
  "name": "mqMessageQueue-list-action",
@@ -5850,6 +5969,19 @@
5850
5969
  "moduleUserKey": "solid-core",
5851
5970
  "modelUserKey": "dashboardQuestion"
5852
5971
  },
5972
+ {
5973
+ "displayName": "Dashboard Layout List Action",
5974
+ "name": "dashboardLayout-list-action",
5975
+ "type": "solid",
5976
+ "domain": "",
5977
+ "context": "",
5978
+ "customComponent": "",
5979
+ "customIsModal": true,
5980
+ "serverEndpoint": "",
5981
+ "viewUserKey": "dashboardLayout-list-view",
5982
+ "moduleUserKey": "solid-core",
5983
+ "modelUserKey": "dashboardLayout"
5984
+ },
5853
5985
  {
5854
5986
  "displayName": "Dashboard Question SQL Dataset Config List Action",
5855
5987
  "name": "dashboardQuestionSqlDatasetConfig-list-action",
@@ -6208,6 +6340,14 @@
6208
6340
  "moduleUserKey": "solid-core",
6209
6341
  "parentMenuItemUserKey": "dashboardManagement-menu-item"
6210
6342
  },
6343
+ {
6344
+ "displayName": "Dashboard Layout",
6345
+ "name": "dashboardLayout-menu-item",
6346
+ "sequenceNumber": 3,
6347
+ "actionUserKey": "dashboardLayout-list-action",
6348
+ "moduleUserKey": "solid-core",
6349
+ "parentMenuItemUserKey": "dashboardManagement-menu-item"
6350
+ },
6211
6351
  {
6212
6352
  "displayName": "Settings",
6213
6353
  "name": "settings-menu-item",
@@ -9678,6 +9818,95 @@
9678
9818
  ]
9679
9819
  }
9680
9820
  },
9821
+ {
9822
+ "name": "mqMessage-tree-view",
9823
+ "displayName": "Messages Tree View",
9824
+ "type": "tree",
9825
+ "context": "{}",
9826
+ "moduleUserKey": "solid-core",
9827
+ "modelUserKey": "mqMessage",
9828
+ "layout": {
9829
+ "type": "tree",
9830
+ "attrs": {
9831
+ "pagination": true,
9832
+ "pageSizeOptions": [
9833
+ 10,
9834
+ 25,
9835
+ 50
9836
+ ],
9837
+ "enableGlobalSearch": true,
9838
+ "create": false,
9839
+ "edit": false,
9840
+ "delete": false
9841
+ },
9842
+ "children": [
9843
+ {
9844
+ "type": "field",
9845
+ "attrs": {
9846
+ "name": "messageId",
9847
+ "isSearchable": true
9848
+ }
9849
+ },
9850
+ {
9851
+ "type": "field",
9852
+ "attrs": {
9853
+ "name": "messageBroker",
9854
+ "isSearchable": true
9855
+ }
9856
+ },
9857
+ {
9858
+ "type": "field",
9859
+ "attrs": {
9860
+ "name": "stage",
9861
+ "isSearchable": true
9862
+ }
9863
+ },
9864
+ {
9865
+ "type": "field",
9866
+ "attrs": {
9867
+ "name": "startedAt",
9868
+ "isSearchable": true
9869
+ }
9870
+ },
9871
+ {
9872
+ "type": "field",
9873
+ "attrs": {
9874
+ "name": "finishedAt",
9875
+ "isSearchable": true
9876
+ }
9877
+ },
9878
+ {
9879
+ "type": "field",
9880
+ "attrs": {
9881
+ "name": "elapsedMillis",
9882
+ "isSearchable": true
9883
+ }
9884
+ },
9885
+ {
9886
+ "type": "field",
9887
+ "attrs": {
9888
+ "name": "parentEntityId",
9889
+ "isSearchable": true
9890
+ }
9891
+ },
9892
+ {
9893
+ "type": "field",
9894
+ "attrs": {
9895
+ "name": "parentEntity",
9896
+ "isSearchable": true
9897
+ }
9898
+ },
9899
+ {
9900
+ "type": "field",
9901
+ "attrs": {
9902
+ "name": "mqMessageQueue",
9903
+ "label": "Queue",
9904
+ "isSearchable": true
9905
+ }
9906
+ }
9907
+ ]
9908
+ }
9909
+ },
9681
9910
  {
9682
9911
  "name": "mqMessage-form-view",
9683
9912
  "displayName": "Mq Message",
@@ -11722,6 +11951,8 @@
11722
11951
  "label": "Dashboard Question",
11723
11952
  "className": "grid"
11724
11953
  },
11954
+ "onFieldChange": "dashboardQuestionFieldChangeHandler",
11955
+ "onFormLoad": "dashboardQuestionOnFormLoadHandler",
11725
11956
  "children": [
11726
11957
  {
11727
11958
  "type": "sheet",
@@ -11799,13 +12030,17 @@
11799
12030
  {
11800
12031
  "type": "field",
11801
12032
  "attrs": {
11802
- "name": "labelSql"
12033
+ "name": "labelSql",
12034
+ "editWidget": "codeEditor",
12035
+ "editorLanguage": "sql"
11803
12036
  }
11804
12037
  },
11805
12038
  {
11806
12039
  "type": "field",
11807
12040
  "attrs": {
11808
- "name": "kpiSql"
12041
+ "name": "kpiSql",
12042
+ "editWidget": "codeEditor",
12043
+ "editorLanguage": "sql"
11809
12044
  }
11810
12045
  },
11811
12046
  {
@@ -12057,6 +12292,111 @@
12057
12292
  ]
12058
12293
  }
12059
12294
  },
12295
+ {
12296
+ "name": "dashboardLayout-list-view",
12297
+ "displayName": "Dashboard Layout",
12298
+ "type": "list",
12299
+ "context": "{}",
12300
+ "moduleUserKey": "solid-core",
12301
+ "modelUserKey": "dashboardLayout",
12302
+ "layout": {
12303
+ "type": "list",
12304
+ "attrs": {
12305
+ "pagination": true,
12306
+ "pageSizeOptions": [
12307
+ 10,
12308
+ 25,
12309
+ 50
12310
+ ],
12311
+ "enableGlobalSearch": true,
12312
+ "create": true,
12313
+ "edit": true,
12314
+ "delete": true
12315
+ },
12316
+ "children": [
12317
+ {
12318
+ "type": "field",
12319
+ "attrs": {
12320
+ "name": "id"
12321
+ }
12322
+ },
12323
+ {
12324
+ "type": "field",
12325
+ "attrs": {
12326
+ "name": "dashboard"
12327
+ }
12328
+ },
12329
+ {
12330
+ "type": "field",
12331
+ "attrs": {
12332
+ "name": "user"
12333
+ }
12334
+ }
12335
+ ]
12336
+ }
12337
+ },
12338
+ {
12339
+ "name": "dashboardLayout-form-view",
12340
+ "displayName": "Dashboard Layout",
12341
+ "type": "form",
12342
+ "context": "{}",
12343
+ "moduleUserKey": "solid-core",
12344
+ "modelUserKey": "dashboardLayout",
12345
+ "layout": {
12346
+ "type": "form",
12347
+ "attrs": {
12348
+ "name": "form-1",
12349
+ "label": "Dashboard Layout",
12350
+ "className": "grid"
12351
+ },
12352
+ "children": [
12353
+ {
12354
+ "type": "sheet",
12355
+ "attrs": {
12356
+ "name": "sheet-1"
12357
+ },
12358
+ "children": [
12359
+ {
12360
+ "type": "row",
12361
+ "attrs": {
12362
+ "name": "sheet-1"
12363
+ },
12364
+ "children": [
12365
+ {
12366
+ "type": "column",
12367
+ "attrs": {
12368
+ "name": "group-1",
12369
+ "label": "",
12370
+ "className": "col-12"
12371
+ },
12372
+ "children": [
12373
+ {
12374
+ "type": "field",
12375
+ "attrs": {
12376
+ "name": "layout"
12377
+ }
12378
+ },
12379
+ {
12380
+ "type": "field",
12381
+ "attrs": {
12382
+ "name": "dashboard"
12383
+ }
12384
+ },
12385
+ {
12386
+ "type": "field",
12387
+ "attrs": {
12388
+ "name": "user"
12389
+ }
12390
+ }
12391
+ ]
12392
+ }
12393
+ ]
12394
+ }
12395
+ ]
12396
+ }
12397
+ ]
12398
+ }
12399
+ },
12060
12400
  {
12061
12401
  "name": "aiInteraction-list-view",
12062
12402
  "displayName": "AI Interaction",
@@ -12779,4 +13119,4 @@
12779
13119
  }
12780
13120
  ],
12781
13121
  "modelSequences": []
12782
- }
13122
+ }
@@ -0,0 +1,6 @@
1
+ 1. Do i need to create a storeStreams method for aws service too?
2
+ - Handle later
3
+ 2. queues handling -> if queues is enabled by default, i.e triggerExport(exportTransactionEntity.id).
4
+ - startExport should either return the data or return the transaction id
5
+ 3. How to handle scenarios wherein, nested related exist.(do i need to only get the userkey)
6
+ - show the userKey
@@ -90,13 +90,13 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
90
90
  return savedMessage;
91
91
  }
92
92
 
93
- async postAuditMessageOnInsert(entity: any, metadata: EntityMetadata, messageQueue: boolean = false) {
93
+ async postAuditMessageOnInsert(entity: any, modelName: string, messageQueue: boolean = false) {
94
94
  if (!entity) {
95
95
  return;
96
96
  }
97
97
  const model = await this.modelMetadataRepo.findOne({
98
98
  where: {
99
- singularName: lowerFirst(metadata.name)
99
+ singularName: lowerFirst(modelName)
100
100
  },
101
101
  relations: {
102
102
  fields: true,
@@ -152,13 +152,13 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
152
152
  }
153
153
  }
154
154
 
155
- async postAuditMessageOnUpdate(entity: any, metadata: EntityMetadata, databaseEntity: any, updatedColumns: any[] = [], messageQueue: boolean = false) {
155
+ async postAuditMessageOnUpdate(entity: any, modelName: string, databaseEntity: any, updatedColumns: any[] = [], messageQueue: boolean = false) {
156
156
  if (!databaseEntity || !entity) {
157
157
  return;
158
158
  }
159
159
  const model = await this.modelMetadataRepo.findOne({
160
160
  where: {
161
- singularName: lowerFirst(metadata.name)
161
+ singularName: lowerFirst(modelName)
162
162
  },
163
163
  relations: {
164
164
  fields: true,
@@ -204,6 +204,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
204
204
 
205
205
  const changedRelationFields = [];
206
206
  if (potentialRelationFields.length > 0) {
207
+ const metadata = this.entityManager.connection.entityMetadatas.find(m => m.name === modelName);
207
208
  const populatedOldEntity = await this.populateRelationFields(databaseEntity, potentialRelationFields, metadata);
208
209
 
209
210
  for (const field of potentialRelationFields) {
@@ -268,13 +269,12 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
268
269
  }
269
270
  }
270
271
 
271
- async postAuditMessageOnDelete(entity: any, metadata: EntityMetadata, databaseEntity: any, messageQueue: boolean = false) {
272
+ async postAuditMessageOnDelete(modelName: string, databaseEntity: any, messageQueue: boolean = false) {
272
273
  const model = await this.modelMetadataRepo.findOne({
273
274
  where: {
274
- singularName: lowerFirst(metadata.name)
275
+ singularName: lowerFirst(modelName)
275
276
  },
276
277
  relations: {
277
- fields: true,
278
278
  module: true,
279
279
  userKeyField: true
280
280
  }
@@ -284,13 +284,29 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
284
284
  return;
285
285
  }
286
286
 
287
+ const modelFields = await this.modelMetadataHelperService.loadFieldHierarchy(model.singularName);
288
+
289
+ const auditFields = modelFields.filter(field =>
290
+ field.enableAuditTracking &&
291
+ !['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
292
+ !(field.type === 'relation' && field.relationType === 'one-to-many')
293
+ );
294
+
295
+ // Populate relation fields so display values (e.g. names) are resolvable.
296
+ // The related entities themselves still exist in the DB after a delete.
297
+ const relationFields = auditFields.filter(field => field.type === 'relation');
298
+ const entityMetadata = this.entityManager.connection.entityMetadatas.find(m => m.name === modelName);
299
+ const populatedEntity = relationFields.length > 0 && entityMetadata
300
+ ? await this.populateRelationFields(databaseEntity, relationFields, entityMetadata)
301
+ : { ...databaseEntity };
302
+
287
303
  const chatterMessage = new ChatterMessage();
288
304
  chatterMessage.messageType = CHATTER_MESSAGE_TYPE.AUDIT;
289
305
  chatterMessage.messageSubType = CHATTER_MESSAGE_SUBTYPE.AUDIT_DELETE;
290
306
  chatterMessage.coModelEntityId = databaseEntity?.id;
291
307
  chatterMessage.coModelName = model?.singularName;
292
308
  chatterMessage.modelDisplayName = model?.displayName;
293
- chatterMessage.modelUserKey = entity[model?.userKeyField?.name];
309
+ chatterMessage.modelUserKey = databaseEntity[model?.userKeyField?.name];
294
310
  chatterMessage.messageBody = `${model?.displayName} deleted`;
295
311
 
296
312
  const activeUser = this.requestContextService.getActiveUser();
@@ -302,7 +318,23 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
302
318
  chatterMessage.user = null;
303
319
  }
304
320
 
305
- await this.repo.save(chatterMessage);
321
+ const savedMessage = await this.repo.save(chatterMessage);
322
+
323
+ for (const field of auditFields) {
324
+ const fieldValue = populatedEntity[field.name];
325
+ if (fieldValue !== undefined && fieldValue !== null && fieldValue !== '') {
326
+ const messageDetail = new ChatterMessageDetails();
327
+ messageDetail.chatterMessage = savedMessage;
328
+ messageDetail.fieldName = field.name;
329
+ messageDetail.fieldDisplayName = field.displayName;
330
+ messageDetail.fieldType = field.type;
331
+ messageDetail.oldValue = this.formatFieldValue(field, fieldValue);
332
+ messageDetail.oldValueDisplay = await this.formatFieldValueDisplay(field, fieldValue);
333
+ messageDetail.newValue = null;
334
+ messageDetail.newValueDisplay = null;
335
+ await this.chatterMessageDetailsRepo.save(messageDetail);
336
+ }
337
+ }
306
338
  }
307
339
 
308
340
  private formatFieldValue(field: any, value: any): string {