@solidxai/core 0.1.10-beta.21 → 0.1.10-beta.23

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 (476) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CLAUDE.md +18 -0
  3. package/CURRENT_PROMPT +6 -0
  4. package/dist/commands/info.command.d.ts.map +1 -1
  5. package/dist/commands/info.command.js +0 -2
  6. package/dist/commands/info.command.js.map +1 -1
  7. package/dist/controllers/dashboard-user-layout.controller.d.ts +43 -0
  8. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -0
  9. package/dist/controllers/{dashboard-variable.controller.js → dashboard-user-layout.controller.js} +30 -30
  10. package/dist/controllers/dashboard-user-layout.controller.js.map +1 -0
  11. package/dist/controllers/dashboard.controller.d.ts +12 -42
  12. package/dist/controllers/dashboard.controller.d.ts.map +1 -1
  13. package/dist/controllers/dashboard.controller.js +71 -141
  14. package/dist/controllers/dashboard.controller.js.map +1 -1
  15. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts +3 -0
  16. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts.map +1 -0
  17. package/dist/decorators/dashboard-widget-data-provider.decorator.js +8 -0
  18. package/dist/decorators/dashboard-widget-data-provider.decorator.js.map +1 -0
  19. package/dist/dtos/create-dashboard-user-layout.dto.d.ts +10 -0
  20. package/dist/dtos/create-dashboard-user-layout.dto.d.ts.map +1 -0
  21. package/dist/dtos/create-dashboard-user-layout.dto.js +66 -0
  22. package/dist/dtos/create-dashboard-user-layout.dto.js.map +1 -0
  23. package/dist/dtos/dashboard-variable-options-query.dto.d.ts +7 -0
  24. package/dist/dtos/dashboard-variable-options-query.dto.d.ts.map +1 -0
  25. package/dist/dtos/dashboard-variable-options-query.dto.js +40 -0
  26. package/dist/dtos/dashboard-variable-options-query.dto.js.map +1 -0
  27. package/dist/dtos/dashboard-widget-data-request.dto.d.ts +12 -0
  28. package/dist/dtos/dashboard-widget-data-request.dto.d.ts.map +1 -0
  29. package/dist/dtos/dashboard-widget-data-request.dto.js +65 -0
  30. package/dist/dtos/dashboard-widget-data-request.dto.js.map +1 -0
  31. package/dist/dtos/update-dashboard-user-layout.dto.d.ts +11 -0
  32. package/dist/dtos/update-dashboard-user-layout.dto.d.ts.map +1 -0
  33. package/dist/dtos/{update-dashboard-layout.dto.js → update-dashboard-user-layout.dto.js} +34 -16
  34. package/dist/dtos/update-dashboard-user-layout.dto.js.map +1 -0
  35. package/dist/entities/dashboard-user-layout.entity.d.ts +11 -0
  36. package/dist/entities/dashboard-user-layout.entity.d.ts.map +1 -0
  37. package/dist/entities/dashboard-user-layout.entity.js +52 -0
  38. package/dist/entities/dashboard-user-layout.entity.js.map +1 -0
  39. package/dist/helpers/bootstrap.helper.js +1 -1
  40. package/dist/helpers/bootstrap.helper.js.map +1 -1
  41. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  42. package/dist/helpers/module-metadata-helper.service.js +15 -4
  43. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  44. package/dist/helpers/solid-registry.d.ts +5 -9
  45. package/dist/helpers/solid-registry.d.ts.map +1 -1
  46. package/dist/helpers/solid-registry.js +13 -28
  47. package/dist/helpers/solid-registry.js.map +1 -1
  48. package/dist/index.d.ts +21 -5
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +21 -5
  51. package/dist/index.js.map +1 -1
  52. package/dist/interfaces.d.ts +24 -13
  53. package/dist/interfaces.d.ts.map +1 -1
  54. package/dist/interfaces.js.map +1 -1
  55. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +1 -3
  56. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  57. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -25
  58. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  59. package/dist/{repository/dashboard-layout.repository.d.ts → repositories/dashboard-user-layout.repository.d.ts} +5 -5
  60. package/dist/repositories/dashboard-user-layout.repository.d.ts.map +1 -0
  61. package/dist/{repository/dashboard-layout.repository.js → repositories/dashboard-user-layout.repository.js} +15 -10
  62. package/dist/repositories/dashboard-user-layout.repository.js.map +1 -0
  63. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -6
  64. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  65. package/dist/seeders/module-metadata-seeder.service.js +1 -60
  66. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  67. package/dist/seeders/seed-data/solid-core-metadata.json +6236 -6645
  68. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts +13 -0
  69. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts.map +1 -0
  70. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js +55 -0
  71. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js.map +1 -0
  72. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts +13 -0
  73. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts.map +1 -0
  74. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js +52 -0
  75. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js.map +1 -0
  76. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts +13 -0
  77. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts.map +1 -0
  78. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js +52 -0
  79. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js.map +1 -0
  80. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts +10 -0
  81. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts.map +1 -0
  82. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js +62 -0
  83. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js.map +1 -0
  84. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts +10 -0
  85. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts.map +1 -0
  86. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js +82 -0
  87. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js.map +1 -0
  88. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts +17 -0
  89. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts.map +1 -0
  90. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js +130 -0
  91. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js.map +1 -0
  92. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts +37 -0
  93. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts.map +1 -0
  94. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js +112 -0
  95. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js.map +1 -0
  96. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts +10 -0
  97. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts.map +1 -0
  98. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js +57 -0
  99. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js.map +1 -0
  100. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts +10 -0
  101. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts.map +1 -0
  102. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js +57 -0
  103. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js.map +1 -0
  104. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts +10 -0
  105. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts.map +1 -0
  106. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js +100 -0
  107. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js.map +1 -0
  108. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts +10 -0
  109. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts.map +1 -0
  110. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js +55 -0
  111. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js.map +1 -0
  112. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts +13 -0
  113. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts.map +1 -0
  114. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js +52 -0
  115. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js.map +1 -0
  116. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts +15 -0
  117. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts.map +1 -0
  118. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js +60 -0
  119. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js.map +1 -0
  120. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts +13 -0
  121. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts.map +1 -0
  122. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js +51 -0
  123. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js.map +1 -0
  124. package/dist/services/dashboard-runtime.service.d.ts +31 -0
  125. package/dist/services/dashboard-runtime.service.d.ts.map +1 -0
  126. package/dist/services/dashboard-runtime.service.js +408 -0
  127. package/dist/services/dashboard-runtime.service.js.map +1 -0
  128. package/dist/services/dashboard-user-layout.service.d.ts +12 -0
  129. package/dist/services/dashboard-user-layout.service.d.ts.map +1 -0
  130. package/dist/services/{dashboard-variable.service.js → dashboard-user-layout.service.js} +11 -12
  131. package/dist/services/dashboard-user-layout.service.js.map +1 -0
  132. package/dist/services/module-metadata.service.js +1 -1
  133. package/dist/services/module-metadata.service.js.map +1 -1
  134. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts +11 -0
  135. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts.map +1 -0
  136. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js +59 -0
  137. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js.map +1 -0
  138. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts +11 -0
  139. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts.map +1 -0
  140. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js +60 -0
  141. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js.map +1 -0
  142. package/dist/services/solid-introspect.service.d.ts +1 -2
  143. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  144. package/dist/services/solid-introspect.service.js +12 -24
  145. package/dist/services/solid-introspect.service.js.map +1 -1
  146. package/dist/solid-core.module.d.ts.map +1 -1
  147. package/dist/solid-core.module.js +43 -66
  148. package/dist/solid-core.module.js.map +1 -1
  149. package/dist/testing/adapters/ui/playwright-adapter.d.ts +1 -0
  150. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  151. package/dist/testing/adapters/ui/playwright-adapter.js +3 -0
  152. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  153. package/dist/testing/steps/ui/index.d.ts.map +1 -1
  154. package/dist/testing/steps/ui/index.js +2 -0
  155. package/dist/testing/steps/ui/index.js.map +1 -1
  156. package/dist/testing/steps/ui/manual.step.d.ts +3 -0
  157. package/dist/testing/steps/ui/manual.step.d.ts.map +1 -0
  158. package/dist/testing/steps/ui/manual.step.js +56 -0
  159. package/dist/testing/steps/ui/manual.step.js.map +1 -0
  160. package/package.json +1 -1
  161. package/src/commands/info.command.ts +0 -2
  162. package/src/controllers/{dashboard-variable.controller.ts → dashboard-user-layout.controller.ts} +10 -10
  163. package/src/controllers/dashboard.controller.ts +70 -89
  164. package/src/decorators/dashboard-widget-data-provider.decorator.ts +6 -0
  165. package/src/dtos/create-dashboard-user-layout.dto.ts +41 -0
  166. package/src/dtos/dashboard-variable-options-query.dto.ts +20 -0
  167. package/src/dtos/dashboard-widget-data-request.dto.ts +34 -0
  168. package/src/dtos/update-dashboard-user-layout.dto.ts +45 -0
  169. package/src/entities/dashboard-user-layout.entity.ts +27 -0
  170. package/src/helpers/bootstrap.helper.ts +1 -1
  171. package/src/helpers/field-crud-managers/field-quality-check-fixes.md +36 -6
  172. package/src/helpers/module-metadata-helper.service.ts +21 -6
  173. package/src/helpers/solid-registry.ts +15 -36
  174. package/src/index.ts +21 -5
  175. package/src/interfaces.ts +32 -19
  176. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -34
  177. package/src/repositories/dashboard-user-layout.repository.ts +19 -0
  178. package/src/seeders/module-metadata-seeder.service.ts +0 -67
  179. package/src/seeders/seed-data/solid-core-metadata.json +6237 -6646
  180. package/src/services/1.js +6 -0
  181. package/src/services/dashboard-providers/README.md +603 -0
  182. package/src/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.ts +49 -0
  183. package/src/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.ts +45 -0
  184. package/src/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.ts +45 -0
  185. package/src/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.ts +58 -0
  186. package/src/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.ts +79 -0
  187. package/src/services/dashboard-providers/mq-dashboard-provider-utils.ts +165 -0
  188. package/src/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.ts +155 -0
  189. package/src/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.ts +51 -0
  190. package/src/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.ts +51 -0
  191. package/src/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.ts +95 -0
  192. package/src/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.ts +49 -0
  193. package/src/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.ts +45 -0
  194. package/src/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.ts +55 -0
  195. package/src/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.ts +44 -0
  196. package/src/services/dashboard-runtime.service.ts +488 -0
  197. package/src/services/dashboard-user-layout.service.ts +20 -0
  198. package/src/services/module-metadata.service.ts +1 -1
  199. package/src/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.ts +52 -0
  200. package/src/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.ts +51 -0
  201. package/src/services/solid-introspect.service.ts +19 -34
  202. package/src/solid-core.module.ts +43 -72
  203. package/src/testing/README.md +42 -4
  204. package/src/testing/adapters/ui/playwright-adapter.ts +4 -0
  205. package/src/testing/steps/ui/index.ts +2 -0
  206. package/src/testing/steps/ui/manual.step.ts +80 -0
  207. package/dist/controllers/dashboard-layout.controller.d.ts +0 -47
  208. package/dist/controllers/dashboard-layout.controller.d.ts.map +0 -1
  209. package/dist/controllers/dashboard-layout.controller.js +0 -204
  210. package/dist/controllers/dashboard-layout.controller.js.map +0 -1
  211. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +0 -43
  212. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +0 -1
  213. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js +0 -179
  214. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +0 -1
  215. package/dist/controllers/dashboard-question.controller.d.ts +0 -45
  216. package/dist/controllers/dashboard-question.controller.d.ts.map +0 -1
  217. package/dist/controllers/dashboard-question.controller.js +0 -194
  218. package/dist/controllers/dashboard-question.controller.js.map +0 -1
  219. package/dist/controllers/dashboard-variable.controller.d.ts +0 -43
  220. package/dist/controllers/dashboard-variable.controller.d.ts.map +0 -1
  221. package/dist/controllers/dashboard-variable.controller.js.map +0 -1
  222. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts +0 -3
  223. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +0 -1
  224. package/dist/decorators/dashboard-question-data-provider.decorator.js +0 -11
  225. package/dist/decorators/dashboard-question-data-provider.decorator.js.map +0 -1
  226. package/dist/decorators/dashboard-selection-provider.decorator.d.ts +0 -3
  227. package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +0 -1
  228. package/dist/decorators/dashboard-selection-provider.decorator.js +0 -11
  229. package/dist/decorators/dashboard-selection-provider.decorator.js.map +0 -1
  230. package/dist/dtos/create-dashboard-layout.dto.d.ts +0 -8
  231. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +0 -1
  232. package/dist/dtos/create-dashboard-layout.dto.js +0 -53
  233. package/dist/dtos/create-dashboard-layout.dto.js.map +0 -1
  234. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts +0 -12
  235. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  236. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js +0 -77
  237. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  238. package/dist/dtos/create-dashboard-question.dto.d.ts +0 -17
  239. package/dist/dtos/create-dashboard-question.dto.d.ts.map +0 -1
  240. package/dist/dtos/create-dashboard-question.dto.js +0 -105
  241. package/dist/dtos/create-dashboard-question.dto.js.map +0 -1
  242. package/dist/dtos/create-dashboard-variable.dto.d.ts +0 -19
  243. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +0 -1
  244. package/dist/dtos/create-dashboard-variable.dto.js +0 -103
  245. package/dist/dtos/create-dashboard-variable.dto.js.map +0 -1
  246. package/dist/dtos/create-dashboard.dto.d.ts +0 -17
  247. package/dist/dtos/create-dashboard.dto.d.ts.map +0 -1
  248. package/dist/dtos/create-dashboard.dto.js +0 -102
  249. package/dist/dtos/create-dashboard.dto.js.map +0 -1
  250. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +0 -8
  251. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts.map +0 -1
  252. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js +0 -52
  253. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js.map +0 -1
  254. package/dist/dtos/update-dashboard-layout.dto.d.ts +0 -8
  255. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +0 -1
  256. package/dist/dtos/update-dashboard-layout.dto.js.map +0 -1
  257. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts +0 -13
  258. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  259. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js +0 -86
  260. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  261. package/dist/dtos/update-dashboard-question.dto.d.ts +0 -18
  262. package/dist/dtos/update-dashboard-question.dto.d.ts.map +0 -1
  263. package/dist/dtos/update-dashboard-question.dto.js +0 -112
  264. package/dist/dtos/update-dashboard-question.dto.js.map +0 -1
  265. package/dist/dtos/update-dashboard-variable.dto.d.ts +0 -16
  266. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +0 -1
  267. package/dist/dtos/update-dashboard-variable.dto.js +0 -101
  268. package/dist/dtos/update-dashboard-variable.dto.js.map +0 -1
  269. package/dist/dtos/update-dashboard.dto.d.ts +0 -18
  270. package/dist/dtos/update-dashboard.dto.d.ts.map +0 -1
  271. package/dist/dtos/update-dashboard.dto.js +0 -108
  272. package/dist/dtos/update-dashboard.dto.js.map +0 -1
  273. package/dist/entities/dashboard-layout.entity.d.ts +0 -9
  274. package/dist/entities/dashboard-layout.entity.d.ts.map +0 -1
  275. package/dist/entities/dashboard-layout.entity.js +0 -41
  276. package/dist/entities/dashboard-layout.entity.js.map +0 -1
  277. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +0 -14
  278. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +0 -1
  279. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +0 -66
  280. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +0 -1
  281. package/dist/entities/dashboard-question.entity.d.ts +0 -17
  282. package/dist/entities/dashboard-question.entity.d.ts.map +0 -1
  283. package/dist/entities/dashboard-question.entity.js +0 -77
  284. package/dist/entities/dashboard-question.entity.js.map +0 -1
  285. package/dist/entities/dashboard-variable.entity.d.ts +0 -16
  286. package/dist/entities/dashboard-variable.entity.d.ts.map +0 -1
  287. package/dist/entities/dashboard-variable.entity.js +0 -79
  288. package/dist/entities/dashboard-variable.entity.js.map +0 -1
  289. package/dist/entities/dashboard.entity.d.ts +0 -16
  290. package/dist/entities/dashboard.entity.d.ts.map +0 -1
  291. package/dist/entities/dashboard.entity.js +0 -64
  292. package/dist/entities/dashboard.entity.js.map +0 -1
  293. package/dist/mappers/dashboard-mapper.d.ts +0 -6
  294. package/dist/mappers/dashboard-mapper.d.ts.map +0 -1
  295. package/dist/mappers/dashboard-mapper.js +0 -62
  296. package/dist/mappers/dashboard-mapper.js.map +0 -1
  297. package/dist/repository/dashboard-layout.repository.d.ts.map +0 -1
  298. package/dist/repository/dashboard-layout.repository.js.map +0 -1
  299. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +0 -12
  300. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +0 -1
  301. package/dist/repository/dashboard-question-sql-dataset-config.repository.js +0 -34
  302. package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +0 -1
  303. package/dist/repository/dashboard-question.repository.d.ts +0 -12
  304. package/dist/repository/dashboard-question.repository.d.ts.map +0 -1
  305. package/dist/repository/dashboard-question.repository.js +0 -34
  306. package/dist/repository/dashboard-question.repository.js.map +0 -1
  307. package/dist/repository/dashboard-variable.repository.d.ts +0 -12
  308. package/dist/repository/dashboard-variable.repository.d.ts.map +0 -1
  309. package/dist/repository/dashboard-variable.repository.js +0 -34
  310. package/dist/repository/dashboard-variable.repository.js.map +0 -1
  311. package/dist/repository/dashboard.repository.d.ts +0 -13
  312. package/dist/repository/dashboard.repository.d.ts.map +0 -1
  313. package/dist/repository/dashboard.repository.js +0 -104
  314. package/dist/repository/dashboard.repository.js.map +0 -1
  315. package/dist/services/dashboard-layout.service.d.ts +0 -20
  316. package/dist/services/dashboard-layout.service.d.ts.map +0 -1
  317. package/dist/services/dashboard-layout.service.js +0 -120
  318. package/dist/services/dashboard-layout.service.js.map +0 -1
  319. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +0 -12
  320. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +0 -1
  321. package/dist/services/dashboard-question-sql-dataset-config.service.js +0 -38
  322. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +0 -1
  323. package/dist/services/dashboard-question.service.d.ts +0 -23
  324. package/dist/services/dashboard-question.service.d.ts.map +0 -1
  325. package/dist/services/dashboard-question.service.js +0 -135
  326. package/dist/services/dashboard-question.service.js.map +0 -1
  327. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts +0 -12
  328. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts.map +0 -1
  329. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js +0 -55
  330. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js.map +0 -1
  331. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts +0 -11
  332. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts.map +0 -1
  333. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js +0 -45
  334. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js.map +0 -1
  335. package/dist/services/dashboard-variable.service.d.ts +0 -13
  336. package/dist/services/dashboard-variable.service.d.ts.map +0 -1
  337. package/dist/services/dashboard-variable.service.js.map +0 -1
  338. package/dist/services/dashboard.service.d.ts +0 -29
  339. package/dist/services/dashboard.service.d.ts.map +0 -1
  340. package/dist/services/dashboard.service.js +0 -171
  341. package/dist/services/dashboard.service.js.map +0 -1
  342. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +0 -12
  343. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  344. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js +0 -41
  345. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js.map +0 -1
  346. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +0 -12
  347. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  348. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js +0 -42
  349. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js.map +0 -1
  350. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts +0 -25
  351. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts.map +0 -1
  352. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js +0 -116
  353. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js.map +0 -1
  354. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +0 -12
  355. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts.map +0 -1
  356. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js +0 -37
  357. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js.map +0 -1
  358. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts +0 -12
  359. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts.map +0 -1
  360. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js +0 -38
  361. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js.map +0 -1
  362. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +0 -12
  363. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts.map +0 -1
  364. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js +0 -38
  365. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js.map +0 -1
  366. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +0 -34
  367. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +0 -1
  368. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +0 -90
  369. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +0 -1
  370. package/dist/services/question-data-providers/helpers.d.ts +0 -7
  371. package/dist/services/question-data-providers/helpers.d.ts.map +0 -1
  372. package/dist/services/question-data-providers/helpers.js +0 -25
  373. package/dist/services/question-data-providers/helpers.js.map +0 -1
  374. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +0 -14
  375. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +0 -1
  376. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +0 -71
  377. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +0 -1
  378. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +0 -16
  379. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +0 -1
  380. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +0 -93
  381. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +0 -1
  382. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +0 -11
  383. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +0 -1
  384. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +0 -49
  385. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +0 -1
  386. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +0 -11
  387. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts.map +0 -1
  388. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js +0 -47
  389. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js.map +0 -1
  390. package/dist/services/sql-expression-resolver.service.d.ts +0 -12
  391. package/dist/services/sql-expression-resolver.service.d.ts.map +0 -1
  392. package/dist/services/sql-expression-resolver.service.js +0 -121
  393. package/dist/services/sql-expression-resolver.service.js.map +0 -1
  394. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +0 -16
  395. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +0 -1
  396. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js +0 -72
  397. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +0 -1
  398. package/dist/subscribers/dashboard-question.subscriber.d.ts +0 -16
  399. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +0 -1
  400. package/dist/subscribers/dashboard-question.subscriber.js +0 -72
  401. package/dist/subscribers/dashboard-question.subscriber.js.map +0 -1
  402. package/dist/subscribers/dashboard-variable.subscriber.d.ts +0 -16
  403. package/dist/subscribers/dashboard-variable.subscriber.d.ts.map +0 -1
  404. package/dist/subscribers/dashboard-variable.subscriber.js +0 -72
  405. package/dist/subscribers/dashboard-variable.subscriber.js.map +0 -1
  406. package/dist/subscribers/dashboard.subscriber.d.ts +0 -16
  407. package/dist/subscribers/dashboard.subscriber.d.ts.map +0 -1
  408. package/dist/subscribers/dashboard.subscriber.js +0 -71
  409. package/dist/subscribers/dashboard.subscriber.js.map +0 -1
  410. package/dist-tests/api/authenticate.spec.js +0 -119
  411. package/dist-tests/api/authenticate.spec.js.map +0 -1
  412. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  413. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  414. package/dist-tests/api/ping.spec.js +0 -21
  415. package/dist-tests/api/ping.spec.js.map +0 -1
  416. package/dist-tests/helpers/auth.js +0 -41
  417. package/dist-tests/helpers/auth.js.map +0 -1
  418. package/dist-tests/helpers/env.js +0 -11
  419. package/dist-tests/helpers/env.js.map +0 -1
  420. package/docs/grouping-enhancements.md +0 -89
  421. package/docs/java-spring/README.md +0 -3
  422. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  423. package/docs/seed-changes.md +0 -65
  424. package/docs/test-data-workflow.md +0 -200
  425. package/docs/type-declaration-import-issue.md +0 -24
  426. package/src/controllers/dashboard-layout.controller.ts +0 -106
  427. package/src/controllers/dashboard-question-sql-dataset-config.controller.ts +0 -93
  428. package/src/controllers/dashboard-question.controller.ts +0 -104
  429. package/src/decorators/dashboard-question-data-provider.decorator.ts +0 -7
  430. package/src/decorators/dashboard-selection-provider.decorator.ts +0 -7
  431. package/src/dtos/create-dashboard-layout.dto.ts +0 -31
  432. package/src/dtos/create-dashboard-question-sql-dataset-config.dto.ts +0 -42
  433. package/src/dtos/create-dashboard-question.dto.ts +0 -62
  434. package/src/dtos/create-dashboard-variable.dto.ts +0 -60
  435. package/src/dtos/create-dashboard.dto.ts +0 -61
  436. package/src/dtos/dashboard-variable-selection-dynamic-query.dto.ts +0 -29
  437. package/src/dtos/update-dashboard-layout.dto.ts +0 -30
  438. package/src/dtos/update-dashboard-question-sql-dataset-config.dto.ts +0 -49
  439. package/src/dtos/update-dashboard-question.dto.ts +0 -67
  440. package/src/dtos/update-dashboard-variable.dto.ts +0 -58
  441. package/src/dtos/update-dashboard.dto.ts +0 -65
  442. package/src/entities/dashboard-layout.entity.ts +0 -18
  443. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +0 -37
  444. package/src/entities/dashboard-question.entity.ts +0 -46
  445. package/src/entities/dashboard-variable.entity.ts +0 -44
  446. package/src/entities/dashboard.entity.ts +0 -36
  447. package/src/mappers/dashboard-mapper.ts +0 -53
  448. package/src/repository/dashboard-layout.repository.ts +0 -17
  449. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +0 -17
  450. package/src/repository/dashboard-question.repository.ts +0 -17
  451. package/src/repository/dashboard-variable.repository.ts +0 -17
  452. package/src/repository/dashboard.repository.ts +0 -101
  453. package/src/services/dashboard-layout.service.ts +0 -111
  454. package/src/services/dashboard-question-sql-dataset-config.service.ts +0 -25
  455. package/src/services/dashboard-question.service.ts +0 -150
  456. package/src/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.ts +0 -56
  457. package/src/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.ts +0 -37
  458. package/src/services/dashboard-variable.service.ts +0 -27
  459. package/src/services/dashboard.service.ts +0 -148
  460. package/src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts +0 -43
  461. package/src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts +0 -44
  462. package/src/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts +0 -114
  463. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts +0 -38
  464. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.ts +0 -40
  465. package/src/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.ts +0 -39
  466. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +0 -121
  467. package/src/services/question-data-providers/helpers.ts +0 -30
  468. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +0 -74
  469. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +0 -115
  470. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +0 -44
  471. package/src/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.ts +0 -41
  472. package/src/services/sql-expression-resolver.service.ts +0 -140
  473. package/src/subscribers/dashboard-question-sql-dataset-config.subscriber.ts +0 -61
  474. package/src/subscribers/dashboard-question.subscriber.ts +0 -62
  475. package/src/subscribers/dashboard-variable.subscriber.ts +0 -63
  476. package/src/subscribers/dashboard.subscriber.ts +0 -62
@@ -1,53 +0,0 @@
1
- import { Injectable } from "@nestjs/common";
2
- import { SelectionDynamicSourceType } from "src/dtos/create-dashboard-variable.dto";
3
- import { Dashboard } from "src/entities/dashboard.entity";
4
-
5
- @Injectable()
6
- export class DashboardMapper {
7
- toDto(dashboard: Dashboard): any {
8
- return {
9
- name: dashboard.name,
10
- layoutJson: this.safeParseJSON(dashboard.layoutJson, {}),
11
- moduleUserKey: dashboard.module?.name ?? null, // safer fallback
12
-
13
- dashboardVariables: (dashboard.dashboardVariables || []).map(variable => ({
14
- variableName: variable.variableName,
15
- variableType: variable.variableType,
16
- selectionStaticValues: this.safeParseJSON(variable.selectionStaticValues, []),
17
- selectionDynamicSourceType: variable.selectionDynamicSourceType as SelectionDynamicSourceType,
18
- selectionDynamicSQL: variable.selectionDynamicSQL ?? null,
19
- selectionDynamicProviderName: variable.selectionDynamicProviderName ?? null,
20
- defaultValue: this.safeParseJSON(variable.defaultValue, []),
21
- defaultOperator: variable.defaultOperator ?? null,
22
- })),
23
- questions: (dashboard.questions || []).map(question => ({
24
- name: question.name,
25
- sourceType: question.sourceType,
26
- visualisedAs: question.visualisedAs,
27
- providerName: question.providerName ?? null,
28
- chartOptions: question.chartOptions ?? null,
29
- labelSql: question.labelSql ?? null,
30
- kpiSql: question.kpiSql ?? null,
31
- externalId: question.externalId,
32
- questionSqlDatasetConfigs: (question.questionSqlDatasetConfigs || []).map(config => ({
33
- sql: config.sql,
34
- datasetName: config.datasetName,
35
- datasetDisplayName: config.datasetDisplayName, // 🔧 fixed typo: `daataSetDisplayName`
36
- description: config.description,
37
- labelColumnName: config.labelColumnName,
38
- valueColumnName: config.valueColumnName,
39
- options: this.safeParseJSON(config.options, {}),
40
- externalId: config.externalId
41
- }))
42
- }))
43
- };
44
- }
45
-
46
- private safeParseJSON(json: string | null | undefined, fallback: any): any {
47
- try {
48
- return json ? JSON.parse(json) : fallback;
49
- } catch {
50
- return fallback;
51
- }
52
- }
53
- }
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { RequestContextService } from 'src/services/request-context.service';
3
- import { DataSource } from 'typeorm';
4
- import { SecurityRuleRepository } from './security-rule.repository';
5
- import { SolidBaseRepository } from './solid-base.repository';
6
- import { DashboardLayout } from 'src/entities/dashboard-layout.entity';
7
-
8
- @Injectable()
9
- export class DashboardLayoutRepository extends SolidBaseRepository<DashboardLayout> {
10
- constructor(
11
- readonly dataSource: DataSource,
12
- readonly requestContextService: RequestContextService,
13
- readonly securityRuleRepository: SecurityRuleRepository,
14
- ) {
15
- super(DashboardLayout, dataSource, requestContextService, securityRuleRepository);
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { DashboardQuestionSqlDatasetConfig } from '../entities/dashboard-question-sql-dataset-config.entity';
3
- import { RequestContextService } from 'src/services/request-context.service';
4
- import { DataSource } from 'typeorm';
5
- import { SecurityRuleRepository } from './security-rule.repository';
6
- import { SolidBaseRepository } from './solid-base.repository';
7
-
8
- @Injectable()
9
- export class DashboardQuestionSqlDatasetConfigRepository extends SolidBaseRepository<DashboardQuestionSqlDatasetConfig> {
10
- constructor(
11
- readonly dataSource: DataSource,
12
- readonly requestContextService: RequestContextService,
13
- readonly securityRuleRepository: SecurityRuleRepository,
14
- ) {
15
- super(DashboardQuestionSqlDatasetConfig, dataSource, requestContextService, securityRuleRepository);
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { DashboardQuestion } from '../entities/dashboard-question.entity';
3
- import { RequestContextService } from 'src/services/request-context.service';
4
- import { DataSource } from 'typeorm';
5
- import { SecurityRuleRepository } from './security-rule.repository';
6
- import { SolidBaseRepository } from './solid-base.repository';
7
-
8
- @Injectable()
9
- export class DashboardQuestionRepository extends SolidBaseRepository<DashboardQuestion> {
10
- constructor(
11
- readonly dataSource: DataSource,
12
- readonly requestContextService: RequestContextService,
13
- readonly securityRuleRepository: SecurityRuleRepository,
14
- ) {
15
- super(DashboardQuestion, dataSource, requestContextService, securityRuleRepository);
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { DashboardVariable } from '../entities/dashboard-variable.entity';
3
- import { RequestContextService } from 'src/services/request-context.service';
4
- import { DataSource } from 'typeorm';
5
- import { SecurityRuleRepository } from './security-rule.repository';
6
- import { SolidBaseRepository } from './solid-base.repository';
7
-
8
- @Injectable()
9
- export class DashboardVariableRepository extends SolidBaseRepository<DashboardVariable> {
10
- constructor(
11
- readonly dataSource: DataSource,
12
- readonly requestContextService: RequestContextService,
13
- readonly securityRuleRepository: SecurityRuleRepository,
14
- ) {
15
- super(DashboardVariable, dataSource, requestContextService, securityRuleRepository);
16
- }
17
- }
@@ -1,101 +0,0 @@
1
- import { Injectable } from "@nestjs/common";
2
- import { Dashboard } from "src/entities/dashboard.entity";
3
- import { ModuleMetadata } from "src/entities/module-metadata.entity";
4
- import { RequestContextService } from "src/services/request-context.service";
5
- import { DataSource } from "typeorm";
6
- import { SecurityRuleRepository } from "./security-rule.repository";
7
- import { SolidBaseRepository } from "./solid-base.repository";
8
-
9
- @Injectable()
10
- export class DashboardRepository extends SolidBaseRepository<Dashboard> {
11
- constructor(
12
- readonly dataSource: DataSource,
13
- readonly requestContextService: RequestContextService,
14
- readonly securityRuleRepository: SecurityRuleRepository,
15
- ) {
16
- super(Dashboard, dataSource, requestContextService, securityRuleRepository);
17
- }
18
-
19
-
20
- async upsertWithDto(createDto: any) {
21
- const moduleMetadataRepository = this.dataSource.getRepository(ModuleMetadata);
22
- const module = await moduleMetadataRepository.findOneBy({ name: createDto.moduleUserKey });
23
-
24
- if (!module) throw new Error(`Module with key ${createDto.moduleUserKey} not found`);
25
-
26
- const existingDashboard = await this.findOne({
27
- where: { name: createDto.name },
28
- relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],
29
- });
30
-
31
- if (existingDashboard) {
32
- // Update basic fields
33
- existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});
34
- existingDashboard.module = module;
35
-
36
- // Upsert dashboard variables
37
- existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {
38
- const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);
39
- if (existingVar) {
40
- return Object.assign(existingVar, {
41
- ...variable,
42
- selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
43
- defaultValue: JSON.stringify(variable.defaultValue ?? []),
44
- });
45
- }
46
- return {
47
- ...variable,
48
- selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
49
- defaultValue: JSON.stringify(variable.defaultValue ?? []),
50
- };
51
- }) ?? [];
52
-
53
- // Upsert questions and their configs
54
- existingDashboard.questions = createDto.questions?.map(question => {
55
- const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);
56
- const questionData: any = {
57
- ...question,
58
- questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {
59
- const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);
60
- if (existingCfg) {
61
- return Object.assign(existingCfg, {
62
- ...cfg,
63
- options: JSON.stringify(cfg.options ?? {}),
64
- });
65
- }
66
- return {
67
- ...cfg,
68
- options: JSON.stringify(cfg.options ?? {}),
69
- };
70
- }) ?? [],
71
- };
72
-
73
- return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;
74
- }) ?? [];
75
-
76
- return this.save(existingDashboard);
77
- }
78
-
79
- // Else: new dashboard
80
- const dashboardData = {
81
- ...createDto,
82
- module,
83
- layoutJson: JSON.stringify(createDto.layoutJson ?? {}),
84
- dashboardVariables: createDto.dashboardVariables?.map(variable => ({
85
- ...variable,
86
- selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
87
- defaultValue: JSON.stringify(variable.defaultValue ?? []),
88
- })),
89
- questions: createDto.questions?.map(question => ({
90
- ...question,
91
- questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => ({
92
- ...cfg,
93
- options: JSON.stringify(cfg.options ?? {}),
94
- })),
95
- })),
96
- };
97
-
98
- const newDashboard = this.create(dashboardData);
99
- return this.save(newDashboard);
100
- }
101
- }
@@ -1,111 +0,0 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
- import { ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager } from '@nestjs/typeorm';
4
- import { EntityManager } from 'typeorm';
5
-
6
- import { CRUDService } from 'src/services/crud.service';
7
- import { DashboardLayout } from 'src/entities/dashboard-layout.entity';
8
- import { DashboardLayoutRepository } from 'src/repository/dashboard-layout.repository';
9
- import { CreateDashboardLayoutDto } from 'src/dtos/create-dashboard-layout.dto';
10
- import { RequestContextService } from './request-context.service';
11
-
12
-
13
- @Injectable()
14
- export class DashboardLayoutService extends CRUDService<DashboardLayout> {
15
- private readonly logger = new Logger(this.constructor.name);
16
- constructor(
17
- @InjectEntityManager()
18
- readonly entityManager: EntityManager,
19
- readonly repo: DashboardLayoutRepository,
20
- readonly requestContextService: RequestContextService,
21
- readonly moduleRef: ModuleRef,
22
- ) {
23
- super(entityManager, repo, 'dashboardLayout', 'solid-core', moduleRef);
24
- }
25
-
26
- async upsertUserDashboardLayout(createDtos: CreateDashboardLayoutDto) {
27
- const activeUser = this.requestContextService.getActiveUser();
28
-
29
- if (!activeUser) {
30
- throw new Error('User not found');
31
- }
32
-
33
- let userId = null;
34
- if (activeUser.roles.includes('Admin')) {
35
- userId = null;
36
- } else {
37
- userId = activeUser?.sub;
38
- }
39
- const existingLayout = await this.repo.findOne({
40
- where: {
41
- user: { id: userId },
42
- dashboard: {
43
- id: createDtos.dashboardId
44
- }
45
- },
46
- relations: {
47
- user: true,
48
- dashboard: true,
49
- }
50
- });
51
-
52
- if (existingLayout) {
53
- return super.update(existingLayout.id, { layout: createDtos.layout }, [], true);
54
- } else {
55
- const createDto = {
56
- layout: createDtos.layout,
57
- dashboardId: createDtos.dashboardId,
58
- uesrId: userId
59
- }
60
- return super.create(createDto, []);
61
- }
62
- }
63
-
64
- async getUserDashboardLayoutByDashboardId(dashboardId: any) {
65
- const activeUser = this.requestContextService.getActiveUser();
66
-
67
- if (!activeUser) {
68
- throw new Error('User not found');
69
- }
70
- const userId = activeUser?.sub;
71
- const existingUserLayout = await this.repo.findOne({
72
- where: {
73
- user: { id: userId },
74
- dashboard: {
75
- id: dashboardId
76
- }
77
- },
78
- relations: {
79
- user: true,
80
- dashboard: true,
81
- }
82
- });
83
- if (existingUserLayout) {
84
- // if dahsboard for userid exists
85
- return existingUserLayout;
86
- }
87
-
88
- // if not then check for default dashboard
89
- const defaultLayout = await this.repo.findOne({
90
- where: {
91
- user: { id: null },
92
- dashboard: {
93
- id: dashboardId
94
- }
95
- },
96
- relations: {
97
- user: true,
98
- dashboard: true,
99
- }
100
- });
101
- if (defaultLayout) {
102
- // if default layout exists return it
103
- return defaultLayout;
104
- } else {
105
- // if default layout does not exist return empty layout
106
- return {
107
- layout: null
108
- }
109
- }
110
- }
111
- }
@@ -1,25 +0,0 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectEntityManager } from '@nestjs/typeorm';
3
- import { ModuleRef } from "@nestjs/core";
4
- import { EntityManager } from 'typeorm';
5
-
6
- import { CRUDService } from 'src/services/crud.service';
7
-
8
-
9
- import { DashboardQuestionSqlDatasetConfig } from '../entities/dashboard-question-sql-dataset-config.entity';
10
- import { DashboardQuestionSqlDatasetConfigRepository } from 'src/repository/dashboard-question-sql-dataset-config.repository';
11
-
12
- @Injectable()
13
- export class DashboardQuestionSqlDatasetConfigService extends CRUDService<DashboardQuestionSqlDatasetConfig>{
14
- constructor(
15
- @InjectEntityManager()
16
- readonly entityManager: EntityManager,
17
- // @InjectRepository(DashboardQuestionSqlDatasetConfig, 'default')
18
- // readonly repo: Repository<DashboardQuestionSqlDatasetConfig>,
19
- readonly repo: DashboardQuestionSqlDatasetConfigRepository,
20
- readonly moduleRef: ModuleRef
21
-
22
- ) {
23
- super(entityManager, repo, 'dashboardQuestionSqlDatasetConfig', 'solid-core', moduleRef);
24
- }
25
- }
@@ -1,150 +0,0 @@
1
- import { BadRequestException, Injectable, Logger, NotImplementedException } from '@nestjs/common';
2
- import { ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager } from '@nestjs/typeorm';
4
- import { EntityManager } from 'typeorm';
5
-
6
- import { CRUDService } from 'src/services/crud.service';
7
-
8
-
9
- import { DashboardVariable } from 'src/entities/dashboard-variable.entity';
10
- import { SolidRegistry } from 'src/helpers/solid-registry';
11
- import { DashboardQuestion } from '../entities/dashboard-question.entity';
12
- import { SqlExpression, SqlExpressionOperator } from './question-data-providers/chartjs-sql-data-provider.service';
13
- import { DashboardQuestionRepository } from 'src/repository/dashboard-question.repository';
14
- import { QuestionSqlDataProviderContext } from '../interfaces';
15
-
16
- enum SOURCE_TYPE {
17
- SQL = 'sql',
18
- PROVIDER = 'provider',
19
- }
20
-
21
- export const CHARTJS_SQL_DATA_PROVIDER_NAME = 'ChartJsSqlDataProvider';
22
- export const PRIME_REACT_METER_GROUP_SQL_DATA_PROVIDER_NAME = 'PrimeReactMeterGroupSqlDataProvider';
23
- export const PRIME_REACT_DATATABLE_SQL_DATA_PROVIDER_NAME = 'PrimeReactDatatableSqlDataProvider';
24
-
25
- export const INBUILT_SQL_DATA_PROVIDERS = [CHARTJS_SQL_DATA_PROVIDER_NAME, PRIME_REACT_METER_GROUP_SQL_DATA_PROVIDER_NAME, PRIME_REACT_DATATABLE_SQL_DATA_PROVIDER_NAME];
26
-
27
- @Injectable()
28
- export class DashboardQuestionService extends CRUDService<DashboardQuestion> {
29
- private readonly logger = new Logger(this.constructor.name);
30
- constructor(
31
- @InjectEntityManager()
32
- readonly entityManager: EntityManager,
33
- // @InjectRepository(DashboardQuestion, 'default')
34
- // readonly repo: Repository<DashboardQuestion>,
35
- readonly repo: DashboardQuestionRepository,
36
- readonly moduleRef: ModuleRef,
37
- readonly solidRegistry: SolidRegistry, // Assuming solidRegistry is injected for data providers
38
- ) {
39
- super(entityManager, repo, 'dashboardQuestion', 'solid-core', moduleRef);
40
- }
41
-
42
- // Get the data for a specific question
43
- async getData(id: number, inputExpressions: SqlExpression[] = [], isPreview = false): Promise<any> {
44
- // Load the question
45
- const question = await this.loadQuestion(id);
46
- if (!question) {
47
- throw new BadRequestException(`Question with id ${id} not found`);
48
- }
49
-
50
- // Get the dashbbard variables from the question
51
- const dashboardVariables = question.dashboard?.dashboardVariables || [];
52
- const expressions: SqlExpression[] = this.getExpressions(isPreview, dashboardVariables, inputExpressions);
53
-
54
- // Try to resolve the dataProvider based on a combination of sourceType and visualisedAs
55
- let dataProvider = null;
56
- let context = {};
57
-
58
- // Decide which data provider to use based on the question visualisation type if sourceType is SQL.
59
- if (question.sourceType === SOURCE_TYPE.SQL && ['bar', 'pie', 'line', 'donut'].includes(question.visualisedAs)) {
60
- dataProvider = this.solidRegistry.getDashboardQuestionDataProviderInstance(CHARTJS_SQL_DATA_PROVIDER_NAME);
61
- context = {
62
- expressions,
63
- } as QuestionSqlDataProviderContext;
64
- }
65
- if (question.sourceType === SOURCE_TYPE.SQL && ['prime-meter-group'].includes(question.visualisedAs)) {
66
- dataProvider = this.solidRegistry.getDashboardQuestionDataProviderInstance(PRIME_REACT_METER_GROUP_SQL_DATA_PROVIDER_NAME);
67
- context = {
68
- expressions,
69
- } as QuestionSqlDataProviderContext;
70
- }
71
- if (question.sourceType === SOURCE_TYPE.SQL && ['prime-datatable'].includes(question.visualisedAs)) {
72
- dataProvider = this.solidRegistry.getDashboardQuestionDataProviderInstance(PRIME_REACT_DATATABLE_SQL_DATA_PROVIDER_NAME);
73
- context = {
74
- expressions,
75
- } as QuestionSqlDataProviderContext;
76
- }
77
-
78
- // If a custom provider is specified, use that one instead
79
- if (question.sourceType === SOURCE_TYPE.PROVIDER) {
80
- dataProvider = this.solidRegistry.getDashboardQuestionDataProviderInstance(question.providerName);
81
- }
82
-
83
- if (!dataProvider) {
84
- throw new NotImplementedException(`Invalid data source type ${question.sourceType}`);
85
- }
86
-
87
- return await dataProvider.getData(question, context);
88
-
89
- }
90
-
91
- private getExpressions(isPreview: boolean, dashboardVariables: DashboardVariable[], inputExpressions: SqlExpression[]) {
92
- const expressions: SqlExpression[] = [];
93
-
94
- if (isPreview) {
95
- // Convert the dashboard variables into objects of interface type SqlExpression using the default value, default operator and the variable name
96
- const expr: SqlExpression[] = dashboardVariables.map(variable => {
97
- return {
98
- variableName: variable.variableName,
99
- operator: variable.defaultOperator as SqlExpressionOperator, // Assuming defaultOperator is a valid SqlExpressionOperator
100
- value: JSON.parse(variable.defaultValue || '[]'), // Assuming defaultValue is a string or can be converted to a string array
101
- };
102
- });
103
- expressions.push(...expr);
104
- }
105
- else {
106
- // Loop through the dashboard variables and see if there is a matching input expression
107
- // If there is, use that expression instead of the default value
108
- for (const variable of dashboardVariables) {
109
- const matchingInputExpression = inputExpressions.find(expr => expr.variableName === variable.variableName);
110
- if (matchingInputExpression) {
111
- expressions.push(matchingInputExpression);
112
- }
113
- else {
114
- expressions.push({
115
- variableName: variable.variableName,
116
- operator: variable.defaultOperator as SqlExpressionOperator,
117
- value: JSON.parse(variable.defaultValue || '[]'),
118
- });
119
- }
120
- }
121
- expressions.push(...expressions);
122
- }
123
-
124
- // Remove duplicate expressions based on variableName in the expressions array
125
- const deduplicatedExpressions: SqlExpression[] = [];
126
- const variableNames = new Set<string>();
127
- for (const expr of expressions) {
128
- if (!variableNames.has(expr.variableName)) {
129
- deduplicatedExpressions.push(expr);
130
- variableNames.add(expr.variableName);
131
- }
132
- }
133
-
134
- return deduplicatedExpressions;
135
- }
136
-
137
- private async loadQuestion(id: number) {
138
- const repo = this.entityManager.getRepository(DashboardQuestion);
139
-
140
- // Load the dashboard record using the field
141
- const question = await repo.findOne({
142
- where: {
143
- id,
144
- },
145
- relations: ['questionSqlDatasetConfigs', 'dashboard', 'dashboard.dashboardVariables'],
146
- });
147
- return question;
148
- }
149
-
150
- }
@@ -1,56 +0,0 @@
1
- import { Injectable } from "@nestjs/common";
2
- import { IDashboardVariableSelectionProvider, ISelectionProviderContext, ISelectionProviderValues } from "../../interfaces";
3
- // import localeCodes from 'locale-codes';
4
- import { EntityManager } from "typeorm";
5
- import { DashboardVariableSelectionProvider } from "src/decorators/dashboard-selection-provider.decorator";
6
-
7
- @DashboardVariableSelectionProvider()
8
- @Injectable()
9
- export class DashboardVariableSQLDynamicProvider implements IDashboardVariableSelectionProvider<ISelectionProviderContext> {
10
-
11
- constructor(private readonly entityManager: EntityManager) {
12
- }
13
-
14
- help(): string {
15
- return "# Get the dashboard variable after executing the SQL query configured for the dashboard variable.\n";
16
- }
17
-
18
- name(): string {
19
- return 'DashboardVariableSQLDynamicProvider';
20
- }
21
-
22
- async value(optionValue: string, ctxt: ISelectionProviderContext): Promise<ISelectionProviderValues | any> {
23
- throw new Error("DashboardVariableSQLDynamicProvider does not support value method. Use values method instead.");
24
- }
25
-
26
- async values(query: string, ctxt: ISelectionProviderContext): Promise<readonly ISelectionProviderValues[]> {
27
- const { sql, limit, offset } = ctxt as unknown as { sql: string, limit?: number, offset?: number };
28
- if (!sql) {
29
- throw new Error("DashboardVariableSQLDynamicProvider requires a SQL query to be provided in the context.");
30
- }
31
-
32
- // Here you would execute the SQL query against your database
33
- // For demonstration, let's assume we have a mock database function that executes the SQL query
34
- const results = await this.entityManager.query(this.appendLimitOffset(sql), [limit, offset]);
35
-
36
- // Transform the results into the expected format
37
- return results.map((result: any) => {
38
- const transformedResult: ISelectionProviderValues = {
39
- value: result.value, // Assuming the result has a 'value' field
40
- label: result.label, // Assuming the result has a 'label' field
41
- // Add any other fields you need to transform here
42
- };
43
- return transformedResult;
44
- });
45
- }
46
-
47
- appendLimitOffset(sql: string): string {
48
- // Strip trailing semicolon if present
49
- const trimmedSql = sql.trim().replace(/;$/, '');
50
-
51
- // Append the LIMIT/OFFSET
52
- const finalSql = `${trimmedSql} LIMIT $1 OFFSET $2`; // FIXME This works with PostgreSQL. for mysql use ?. For this we will need to identify the datasource using the model for the particular dashboard variable
53
-
54
- return finalSql;
55
- }
56
- }
@@ -1,37 +0,0 @@
1
- import { Injectable } from "@nestjs/common";
2
- import { IDashboardVariableSelectionProvider, ISelectionProviderContext, ISelectionProviderValues } from "../../interfaces";
3
- // import localeCodes from 'locale-codes';
4
- import { EntityManager } from "typeorm";
5
- import { DashboardVariableSelectionProvider } from "src/decorators/dashboard-selection-provider.decorator";
6
-
7
- @DashboardVariableSelectionProvider()
8
- @Injectable()
9
- export class DasbhoardVariableTestDynamicProvider implements IDashboardVariableSelectionProvider<ISelectionProviderContext> {
10
-
11
- constructor(private readonly entityManager: EntityManager) {
12
- }
13
-
14
- help(): string {
15
- return "# Get the dashboard variable values.\n";
16
- }
17
-
18
- name(): string {
19
- return 'DasbhoardVariableTestDynamicProvider';
20
- }
21
-
22
- async value(optionValue: string, ctxt: ISelectionProviderContext): Promise<ISelectionProviderValues | any> {
23
- throw new Error("DasbhoardVariableTestDynamicProvider does not support value method. Use values method instead.");
24
- }
25
-
26
- async values(query: string, ctxt: ISelectionProviderContext): Promise<readonly ISelectionProviderValues[]> {
27
- // Return some dummy data for testing
28
- const { sql, limit, offset } = ctxt as unknown as { sql: string, limit?: number, offset?: number };
29
- return [
30
- { value: '1', label: 'Option 1' },
31
- { value: '2', label: 'Option 2' },
32
- { value: '3', label: 'Option 3' },
33
- { value: '4', label: 'Option 4' },
34
- ];
35
- }
36
-
37
- }
@@ -1,27 +0,0 @@
1
- import { Injectable, Logger } from '@nestjs/common';
2
- import { ModuleRef } from "@nestjs/core";
3
- import { InjectEntityManager } from '@nestjs/typeorm';
4
- import { EntityManager } from 'typeorm';
5
-
6
- import { CRUDService } from 'src/services/crud.service';
7
-
8
-
9
- import { DashboardVariable } from '../entities/dashboard-variable.entity';
10
- import { DashboardVariableRepository } from 'src/repository/dashboard-variable.repository';
11
-
12
- @Injectable()
13
- export class DashboardVariableService extends CRUDService<DashboardVariable> {
14
- private readonly logger = new Logger(this.constructor.name);
15
- constructor(
16
- @InjectEntityManager()
17
- readonly entityManager: EntityManager,
18
- // @InjectRepository(DashboardVariable, 'default')
19
- // readonly repo: Repository<DashboardVariable>,
20
- readonly repo: DashboardVariableRepository,
21
- readonly moduleRef: ModuleRef,
22
- ) {
23
- super(entityManager, repo, 'dashboardVariable', 'solid-core', moduleRef);
24
- }
25
-
26
-
27
- }