@solidxai/core 0.1.10-beta.22 → 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 (434) hide show
  1. package/dist/commands/info.command.d.ts.map +1 -1
  2. package/dist/commands/info.command.js +0 -2
  3. package/dist/commands/info.command.js.map +1 -1
  4. package/dist/controllers/dashboard-user-layout.controller.d.ts +43 -0
  5. package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -0
  6. package/dist/controllers/{dashboard-variable.controller.js → dashboard-user-layout.controller.js} +30 -30
  7. package/dist/controllers/dashboard-user-layout.controller.js.map +1 -0
  8. package/dist/controllers/dashboard.controller.d.ts +12 -42
  9. package/dist/controllers/dashboard.controller.d.ts.map +1 -1
  10. package/dist/controllers/dashboard.controller.js +71 -141
  11. package/dist/controllers/dashboard.controller.js.map +1 -1
  12. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts +3 -0
  13. package/dist/decorators/dashboard-widget-data-provider.decorator.d.ts.map +1 -0
  14. package/dist/decorators/dashboard-widget-data-provider.decorator.js +8 -0
  15. package/dist/decorators/dashboard-widget-data-provider.decorator.js.map +1 -0
  16. package/dist/dtos/create-dashboard-user-layout.dto.d.ts +10 -0
  17. package/dist/dtos/create-dashboard-user-layout.dto.d.ts.map +1 -0
  18. package/dist/dtos/create-dashboard-user-layout.dto.js +66 -0
  19. package/dist/dtos/create-dashboard-user-layout.dto.js.map +1 -0
  20. package/dist/dtos/dashboard-variable-options-query.dto.d.ts +7 -0
  21. package/dist/dtos/dashboard-variable-options-query.dto.d.ts.map +1 -0
  22. package/dist/dtos/dashboard-variable-options-query.dto.js +40 -0
  23. package/dist/dtos/dashboard-variable-options-query.dto.js.map +1 -0
  24. package/dist/dtos/dashboard-widget-data-request.dto.d.ts +12 -0
  25. package/dist/dtos/dashboard-widget-data-request.dto.d.ts.map +1 -0
  26. package/dist/dtos/dashboard-widget-data-request.dto.js +65 -0
  27. package/dist/dtos/dashboard-widget-data-request.dto.js.map +1 -0
  28. package/dist/dtos/update-dashboard-user-layout.dto.d.ts +11 -0
  29. package/dist/dtos/update-dashboard-user-layout.dto.d.ts.map +1 -0
  30. package/dist/dtos/{update-dashboard-layout.dto.js → update-dashboard-user-layout.dto.js} +34 -16
  31. package/dist/dtos/update-dashboard-user-layout.dto.js.map +1 -0
  32. package/dist/entities/dashboard-user-layout.entity.d.ts +11 -0
  33. package/dist/entities/dashboard-user-layout.entity.d.ts.map +1 -0
  34. package/dist/entities/dashboard-user-layout.entity.js +52 -0
  35. package/dist/entities/dashboard-user-layout.entity.js.map +1 -0
  36. package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
  37. package/dist/helpers/module-metadata-helper.service.js +15 -4
  38. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  39. package/dist/helpers/solid-registry.d.ts +5 -9
  40. package/dist/helpers/solid-registry.d.ts.map +1 -1
  41. package/dist/helpers/solid-registry.js +13 -28
  42. package/dist/helpers/solid-registry.js.map +1 -1
  43. package/dist/index.d.ts +21 -5
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +21 -5
  46. package/dist/index.js.map +1 -1
  47. package/dist/interfaces.d.ts +24 -13
  48. package/dist/interfaces.d.ts.map +1 -1
  49. package/dist/interfaces.js.map +1 -1
  50. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +1 -3
  51. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  52. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -25
  53. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  54. package/dist/{repository/dashboard-layout.repository.d.ts → repositories/dashboard-user-layout.repository.d.ts} +5 -5
  55. package/dist/repositories/dashboard-user-layout.repository.d.ts.map +1 -0
  56. package/dist/{repository/dashboard-question-sql-dataset-config.repository.js → repositories/dashboard-user-layout.repository.js} +15 -10
  57. package/dist/repositories/dashboard-user-layout.repository.js.map +1 -0
  58. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -6
  59. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  60. package/dist/seeders/module-metadata-seeder.service.js +1 -60
  61. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  62. package/dist/seeders/seed-data/solid-core-metadata.json +6203 -6690
  63. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts +13 -0
  64. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.d.ts.map +1 -0
  65. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js +55 -0
  66. package/dist/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.js.map +1 -0
  67. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts +13 -0
  68. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.d.ts.map +1 -0
  69. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js +52 -0
  70. package/dist/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.js.map +1 -0
  71. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts +13 -0
  72. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.d.ts.map +1 -0
  73. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js +52 -0
  74. package/dist/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.js.map +1 -0
  75. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts +10 -0
  76. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.d.ts.map +1 -0
  77. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js +62 -0
  78. package/dist/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.js.map +1 -0
  79. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts +10 -0
  80. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.d.ts.map +1 -0
  81. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js +82 -0
  82. package/dist/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.js.map +1 -0
  83. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts +17 -0
  84. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.d.ts.map +1 -0
  85. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js +130 -0
  86. package/dist/services/dashboard-providers/mq-dashboard-provider-utils.js.map +1 -0
  87. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts +37 -0
  88. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.d.ts.map +1 -0
  89. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js +112 -0
  90. package/dist/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.js.map +1 -0
  91. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts +10 -0
  92. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.d.ts.map +1 -0
  93. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js +57 -0
  94. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.js.map +1 -0
  95. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts +10 -0
  96. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.d.ts.map +1 -0
  97. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js +57 -0
  98. package/dist/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.js.map +1 -0
  99. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts +10 -0
  100. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.d.ts.map +1 -0
  101. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js +100 -0
  102. package/dist/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.js.map +1 -0
  103. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts +10 -0
  104. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.d.ts.map +1 -0
  105. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js +55 -0
  106. package/dist/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.js.map +1 -0
  107. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts +13 -0
  108. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.d.ts.map +1 -0
  109. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js +52 -0
  110. package/dist/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.js.map +1 -0
  111. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts +15 -0
  112. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.d.ts.map +1 -0
  113. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js +60 -0
  114. package/dist/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.js.map +1 -0
  115. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts +13 -0
  116. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.d.ts.map +1 -0
  117. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js +51 -0
  118. package/dist/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.js.map +1 -0
  119. package/dist/services/dashboard-runtime.service.d.ts +31 -0
  120. package/dist/services/dashboard-runtime.service.d.ts.map +1 -0
  121. package/dist/services/dashboard-runtime.service.js +408 -0
  122. package/dist/services/dashboard-runtime.service.js.map +1 -0
  123. package/dist/services/dashboard-user-layout.service.d.ts +12 -0
  124. package/dist/services/dashboard-user-layout.service.d.ts.map +1 -0
  125. package/dist/services/{dashboard-variable.service.js → dashboard-user-layout.service.js} +11 -12
  126. package/dist/services/dashboard-user-layout.service.js.map +1 -0
  127. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts +11 -0
  128. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.d.ts.map +1 -0
  129. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js +59 -0
  130. package/dist/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.js.map +1 -0
  131. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts +11 -0
  132. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.d.ts.map +1 -0
  133. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js +60 -0
  134. package/dist/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.js.map +1 -0
  135. package/dist/services/solid-introspect.service.d.ts +1 -2
  136. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  137. package/dist/services/solid-introspect.service.js +12 -24
  138. package/dist/services/solid-introspect.service.js.map +1 -1
  139. package/dist/solid-core.module.d.ts.map +1 -1
  140. package/dist/solid-core.module.js +43 -66
  141. package/dist/solid-core.module.js.map +1 -1
  142. package/package.json +1 -1
  143. package/src/commands/info.command.ts +0 -2
  144. package/src/controllers/{dashboard-variable.controller.ts → dashboard-user-layout.controller.ts} +10 -10
  145. package/src/controllers/dashboard.controller.ts +70 -89
  146. package/src/decorators/dashboard-widget-data-provider.decorator.ts +6 -0
  147. package/src/dtos/create-dashboard-user-layout.dto.ts +41 -0
  148. package/src/dtos/dashboard-variable-options-query.dto.ts +20 -0
  149. package/src/dtos/dashboard-widget-data-request.dto.ts +34 -0
  150. package/src/dtos/update-dashboard-user-layout.dto.ts +45 -0
  151. package/src/entities/dashboard-user-layout.entity.ts +27 -0
  152. package/src/helpers/module-metadata-helper.service.ts +21 -6
  153. package/src/helpers/solid-registry.ts +15 -36
  154. package/src/index.ts +21 -5
  155. package/src/interfaces.ts +32 -19
  156. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -34
  157. package/src/repositories/dashboard-user-layout.repository.ts +19 -0
  158. package/src/seeders/module-metadata-seeder.service.ts +0 -67
  159. package/src/seeders/seed-data/solid-core-metadata.json +6204 -6691
  160. package/src/services/dashboard-providers/README.md +603 -0
  161. package/src/services/dashboard-providers/mq-dashboard-avg-elapsed-kpi-provider.service.ts +49 -0
  162. package/src/services/dashboard-providers/mq-dashboard-failed-messages-kpi-provider.service.ts +45 -0
  163. package/src/services/dashboard-providers/mq-dashboard-inflight-messages-kpi-provider.service.ts +45 -0
  164. package/src/services/dashboard-providers/mq-dashboard-latency-trend-provider.service.ts +58 -0
  165. package/src/services/dashboard-providers/mq-dashboard-messages-over-time-provider.service.ts +79 -0
  166. package/src/services/dashboard-providers/mq-dashboard-provider-utils.ts +165 -0
  167. package/src/services/dashboard-providers/mq-dashboard-queue-sla-heatmap-provider.service.ts +155 -0
  168. package/src/services/dashboard-providers/mq-dashboard-queue-wise-avg-elapsed-provider.service.ts +51 -0
  169. package/src/services/dashboard-providers/mq-dashboard-queue-wise-failures-provider.service.ts +51 -0
  170. package/src/services/dashboard-providers/mq-dashboard-recent-failures-provider.service.ts +95 -0
  171. package/src/services/dashboard-providers/mq-dashboard-stage-distribution-provider.service.ts +49 -0
  172. package/src/services/dashboard-providers/mq-dashboard-succeeded-messages-kpi-provider.service.ts +45 -0
  173. package/src/services/dashboard-providers/mq-dashboard-success-rate-kpi-provider.service.ts +55 -0
  174. package/src/services/dashboard-providers/mq-dashboard-total-messages-kpi-provider.service.ts +44 -0
  175. package/src/services/dashboard-runtime.service.ts +488 -0
  176. package/src/services/dashboard-user-layout.service.ts +20 -0
  177. package/src/services/selection-providers/mq-dashboard-message-broker-variable-options-provider.service.ts +52 -0
  178. package/src/services/selection-providers/mq-dashboard-queue-name-variable-options-provider.service.ts +51 -0
  179. package/src/services/solid-introspect.service.ts +19 -34
  180. package/src/solid-core.module.ts +43 -72
  181. package/dist/controllers/dashboard-layout.controller.d.ts +0 -47
  182. package/dist/controllers/dashboard-layout.controller.d.ts.map +0 -1
  183. package/dist/controllers/dashboard-layout.controller.js +0 -204
  184. package/dist/controllers/dashboard-layout.controller.js.map +0 -1
  185. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +0 -43
  186. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +0 -1
  187. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js +0 -179
  188. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +0 -1
  189. package/dist/controllers/dashboard-question.controller.d.ts +0 -45
  190. package/dist/controllers/dashboard-question.controller.d.ts.map +0 -1
  191. package/dist/controllers/dashboard-question.controller.js +0 -194
  192. package/dist/controllers/dashboard-question.controller.js.map +0 -1
  193. package/dist/controllers/dashboard-variable.controller.d.ts +0 -43
  194. package/dist/controllers/dashboard-variable.controller.d.ts.map +0 -1
  195. package/dist/controllers/dashboard-variable.controller.js.map +0 -1
  196. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts +0 -3
  197. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +0 -1
  198. package/dist/decorators/dashboard-question-data-provider.decorator.js +0 -11
  199. package/dist/decorators/dashboard-question-data-provider.decorator.js.map +0 -1
  200. package/dist/decorators/dashboard-selection-provider.decorator.d.ts +0 -3
  201. package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +0 -1
  202. package/dist/decorators/dashboard-selection-provider.decorator.js +0 -11
  203. package/dist/decorators/dashboard-selection-provider.decorator.js.map +0 -1
  204. package/dist/dtos/create-dashboard-layout.dto.d.ts +0 -8
  205. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +0 -1
  206. package/dist/dtos/create-dashboard-layout.dto.js +0 -53
  207. package/dist/dtos/create-dashboard-layout.dto.js.map +0 -1
  208. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts +0 -12
  209. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  210. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js +0 -77
  211. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  212. package/dist/dtos/create-dashboard-question.dto.d.ts +0 -17
  213. package/dist/dtos/create-dashboard-question.dto.d.ts.map +0 -1
  214. package/dist/dtos/create-dashboard-question.dto.js +0 -105
  215. package/dist/dtos/create-dashboard-question.dto.js.map +0 -1
  216. package/dist/dtos/create-dashboard-variable.dto.d.ts +0 -19
  217. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +0 -1
  218. package/dist/dtos/create-dashboard-variable.dto.js +0 -103
  219. package/dist/dtos/create-dashboard-variable.dto.js.map +0 -1
  220. package/dist/dtos/create-dashboard.dto.d.ts +0 -17
  221. package/dist/dtos/create-dashboard.dto.d.ts.map +0 -1
  222. package/dist/dtos/create-dashboard.dto.js +0 -102
  223. package/dist/dtos/create-dashboard.dto.js.map +0 -1
  224. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +0 -8
  225. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts.map +0 -1
  226. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js +0 -52
  227. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js.map +0 -1
  228. package/dist/dtos/update-dashboard-layout.dto.d.ts +0 -8
  229. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +0 -1
  230. package/dist/dtos/update-dashboard-layout.dto.js.map +0 -1
  231. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts +0 -13
  232. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +0 -1
  233. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js +0 -86
  234. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +0 -1
  235. package/dist/dtos/update-dashboard-question.dto.d.ts +0 -18
  236. package/dist/dtos/update-dashboard-question.dto.d.ts.map +0 -1
  237. package/dist/dtos/update-dashboard-question.dto.js +0 -112
  238. package/dist/dtos/update-dashboard-question.dto.js.map +0 -1
  239. package/dist/dtos/update-dashboard-variable.dto.d.ts +0 -16
  240. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +0 -1
  241. package/dist/dtos/update-dashboard-variable.dto.js +0 -101
  242. package/dist/dtos/update-dashboard-variable.dto.js.map +0 -1
  243. package/dist/dtos/update-dashboard.dto.d.ts +0 -18
  244. package/dist/dtos/update-dashboard.dto.d.ts.map +0 -1
  245. package/dist/dtos/update-dashboard.dto.js +0 -108
  246. package/dist/dtos/update-dashboard.dto.js.map +0 -1
  247. package/dist/entities/dashboard-layout.entity.d.ts +0 -9
  248. package/dist/entities/dashboard-layout.entity.d.ts.map +0 -1
  249. package/dist/entities/dashboard-layout.entity.js +0 -41
  250. package/dist/entities/dashboard-layout.entity.js.map +0 -1
  251. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +0 -14
  252. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +0 -1
  253. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +0 -66
  254. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +0 -1
  255. package/dist/entities/dashboard-question.entity.d.ts +0 -17
  256. package/dist/entities/dashboard-question.entity.d.ts.map +0 -1
  257. package/dist/entities/dashboard-question.entity.js +0 -77
  258. package/dist/entities/dashboard-question.entity.js.map +0 -1
  259. package/dist/entities/dashboard-variable.entity.d.ts +0 -16
  260. package/dist/entities/dashboard-variable.entity.d.ts.map +0 -1
  261. package/dist/entities/dashboard-variable.entity.js +0 -79
  262. package/dist/entities/dashboard-variable.entity.js.map +0 -1
  263. package/dist/entities/dashboard.entity.d.ts +0 -16
  264. package/dist/entities/dashboard.entity.d.ts.map +0 -1
  265. package/dist/entities/dashboard.entity.js +0 -64
  266. package/dist/entities/dashboard.entity.js.map +0 -1
  267. package/dist/mappers/dashboard-mapper.d.ts +0 -6
  268. package/dist/mappers/dashboard-mapper.d.ts.map +0 -1
  269. package/dist/mappers/dashboard-mapper.js +0 -62
  270. package/dist/mappers/dashboard-mapper.js.map +0 -1
  271. package/dist/repository/dashboard-layout.repository.d.ts.map +0 -1
  272. package/dist/repository/dashboard-layout.repository.js +0 -34
  273. package/dist/repository/dashboard-layout.repository.js.map +0 -1
  274. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +0 -12
  275. package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +0 -1
  276. package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +0 -1
  277. package/dist/repository/dashboard-question.repository.d.ts +0 -12
  278. package/dist/repository/dashboard-question.repository.d.ts.map +0 -1
  279. package/dist/repository/dashboard-question.repository.js +0 -34
  280. package/dist/repository/dashboard-question.repository.js.map +0 -1
  281. package/dist/repository/dashboard-variable.repository.d.ts +0 -12
  282. package/dist/repository/dashboard-variable.repository.d.ts.map +0 -1
  283. package/dist/repository/dashboard-variable.repository.js +0 -34
  284. package/dist/repository/dashboard-variable.repository.js.map +0 -1
  285. package/dist/repository/dashboard.repository.d.ts +0 -13
  286. package/dist/repository/dashboard.repository.d.ts.map +0 -1
  287. package/dist/repository/dashboard.repository.js +0 -104
  288. package/dist/repository/dashboard.repository.js.map +0 -1
  289. package/dist/services/dashboard-layout.service.d.ts +0 -20
  290. package/dist/services/dashboard-layout.service.d.ts.map +0 -1
  291. package/dist/services/dashboard-layout.service.js +0 -120
  292. package/dist/services/dashboard-layout.service.js.map +0 -1
  293. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +0 -12
  294. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +0 -1
  295. package/dist/services/dashboard-question-sql-dataset-config.service.js +0 -38
  296. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +0 -1
  297. package/dist/services/dashboard-question.service.d.ts +0 -23
  298. package/dist/services/dashboard-question.service.d.ts.map +0 -1
  299. package/dist/services/dashboard-question.service.js +0 -135
  300. package/dist/services/dashboard-question.service.js.map +0 -1
  301. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts +0 -12
  302. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts.map +0 -1
  303. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js +0 -55
  304. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js.map +0 -1
  305. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts +0 -11
  306. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts.map +0 -1
  307. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js +0 -45
  308. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js.map +0 -1
  309. package/dist/services/dashboard-variable.service.d.ts +0 -13
  310. package/dist/services/dashboard-variable.service.d.ts.map +0 -1
  311. package/dist/services/dashboard-variable.service.js.map +0 -1
  312. package/dist/services/dashboard.service.d.ts +0 -29
  313. package/dist/services/dashboard.service.d.ts.map +0 -1
  314. package/dist/services/dashboard.service.js +0 -171
  315. package/dist/services/dashboard.service.js.map +0 -1
  316. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +0 -12
  317. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  318. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js +0 -41
  319. package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.js.map +0 -1
  320. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +0 -12
  321. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts.map +0 -1
  322. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js +0 -42
  323. package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.js.map +0 -1
  324. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts +0 -25
  325. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts.map +0 -1
  326. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js +0 -116
  327. package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.js.map +0 -1
  328. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +0 -12
  329. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts.map +0 -1
  330. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js +0 -37
  331. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.js.map +0 -1
  332. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts +0 -12
  333. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts.map +0 -1
  334. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js +0 -38
  335. package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.js.map +0 -1
  336. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +0 -12
  337. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts.map +0 -1
  338. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js +0 -38
  339. package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.js.map +0 -1
  340. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +0 -34
  341. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +0 -1
  342. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +0 -90
  343. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +0 -1
  344. package/dist/services/question-data-providers/helpers.d.ts +0 -7
  345. package/dist/services/question-data-providers/helpers.d.ts.map +0 -1
  346. package/dist/services/question-data-providers/helpers.js +0 -25
  347. package/dist/services/question-data-providers/helpers.js.map +0 -1
  348. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +0 -14
  349. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +0 -1
  350. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +0 -71
  351. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +0 -1
  352. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +0 -16
  353. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +0 -1
  354. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +0 -93
  355. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +0 -1
  356. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +0 -11
  357. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +0 -1
  358. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +0 -49
  359. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +0 -1
  360. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +0 -11
  361. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts.map +0 -1
  362. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js +0 -47
  363. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js.map +0 -1
  364. package/dist/services/sql-expression-resolver.service.d.ts +0 -12
  365. package/dist/services/sql-expression-resolver.service.d.ts.map +0 -1
  366. package/dist/services/sql-expression-resolver.service.js +0 -121
  367. package/dist/services/sql-expression-resolver.service.js.map +0 -1
  368. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +0 -16
  369. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +0 -1
  370. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js +0 -72
  371. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +0 -1
  372. package/dist/subscribers/dashboard-question.subscriber.d.ts +0 -16
  373. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +0 -1
  374. package/dist/subscribers/dashboard-question.subscriber.js +0 -72
  375. package/dist/subscribers/dashboard-question.subscriber.js.map +0 -1
  376. package/dist/subscribers/dashboard-variable.subscriber.d.ts +0 -16
  377. package/dist/subscribers/dashboard-variable.subscriber.d.ts.map +0 -1
  378. package/dist/subscribers/dashboard-variable.subscriber.js +0 -72
  379. package/dist/subscribers/dashboard-variable.subscriber.js.map +0 -1
  380. package/dist/subscribers/dashboard.subscriber.d.ts +0 -16
  381. package/dist/subscribers/dashboard.subscriber.d.ts.map +0 -1
  382. package/dist/subscribers/dashboard.subscriber.js +0 -71
  383. package/dist/subscribers/dashboard.subscriber.js.map +0 -1
  384. package/src/controllers/dashboard-layout.controller.ts +0 -106
  385. package/src/controllers/dashboard-question-sql-dataset-config.controller.ts +0 -93
  386. package/src/controllers/dashboard-question.controller.ts +0 -104
  387. package/src/decorators/dashboard-question-data-provider.decorator.ts +0 -7
  388. package/src/decorators/dashboard-selection-provider.decorator.ts +0 -7
  389. package/src/dtos/create-dashboard-layout.dto.ts +0 -31
  390. package/src/dtos/create-dashboard-question-sql-dataset-config.dto.ts +0 -42
  391. package/src/dtos/create-dashboard-question.dto.ts +0 -62
  392. package/src/dtos/create-dashboard-variable.dto.ts +0 -60
  393. package/src/dtos/create-dashboard.dto.ts +0 -61
  394. package/src/dtos/dashboard-variable-selection-dynamic-query.dto.ts +0 -29
  395. package/src/dtos/update-dashboard-layout.dto.ts +0 -30
  396. package/src/dtos/update-dashboard-question-sql-dataset-config.dto.ts +0 -49
  397. package/src/dtos/update-dashboard-question.dto.ts +0 -67
  398. package/src/dtos/update-dashboard-variable.dto.ts +0 -58
  399. package/src/dtos/update-dashboard.dto.ts +0 -65
  400. package/src/entities/dashboard-layout.entity.ts +0 -18
  401. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +0 -37
  402. package/src/entities/dashboard-question.entity.ts +0 -46
  403. package/src/entities/dashboard-variable.entity.ts +0 -44
  404. package/src/entities/dashboard.entity.ts +0 -36
  405. package/src/mappers/dashboard-mapper.ts +0 -53
  406. package/src/repository/dashboard-layout.repository.ts +0 -17
  407. package/src/repository/dashboard-question-sql-dataset-config.repository.ts +0 -17
  408. package/src/repository/dashboard-question.repository.ts +0 -17
  409. package/src/repository/dashboard-variable.repository.ts +0 -17
  410. package/src/repository/dashboard.repository.ts +0 -101
  411. package/src/services/dashboard-layout.service.ts +0 -111
  412. package/src/services/dashboard-question-sql-dataset-config.service.ts +0 -25
  413. package/src/services/dashboard-question.service.ts +0 -150
  414. package/src/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.ts +0 -56
  415. package/src/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.ts +0 -37
  416. package/src/services/dashboard-variable.service.ts +0 -27
  417. package/src/services/dashboard.service.ts +0 -148
  418. package/src/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.ts +0 -43
  419. package/src/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.ts +0 -44
  420. package/src/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.ts +0 -114
  421. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.ts +0 -38
  422. package/src/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.ts +0 -40
  423. package/src/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.ts +0 -39
  424. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +0 -121
  425. package/src/services/question-data-providers/helpers.ts +0 -30
  426. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +0 -74
  427. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +0 -115
  428. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +0 -44
  429. package/src/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.ts +0 -41
  430. package/src/services/sql-expression-resolver.service.ts +0 -140
  431. package/src/subscribers/dashboard-question-sql-dataset-config.subscriber.ts +0 -61
  432. package/src/subscribers/dashboard-question.subscriber.ts +0 -62
  433. package/src/subscribers/dashboard-variable.subscriber.ts +0 -63
  434. package/src/subscribers/dashboard.subscriber.ts +0 -62
@@ -0,0 +1,45 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
4
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
5
+ import { applyMqDashboardFilters, MQ_INFLIGHT_STAGES } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ @DashboardWidgetDataProvider()
8
+ @Injectable()
9
+ export class MqDashboardInflightMessagesKpiProvider implements IDashboardWidgetDataProvider {
10
+ constructor(
11
+ private readonly mqMessageRepository: MqMessageRepository,
12
+ ) { }
13
+
14
+ name(): string {
15
+ return "MqDashboardInflightMessagesKpiProvider";
16
+ }
17
+
18
+ help(): string {
19
+ return "Returns in-flight mq message count after applying dashboard variables.";
20
+ }
21
+
22
+ async getData(
23
+ widgetDefinition: Record<string, any>,
24
+ ctxt: IDashboardWidgetDataProviderContext,
25
+ ): Promise<IDashboardWidgetDataResponseEnvelope<{ value: number; label: string }>> {
26
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
27
+ applyMqDashboardFilters(qb, ctxt.variables ?? {}, { ignoreStage: true });
28
+ qb.andWhere("mqMessage.stage IN (:...stages)", { stages: MQ_INFLIGHT_STAGES });
29
+
30
+ const value = await qb.getCount();
31
+ return {
32
+ meta: {
33
+ providerName: this.name(),
34
+ generatedAt: new Date().toISOString(),
35
+ widgetName: ctxt.widgetName,
36
+ durationMs: 0,
37
+ },
38
+ data: {
39
+ value,
40
+ label: widgetDefinition?.name ?? "In Flight",
41
+ },
42
+ };
43
+ }
44
+ }
45
+
@@ -0,0 +1,58 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
4
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
5
+ import { applyMqDashboardFilters, normalizeBucket, toNumber } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ @DashboardWidgetDataProvider()
8
+ @Injectable()
9
+ export class MqDashboardLatencyTrendProvider implements IDashboardWidgetDataProvider {
10
+ constructor(
11
+ private readonly mqMessageRepository: MqMessageRepository,
12
+ ) { }
13
+
14
+ name(): string {
15
+ return "MqDashboardLatencyTrendProvider";
16
+ }
17
+
18
+ help(): string {
19
+ return "Returns average elapsed millis trend over time buckets after applying dashboard variables.";
20
+ }
21
+
22
+ async getData(
23
+ widgetDefinition: Record<string, any>,
24
+ ctxt: IDashboardWidgetDataProviderContext,
25
+ ): Promise<IDashboardWidgetDataResponseEnvelope<any>> {
26
+ const bucket = normalizeBucket(ctxt?.providerContext?.bucket);
27
+
28
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
29
+ applyMqDashboardFilters(qb, ctxt.variables ?? {});
30
+ qb.andWhere("mqMessage.elapsedMillis IS NOT NULL");
31
+
32
+ const bucketExpr = `DATE_TRUNC('${bucket}', mqMessage.createdAt)`;
33
+ const rows = await qb
34
+ .select(bucketExpr, "bucket")
35
+ .addSelect("AVG(mqMessage.elapsedMillis)", "value")
36
+ .groupBy(bucketExpr)
37
+ .orderBy("bucket", "ASC")
38
+ .getRawMany<{ bucket: string; value: string | number }>();
39
+
40
+ const categories = rows.map((r) => new Date(r.bucket).toISOString());
41
+ const values = rows.map((r) => Number(toNumber(r.value).toFixed(2)));
42
+
43
+ return {
44
+ meta: {
45
+ providerName: this.name(),
46
+ generatedAt: new Date().toISOString(),
47
+ widgetName: ctxt.widgetName,
48
+ durationMs: 0,
49
+ },
50
+ data: {
51
+ categories,
52
+ series: [{ name: "avg_elapsed_millis", data: values }],
53
+ bucket,
54
+ },
55
+ };
56
+ }
57
+ }
58
+
@@ -0,0 +1,79 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
4
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
5
+ import { applyMqDashboardFilters, normalizeBucket, toNumber } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ @DashboardWidgetDataProvider()
8
+ @Injectable()
9
+ export class MqDashboardMessagesOverTimeProvider implements IDashboardWidgetDataProvider {
10
+ constructor(
11
+ private readonly mqMessageRepository: MqMessageRepository,
12
+ ) { }
13
+
14
+ name(): string {
15
+ return "MqDashboardMessagesOverTimeProvider";
16
+ }
17
+
18
+ help(): string {
19
+ return "Returns time-series message counts by stage (and total) after applying dashboard variables.";
20
+ }
21
+
22
+ async getData(
23
+ widgetDefinition: Record<string, any>,
24
+ ctxt: IDashboardWidgetDataProviderContext,
25
+ ): Promise<IDashboardWidgetDataResponseEnvelope<any>> {
26
+ const bucket = normalizeBucket(ctxt?.providerContext?.bucket);
27
+ const requestedSeries: string[] = Array.isArray(ctxt?.providerContext?.series) && ctxt.providerContext.series.length > 0
28
+ ? ctxt.providerContext.series
29
+ : ["total", "succeeded", "failed", "retrying"];
30
+
31
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
32
+ applyMqDashboardFilters(qb, ctxt.variables ?? {});
33
+
34
+ const bucketExpr = `DATE_TRUNC('${bucket}', mqMessage.createdAt)`;
35
+ const rows = await qb
36
+ .select(bucketExpr, "bucket")
37
+ .addSelect("mqMessage.stage", "stage")
38
+ .addSelect("COUNT(mqMessage.id)", "count")
39
+ .groupBy(bucketExpr)
40
+ .addGroupBy("mqMessage.stage")
41
+ .orderBy("bucket", "ASC")
42
+ .getRawMany<{ bucket: string; stage: string; count: string | number }>();
43
+
44
+ const bucketToStageMap = new Map<string, Record<string, number>>();
45
+ for (const row of rows) {
46
+ const key = new Date(row.bucket).toISOString();
47
+ const entry = bucketToStageMap.get(key) ?? {};
48
+ entry[row.stage] = (entry[row.stage] ?? 0) + toNumber(row.count, 0);
49
+ bucketToStageMap.set(key, entry);
50
+ }
51
+
52
+ const categories = Array.from(bucketToStageMap.keys()).sort();
53
+ const series = requestedSeries.map((seriesName) => {
54
+ const data = categories.map((category) => {
55
+ const stageMap = bucketToStageMap.get(category) ?? {};
56
+ if (seriesName === "total") {
57
+ return Object.values(stageMap).reduce((sum, value) => sum + value, 0);
58
+ }
59
+ return stageMap[seriesName] ?? 0;
60
+ });
61
+ return { name: seriesName, data };
62
+ });
63
+
64
+ return {
65
+ meta: {
66
+ providerName: this.name(),
67
+ generatedAt: new Date().toISOString(),
68
+ widgetName: ctxt.widgetName,
69
+ durationMs: 0,
70
+ },
71
+ data: {
72
+ categories,
73
+ series,
74
+ bucket,
75
+ },
76
+ };
77
+ }
78
+ }
79
+
@@ -0,0 +1,165 @@
1
+ import { MqMessage } from "src/entities/mq-message.entity";
2
+ import { SelectQueryBuilder } from "typeorm";
3
+
4
+ export const MQ_INFLIGHT_STAGES = ['pending', 'scheduled', 'started', 'retry', 'retrying'];
5
+
6
+ export interface MqDashboardVariables {
7
+ date?: any;
8
+ queueName?: string | string[];
9
+ stage?: string | string[];
10
+ messageBroker?: string | string[];
11
+ }
12
+
13
+ export interface ApplyMqDashboardFiltersOptions {
14
+ ignoreStage?: boolean;
15
+ ensureQueueJoin?: boolean;
16
+ }
17
+
18
+ export function applyMqDashboardFilters(
19
+ qb: SelectQueryBuilder<MqMessage>,
20
+ variables: MqDashboardVariables = {},
21
+ options: ApplyMqDashboardFiltersOptions = {},
22
+ ): SelectQueryBuilder<MqMessage> {
23
+ applyDateFilter(qb, variables.date);
24
+ applyStringOrArrayFilter(qb, 'mqMessage.messageBroker', variables.messageBroker, 'messageBroker');
25
+
26
+ if (!options.ignoreStage) {
27
+ applyStringOrArrayFilter(qb, 'mqMessage.stage', variables.stage, 'stage');
28
+ }
29
+
30
+ if (
31
+ options.ensureQueueJoin ||
32
+ (variables.queueName !== undefined && variables.queueName !== null && variables.queueName !== '')
33
+ ) {
34
+ qb.leftJoin('mqMessage.mqMessageQueue', 'mqMessageQueue');
35
+ }
36
+
37
+ if (variables.queueName !== undefined && variables.queueName !== null && variables.queueName !== '') {
38
+ applyStringOrArrayFilter(qb, 'mqMessageQueue.name', variables.queueName, 'queueName');
39
+ }
40
+
41
+ return qb;
42
+ }
43
+
44
+ export function normalizeBucket(value: string | undefined): 'hour' | 'day' | 'week' | 'month' {
45
+ const v = `${value ?? ''}`.toLowerCase();
46
+ if (v === 'hour' || v === 'day' || v === 'week' || v === 'month') {
47
+ return v;
48
+ }
49
+ return 'hour';
50
+ }
51
+
52
+ export function toNumber(value: any, fallback = 0): number {
53
+ const n = Number(value);
54
+ return Number.isFinite(n) ? n : fallback;
55
+ }
56
+
57
+
58
+ function applyDateFilter(qb: SelectQueryBuilder<MqMessage>, dateVariable: any): void {
59
+ const range = resolveDateRange(dateVariable);
60
+ if (range.from) {
61
+ qb.andWhere('mqMessage.createdAt >= :dashboardDateFrom', { dashboardDateFrom: range.from.toISOString() });
62
+ }
63
+ if (range.to) {
64
+ qb.andWhere('mqMessage.createdAt <= :dashboardDateTo', { dashboardDateTo: range.to.toISOString() });
65
+ }
66
+ }
67
+
68
+ function applyStringOrArrayFilter(
69
+ qb: SelectQueryBuilder<MqMessage>,
70
+ qualifiedColumn: string,
71
+ value: string | string[] | undefined,
72
+ paramKey: string,
73
+ ) {
74
+ if (value === undefined || value === null || value === '') {
75
+ return;
76
+ }
77
+
78
+ const values = Array.isArray(value) ? value.filter((v) => !!v) : [value];
79
+ if (values.length === 0) {
80
+ return;
81
+ }
82
+
83
+ if (values.length === 1) {
84
+ qb.andWhere(`${qualifiedColumn} = :${paramKey}`, { [paramKey]: values[0] });
85
+ return;
86
+ }
87
+
88
+ qb.andWhere(`${qualifiedColumn} IN (:...${paramKey})`, { [paramKey]: values });
89
+ }
90
+
91
+ function resolveDateRange(dateVariable: any): { from?: Date; to?: Date } {
92
+ if (!dateVariable) return {};
93
+
94
+ if (Array.isArray(dateVariable) && dateVariable.length >= 2) {
95
+ return {
96
+ from: parseDate(dateVariable[0]),
97
+ to: parseDate(dateVariable[1]),
98
+ };
99
+ }
100
+
101
+ if (typeof dateVariable === 'object') {
102
+ const presetRange = resolvePresetRange(dateVariable.preset);
103
+ const from = parseDate(dateVariable.from ?? dateVariable.start ?? dateVariable.startDate) ?? presetRange.from;
104
+ const to = parseDate(dateVariable.to ?? dateVariable.end ?? dateVariable.endDate) ?? presetRange.to;
105
+ return { from, to };
106
+ }
107
+
108
+ if (typeof dateVariable === 'string') {
109
+ const presetRange = resolvePresetRange(dateVariable);
110
+ if (presetRange.from || presetRange.to) {
111
+ return presetRange;
112
+ }
113
+ const parsed = parseDate(dateVariable);
114
+ if (!parsed) return {};
115
+ return { from: parsed, to: parsed };
116
+ }
117
+
118
+ return {};
119
+ }
120
+
121
+ function parseDate(value: any): Date | undefined {
122
+ if (!value) return undefined;
123
+ const d = new Date(value);
124
+ if (Number.isNaN(d.getTime())) return undefined;
125
+ return d;
126
+ }
127
+
128
+ function resolvePresetRange(preset: string | undefined): { from?: Date; to?: Date } {
129
+ if (!preset) return {};
130
+
131
+ const now = new Date();
132
+ const to = new Date(now);
133
+ switch (preset) {
134
+ case 'today': {
135
+ const from = new Date(now);
136
+ from.setHours(0, 0, 0, 0);
137
+ return { from, to };
138
+ }
139
+ case 'yesterday': {
140
+ const from = new Date(now);
141
+ from.setDate(from.getDate() - 1);
142
+ from.setHours(0, 0, 0, 0);
143
+ const end = new Date(from);
144
+ end.setHours(23, 59, 59, 999);
145
+ return { from, to: end };
146
+ }
147
+ case 'last_24_hours': {
148
+ const from = new Date(now);
149
+ from.setHours(from.getHours() - 24);
150
+ return { from, to };
151
+ }
152
+ case 'last_7_days': {
153
+ const from = new Date(now);
154
+ from.setDate(from.getDate() - 7);
155
+ return { from, to };
156
+ }
157
+ case 'last_30_days': {
158
+ const from = new Date(now);
159
+ from.setDate(from.getDate() - 30);
160
+ return { from, to };
161
+ }
162
+ default:
163
+ return {};
164
+ }
165
+ }
@@ -0,0 +1,155 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
4
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
5
+ import { applyMqDashboardFilters, normalizeBucket, toNumber } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ type HeatmapLegendThreshold = {
8
+ label: string;
9
+ color: string;
10
+ lte?: number;
11
+ gte?: number;
12
+ gt?: number;
13
+ };
14
+
15
+ type HeatmapPointDetail = {
16
+ xIndex: number;
17
+ yIndex: number;
18
+ bucket: string;
19
+ queueName: string;
20
+ avgElapsedMillis: number;
21
+ messageCount: number;
22
+ peakElapsedMillis: number;
23
+ };
24
+
25
+ type QueueSlaHeatmapResponse = {
26
+ xCategories: string[];
27
+ yCategories: string[];
28
+ points: [number, number, number][];
29
+ metric: string;
30
+ bucket: string;
31
+ tooltipFields?: string[];
32
+ pointDetails?: HeatmapPointDetail[];
33
+ legendThresholds?: HeatmapLegendThreshold[];
34
+ };
35
+
36
+ const DEFAULT_LEGEND_THRESHOLDS: HeatmapLegendThreshold[] = [
37
+ { label: "0-5s", color: "#22c55e", lte: 5000 },
38
+ { label: "5-15s", color: "#f59e0b", gt: 5000, lte: 15000 },
39
+ { label: "15-30s", color: "#f97316", gt: 15000, lte: 30000 },
40
+ { label: "30s+", color: "#ef4444", gt: 30000 },
41
+ ];
42
+
43
+ @DashboardWidgetDataProvider()
44
+ @Injectable()
45
+ export class MqDashboardQueueSlaHeatmapProvider implements IDashboardWidgetDataProvider {
46
+ constructor(
47
+ private readonly mqMessageRepository: MqMessageRepository,
48
+ ) { }
49
+
50
+ name(): string {
51
+ return "MqDashboardQueueSlaHeatmapProvider";
52
+ }
53
+
54
+ help(): string {
55
+ return "Returns queue-wise SLA heatmap data using average elapsed millis across time buckets.";
56
+ }
57
+
58
+ async getData(
59
+ widgetDefinition: Record<string, any>,
60
+ ctxt: IDashboardWidgetDataProviderContext,
61
+ ): Promise<IDashboardWidgetDataResponseEnvelope<QueueSlaHeatmapResponse>> {
62
+ const bucket = normalizeBucket(ctxt?.providerContext?.bucket);
63
+ const legendThresholds = Array.isArray(ctxt?.providerContext?.legendThresholds) && ctxt.providerContext.legendThresholds.length > 0
64
+ ? ctxt.providerContext.legendThresholds
65
+ : DEFAULT_LEGEND_THRESHOLDS;
66
+ const tooltipFields = Array.isArray(ctxt?.providerContext?.tooltipFields) && ctxt.providerContext.tooltipFields.length > 0
67
+ ? ctxt.providerContext.tooltipFields
68
+ : ["avgElapsedMillis", "messageCount", "peakElapsedMillis"];
69
+
70
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
71
+ applyMqDashboardFilters(qb, ctxt.variables ?? {}, { ensureQueueJoin: true });
72
+ qb.andWhere("mqMessage.elapsedMillis IS NOT NULL");
73
+
74
+ const bucketExpr = `DATE_TRUNC('${bucket}', mqMessage.createdAt)`;
75
+ const rows = await qb
76
+ .select(bucketExpr, "bucket")
77
+ .addSelect("mqMessageQueue.name", "queueName")
78
+ .addSelect("AVG(mqMessage.elapsedMillis)", "avgElapsedMillis")
79
+ .addSelect("COUNT(mqMessage.id)", "messageCount")
80
+ .addSelect("MAX(mqMessage.elapsedMillis)", "peakElapsedMillis")
81
+ .groupBy(bucketExpr)
82
+ .addGroupBy("mqMessageQueue.name")
83
+ .orderBy("bucket", "ASC")
84
+ .addOrderBy("mqMessageQueue.name", "ASC")
85
+ .getRawMany<{
86
+ bucket: string;
87
+ queueName: string;
88
+ avgElapsedMillis: string | number;
89
+ messageCount: string | number;
90
+ peakElapsedMillis: string | number;
91
+ }>();
92
+
93
+ const xCategories = Array.from(
94
+ new Set(
95
+ rows
96
+ .map((row) => row?.bucket ? new Date(row.bucket).toISOString() : "")
97
+ .filter((bucketValue) => !!bucketValue)
98
+ )
99
+ ).sort();
100
+ const yCategories = Array.from(
101
+ new Set(rows.map((row) => `${row?.queueName ?? ""}`.trim()).filter((queueName) => !!queueName))
102
+ ).sort((left, right) => left.localeCompare(right));
103
+
104
+ const xIndexMap = new Map(xCategories.map((value, index) => [value, index]));
105
+ const yIndexMap = new Map(yCategories.map((value, index) => [value, index]));
106
+
107
+ const points: [number, number, number][] = [];
108
+ const pointDetails: HeatmapPointDetail[] = [];
109
+
110
+ for (const row of rows) {
111
+ const bucketValue = row?.bucket ? new Date(row.bucket).toISOString() : "";
112
+ const queueName = `${row?.queueName ?? ""}`.trim();
113
+ const xIndex = xIndexMap.get(bucketValue);
114
+ const yIndex = yIndexMap.get(queueName);
115
+
116
+ if (xIndex === undefined || yIndex === undefined) {
117
+ continue;
118
+ }
119
+
120
+ const avgElapsedMillis = Number(toNumber(row.avgElapsedMillis).toFixed(2));
121
+ const messageCount = toNumber(row.messageCount);
122
+ const peakElapsedMillis = Number(toNumber(row.peakElapsedMillis).toFixed(2));
123
+
124
+ points.push([xIndex, yIndex, avgElapsedMillis]);
125
+ pointDetails.push({
126
+ xIndex,
127
+ yIndex,
128
+ bucket: bucketValue,
129
+ queueName,
130
+ avgElapsedMillis,
131
+ messageCount,
132
+ peakElapsedMillis,
133
+ });
134
+ }
135
+
136
+ return {
137
+ meta: {
138
+ providerName: this.name(),
139
+ generatedAt: new Date().toISOString(),
140
+ widgetName: ctxt.widgetName,
141
+ durationMs: 0,
142
+ },
143
+ data: {
144
+ xCategories,
145
+ yCategories,
146
+ points,
147
+ metric: "avg_elapsed_millis",
148
+ bucket,
149
+ tooltipFields,
150
+ pointDetails,
151
+ legendThresholds,
152
+ },
153
+ };
154
+ }
155
+ }
@@ -0,0 +1,51 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
4
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
5
+ import { applyMqDashboardFilters, toNumber } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ @DashboardWidgetDataProvider()
8
+ @Injectable()
9
+ export class MqDashboardQueueWiseAvgElapsedProvider implements IDashboardWidgetDataProvider {
10
+ constructor(
11
+ private readonly mqMessageRepository: MqMessageRepository,
12
+ ) { }
13
+
14
+ name(): string {
15
+ return "MqDashboardQueueWiseAvgElapsedProvider";
16
+ }
17
+
18
+ help(): string {
19
+ return "Returns queue-wise average elapsed millis after applying dashboard variables.";
20
+ }
21
+
22
+ async getData(
23
+ widgetDefinition: Record<string, any>,
24
+ ctxt: IDashboardWidgetDataProviderContext,
25
+ ): Promise<IDashboardWidgetDataResponseEnvelope<any>> {
26
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
27
+ applyMqDashboardFilters(qb, ctxt.variables ?? {}, { ensureQueueJoin: true });
28
+ qb.andWhere("mqMessage.elapsedMillis IS NOT NULL");
29
+
30
+ const rows = await qb
31
+ .select("mqMessageQueue.name", "category")
32
+ .addSelect("AVG(mqMessage.elapsedMillis)", "value")
33
+ .groupBy("mqMessageQueue.name")
34
+ .orderBy("value", "DESC")
35
+ .getRawMany<{ category: string; value: string | number }>();
36
+
37
+ return {
38
+ meta: {
39
+ providerName: this.name(),
40
+ generatedAt: new Date().toISOString(),
41
+ widgetName: ctxt.widgetName,
42
+ durationMs: 0,
43
+ },
44
+ data: {
45
+ categories: rows.map((r) => r.category),
46
+ series: [{ name: "avg_elapsed_millis", data: rows.map((r) => Number(toNumber(r.value).toFixed(2))) }],
47
+ },
48
+ };
49
+ }
50
+ }
51
+
@@ -0,0 +1,51 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { DashboardWidgetDataProvider } from "src/decorators/dashboard-widget-data-provider.decorator";
3
+ import { MqMessageRepository } from "src/repository/mq-message.repository";
4
+ import { IDashboardWidgetDataProvider, IDashboardWidgetDataProviderContext, IDashboardWidgetDataResponseEnvelope } from "src/interfaces";
5
+ import { applyMqDashboardFilters, toNumber } from "src/services/dashboard-providers/mq-dashboard-provider-utils";
6
+
7
+ @DashboardWidgetDataProvider()
8
+ @Injectable()
9
+ export class MqDashboardQueueWiseFailuresProvider implements IDashboardWidgetDataProvider {
10
+ constructor(
11
+ private readonly mqMessageRepository: MqMessageRepository,
12
+ ) { }
13
+
14
+ name(): string {
15
+ return "MqDashboardQueueWiseFailuresProvider";
16
+ }
17
+
18
+ help(): string {
19
+ return "Returns queue-wise failed message count after applying dashboard variables.";
20
+ }
21
+
22
+ async getData(
23
+ widgetDefinition: Record<string, any>,
24
+ ctxt: IDashboardWidgetDataProviderContext,
25
+ ): Promise<IDashboardWidgetDataResponseEnvelope<any>> {
26
+ const qb = await this.mqMessageRepository.createSecurityRuleAwareQueryBuilder("mqMessage");
27
+ applyMqDashboardFilters(qb, ctxt.variables ?? {}, { ignoreStage: true, ensureQueueJoin: true });
28
+ qb.andWhere("mqMessage.stage = :failedStage", { failedStage: "failed" });
29
+
30
+ const rows = await qb
31
+ .select("mqMessageQueue.name", "category")
32
+ .addSelect("COUNT(mqMessage.id)", "value")
33
+ .groupBy("mqMessageQueue.name")
34
+ .orderBy("value", "DESC")
35
+ .getRawMany<{ category: string; value: string | number }>();
36
+
37
+ return {
38
+ meta: {
39
+ providerName: this.name(),
40
+ generatedAt: new Date().toISOString(),
41
+ widgetName: ctxt.widgetName,
42
+ durationMs: 0,
43
+ },
44
+ data: {
45
+ categories: rows.map((r) => r.category),
46
+ series: [{ name: "failed_count", data: rows.map((r) => toNumber(r.value)) }],
47
+ },
48
+ };
49
+ }
50
+ }
51
+