@solidstarters/solid-core 1.2.134 → 1.2.136

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 (300) hide show
  1. package/dist/controllers/ai-interaction.controller.d.ts +46 -0
  2. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -0
  3. package/dist/controllers/ai-interaction.controller.js +204 -0
  4. package/dist/controllers/ai-interaction.controller.js.map +1 -0
  5. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +43 -0
  6. package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +1 -0
  7. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js +179 -0
  8. package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +1 -0
  9. package/dist/controllers/dashboard-question.controller.d.ts +45 -0
  10. package/dist/controllers/dashboard-question.controller.d.ts.map +1 -0
  11. package/dist/controllers/dashboard-question.controller.js +194 -0
  12. package/dist/controllers/dashboard-question.controller.js.map +1 -0
  13. package/dist/controllers/dashboard-variable.controller.d.ts +43 -0
  14. package/dist/controllers/dashboard-variable.controller.d.ts.map +1 -0
  15. package/dist/controllers/dashboard-variable.controller.js +179 -0
  16. package/dist/controllers/dashboard-variable.controller.js.map +1 -0
  17. package/dist/controllers/dashboard.controller.d.ts +45 -0
  18. package/dist/controllers/dashboard.controller.d.ts.map +1 -0
  19. package/dist/controllers/dashboard.controller.js +192 -0
  20. package/dist/controllers/dashboard.controller.js.map +1 -0
  21. package/dist/controllers/test.controller.d.ts.map +1 -1
  22. package/dist/controllers/test.controller.js.map +1 -1
  23. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts +3 -0
  24. package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +1 -0
  25. package/dist/decorators/dashboard-question-data-provider.decorator.js +11 -0
  26. package/dist/decorators/dashboard-question-data-provider.decorator.js.map +1 -0
  27. package/dist/decorators/dashboard-selection-provider.decorator.d.ts +3 -0
  28. package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +1 -0
  29. package/dist/decorators/dashboard-selection-provider.decorator.js +11 -0
  30. package/dist/decorators/dashboard-selection-provider.decorator.js.map +1 -0
  31. package/dist/dtos/create-ai-interaction.dto.d.ts +14 -0
  32. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -0
  33. package/dist/dtos/create-ai-interaction.dto.js +90 -0
  34. package/dist/dtos/create-ai-interaction.dto.js.map +1 -0
  35. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts +12 -0
  36. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  37. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js +77 -0
  38. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  39. package/dist/dtos/create-dashboard-question.dto.d.ts +17 -0
  40. package/dist/dtos/create-dashboard-question.dto.d.ts.map +1 -0
  41. package/dist/dtos/create-dashboard-question.dto.js +105 -0
  42. package/dist/dtos/create-dashboard-question.dto.js.map +1 -0
  43. package/dist/dtos/create-dashboard-variable.dto.d.ts +18 -0
  44. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +1 -0
  45. package/dist/dtos/create-dashboard-variable.dto.js +97 -0
  46. package/dist/dtos/create-dashboard-variable.dto.js.map +1 -0
  47. package/dist/dtos/create-dashboard.dto.d.ts +15 -0
  48. package/dist/dtos/create-dashboard.dto.d.ts.map +1 -0
  49. package/dist/dtos/create-dashboard.dto.js +90 -0
  50. package/dist/dtos/create-dashboard.dto.js.map +1 -0
  51. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +8 -0
  52. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts.map +1 -0
  53. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js +52 -0
  54. package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.js.map +1 -0
  55. package/dist/dtos/invoke-ai-prompt.dto.d.ts +4 -0
  56. package/dist/dtos/invoke-ai-prompt.dto.d.ts.map +1 -0
  57. package/dist/dtos/invoke-ai-prompt.dto.js +25 -0
  58. package/dist/dtos/invoke-ai-prompt.dto.js.map +1 -0
  59. package/dist/dtos/update-ai-interaction.dto.d.ts +15 -0
  60. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -0
  61. package/dist/dtos/update-ai-interaction.dto.js +96 -0
  62. package/dist/dtos/update-ai-interaction.dto.js.map +1 -0
  63. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts +13 -0
  64. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  65. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js +86 -0
  66. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  67. package/dist/dtos/update-dashboard-question.dto.d.ts +18 -0
  68. package/dist/dtos/update-dashboard-question.dto.d.ts.map +1 -0
  69. package/dist/dtos/update-dashboard-question.dto.js +112 -0
  70. package/dist/dtos/update-dashboard-question.dto.js.map +1 -0
  71. package/dist/dtos/update-dashboard-variable.dto.d.ts +15 -0
  72. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +1 -0
  73. package/dist/dtos/update-dashboard-variable.dto.js +95 -0
  74. package/dist/dtos/update-dashboard-variable.dto.js.map +1 -0
  75. package/dist/dtos/update-dashboard.dto.d.ts +16 -0
  76. package/dist/dtos/update-dashboard.dto.d.ts.map +1 -0
  77. package/dist/dtos/update-dashboard.dto.js +96 -0
  78. package/dist/dtos/update-dashboard.dto.js.map +1 -0
  79. package/dist/entities/ai-interaction.entity.d.ts +15 -0
  80. package/dist/entities/ai-interaction.entity.d.ts.map +1 -0
  81. package/dist/entities/ai-interaction.entity.js +70 -0
  82. package/dist/entities/ai-interaction.entity.js.map +1 -0
  83. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +13 -0
  84. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -0
  85. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +60 -0
  86. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -0
  87. package/dist/entities/dashboard-question.entity.d.ts +16 -0
  88. package/dist/entities/dashboard-question.entity.d.ts.map +1 -0
  89. package/dist/entities/dashboard-question.entity.js +71 -0
  90. package/dist/entities/dashboard-question.entity.js.map +1 -0
  91. package/dist/entities/dashboard-variable.entity.d.ts +15 -0
  92. package/dist/entities/dashboard-variable.entity.d.ts.map +1 -0
  93. package/dist/entities/dashboard-variable.entity.js +73 -0
  94. package/dist/entities/dashboard-variable.entity.js.map +1 -0
  95. package/dist/entities/dashboard.entity.d.ts +12 -0
  96. package/dist/entities/dashboard.entity.d.ts.map +1 -0
  97. package/dist/entities/dashboard.entity.js +50 -0
  98. package/dist/entities/dashboard.entity.js.map +1 -0
  99. package/dist/helpers/solid-registry.d.ts +9 -1
  100. package/dist/helpers/solid-registry.d.ts.map +1 -1
  101. package/dist/helpers/solid-registry.js +32 -0
  102. package/dist/helpers/solid-registry.js.map +1 -1
  103. package/dist/index.d.ts +10 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +10 -0
  106. package/dist/index.js.map +1 -1
  107. package/dist/interfaces.d.ts +26 -1
  108. package/dist/interfaces.d.ts.map +1 -1
  109. package/dist/interfaces.js.map +1 -1
  110. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +11 -0
  111. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +1 -0
  112. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +39 -0
  113. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +1 -0
  114. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +8 -0
  115. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +1 -0
  116. package/dist/jobs/database/trigger-mcp-client-queue-options.js +10 -0
  117. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +1 -0
  118. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +16 -0
  119. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -0
  120. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +71 -0
  121. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -0
  122. package/dist/mappers/dashboard-mapper.d.ts +6 -0
  123. package/dist/mappers/dashboard-mapper.d.ts.map +1 -0
  124. package/dist/mappers/dashboard-mapper.js +60 -0
  125. package/dist/mappers/dashboard-mapper.js.map +1 -0
  126. package/dist/repository/dashboard.repository.d.ts +9 -0
  127. package/dist/repository/dashboard.repository.d.ts.map +1 -0
  128. package/dist/repository/dashboard.repository.js +98 -0
  129. package/dist/repository/dashboard.repository.js.map +1 -0
  130. package/dist/seeders/module-metadata-seeder.service.d.ts +5 -1
  131. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  132. package/dist/seeders/module-metadata-seeder.service.js +18 -2
  133. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  134. package/dist/seeders/seed-data/solid-core-metadata.json +4172 -2411
  135. package/dist/services/ai-interaction.service.d.ts +31 -0
  136. package/dist/services/ai-interaction.service.d.ts.map +1 -0
  137. package/dist/services/ai-interaction.service.js +182 -0
  138. package/dist/services/ai-interaction.service.js.map +1 -0
  139. package/dist/services/chatter-message.service.d.ts.map +1 -1
  140. package/dist/services/chatter-message.service.js +8 -6
  141. package/dist/services/chatter-message.service.js.map +1 -1
  142. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +22 -0
  143. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -0
  144. package/dist/services/dashboard-question-sql-dataset-config.service.js +56 -0
  145. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -0
  146. package/dist/services/dashboard-question.service.d.ts +29 -0
  147. package/dist/services/dashboard-question.service.d.ts.map +1 -0
  148. package/dist/services/dashboard-question.service.js +117 -0
  149. package/dist/services/dashboard-question.service.js.map +1 -0
  150. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts +12 -0
  151. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts.map +1 -0
  152. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js +55 -0
  153. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js.map +1 -0
  154. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts +11 -0
  155. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts.map +1 -0
  156. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js +45 -0
  157. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js.map +1 -0
  158. package/dist/services/dashboard-variable.service.d.ts +23 -0
  159. package/dist/services/dashboard-variable.service.d.ts.map +1 -0
  160. package/dist/services/dashboard-variable.service.js +57 -0
  161. package/dist/services/dashboard-variable.service.js.map +1 -0
  162. package/dist/services/dashboard.service.d.ts +38 -0
  163. package/dist/services/dashboard.service.d.ts.map +1 -0
  164. package/dist/services/dashboard.service.js +179 -0
  165. package/dist/services/dashboard.service.js.map +1 -0
  166. package/dist/services/field-metadata.service.d.ts.map +1 -1
  167. package/dist/services/field-metadata.service.js +1 -0
  168. package/dist/services/field-metadata.service.js.map +1 -1
  169. package/dist/services/import-transaction.service.d.ts +3 -1
  170. package/dist/services/import-transaction.service.d.ts.map +1 -1
  171. package/dist/services/import-transaction.service.js +22 -0
  172. package/dist/services/import-transaction.service.js.map +1 -1
  173. package/dist/services/list-of-values.service.d.ts +1 -0
  174. package/dist/services/list-of-values.service.d.ts.map +1 -1
  175. package/dist/services/list-of-values.service.js +3 -0
  176. package/dist/services/list-of-values.service.js.map +1 -1
  177. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  178. package/dist/services/menu-item-metadata.service.js +1 -1
  179. package/dist/services/menu-item-metadata.service.js.map +1 -1
  180. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +36 -0
  181. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -0
  182. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +89 -0
  183. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -0
  184. package/dist/services/question-data-providers/helpers.d.ts +7 -0
  185. package/dist/services/question-data-providers/helpers.d.ts.map +1 -0
  186. package/dist/services/question-data-providers/helpers.js +25 -0
  187. package/dist/services/question-data-providers/helpers.js.map +1 -0
  188. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +17 -0
  189. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -0
  190. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +70 -0
  191. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -0
  192. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +19 -0
  193. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -0
  194. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +92 -0
  195. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -0
  196. package/dist/services/queues/publisher-factory.service.js +1 -1
  197. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  198. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  199. package/dist/services/scheduled-jobs/scheduler.service.js +22 -11
  200. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  201. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +11 -0
  202. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +1 -0
  203. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +46 -0
  204. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +1 -0
  205. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +11 -0
  206. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts.map +1 -0
  207. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js +47 -0
  208. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js.map +1 -0
  209. package/dist/services/solid-introspect.service.d.ts +2 -0
  210. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  211. package/dist/services/solid-introspect.service.js +28 -0
  212. package/dist/services/solid-introspect.service.js.map +1 -1
  213. package/dist/services/sql-expression-resolver.service.d.ts +9 -0
  214. package/dist/services/sql-expression-resolver.service.d.ts.map +1 -0
  215. package/dist/services/sql-expression-resolver.service.js +105 -0
  216. package/dist/services/sql-expression-resolver.service.js.map +1 -0
  217. package/dist/solid-core.module.d.ts.map +1 -1
  218. package/dist/solid-core.module.js +75 -1
  219. package/dist/solid-core.module.js.map +1 -1
  220. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +16 -0
  221. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +1 -0
  222. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js +72 -0
  223. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +1 -0
  224. package/dist/subscribers/dashboard-question.subscriber.d.ts +16 -0
  225. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +1 -0
  226. package/dist/subscribers/dashboard-question.subscriber.js +72 -0
  227. package/dist/subscribers/dashboard-question.subscriber.js.map +1 -0
  228. package/dist/subscribers/dashboard-variable.subscriber.d.ts +16 -0
  229. package/dist/subscribers/dashboard-variable.subscriber.d.ts.map +1 -0
  230. package/dist/subscribers/dashboard-variable.subscriber.js +72 -0
  231. package/dist/subscribers/dashboard-variable.subscriber.js.map +1 -0
  232. package/dist/subscribers/dashboard.subscriber.d.ts +15 -0
  233. package/dist/subscribers/dashboard.subscriber.d.ts.map +1 -0
  234. package/dist/subscribers/dashboard.subscriber.js +56 -0
  235. package/dist/subscribers/dashboard.subscriber.js.map +1 -0
  236. package/dist/tsconfig.tsbuildinfo +1 -1
  237. package/package.json +1 -1
  238. package/src/controllers/ai-interaction.controller.ts +104 -0
  239. package/src/controllers/dashboard-question-sql-dataset-config.controller.ts +93 -0
  240. package/src/controllers/dashboard-question.controller.ts +104 -0
  241. package/src/controllers/dashboard-variable.controller.ts +93 -0
  242. package/src/controllers/dashboard.controller.ts +99 -0
  243. package/src/controllers/test.controller.ts +1 -2
  244. package/src/decorators/dashboard-question-data-provider.decorator.ts +7 -0
  245. package/src/decorators/dashboard-selection-provider.decorator.ts +7 -0
  246. package/src/dtos/create-ai-interaction.dto.ts +60 -0
  247. package/src/dtos/create-dashboard-question-sql-dataset-config.dto.ts +42 -0
  248. package/src/dtos/create-dashboard-question.dto.ts +63 -0
  249. package/src/dtos/create-dashboard-variable.dto.ts +56 -0
  250. package/src/dtos/create-dashboard.dto.ts +53 -0
  251. package/src/dtos/dashboard-variable-selection-dynamic-query.dto.ts +29 -0
  252. package/src/dtos/invoke-ai-prompt.dto.ts +6 -0
  253. package/src/dtos/update-ai-interaction.dto.ts +65 -0
  254. package/src/dtos/update-dashboard-question-sql-dataset-config.dto.ts +49 -0
  255. package/src/dtos/update-dashboard-question.dto.ts +68 -0
  256. package/src/dtos/update-dashboard-variable.dto.ts +54 -0
  257. package/src/dtos/update-dashboard.dto.ts +57 -0
  258. package/src/entities/ai-interaction.entity.ts +39 -0
  259. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +25 -0
  260. package/src/entities/dashboard-question.entity.ts +33 -0
  261. package/src/entities/dashboard-variable.entity.ts +30 -0
  262. package/src/entities/dashboard.entity.ts +21 -0
  263. package/src/helpers/solid-registry.ts +44 -2
  264. package/src/index.ts +10 -2
  265. package/src/interfaces.ts +57 -29
  266. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +22 -0
  267. package/src/jobs/database/trigger-mcp-client-queue-options.ts +9 -0
  268. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +71 -0
  269. package/src/mappers/dashboard-mapper.ts +52 -0
  270. package/src/repository/dashboard.repository.ts +101 -0
  271. package/src/seeders/module-metadata-seeder.service.ts +21 -1
  272. package/src/seeders/seed-data/solid-core-metadata.json +4175 -2414
  273. package/src/services/ai-interaction.service.ts +163 -0
  274. package/src/services/chatter-message.service.ts +12 -6
  275. package/src/services/dashboard-question-sql-dataset-config.service.ts +34 -0
  276. package/src/services/dashboard-question.service.ts +115 -0
  277. package/src/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.ts +56 -0
  278. package/src/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.ts +37 -0
  279. package/src/services/dashboard-variable.service.ts +36 -0
  280. package/src/services/dashboard.service.ts +147 -0
  281. package/src/services/field-metadata.service.ts +1 -0
  282. package/src/services/import-transaction.service.ts +29 -1
  283. package/src/services/list-of-values.service.ts +5 -0
  284. package/src/services/menu-item-metadata.service.ts +2 -1
  285. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +125 -0
  286. package/src/services/question-data-providers/helpers.ts +30 -0
  287. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +78 -0
  288. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +119 -0
  289. package/src/services/question-data-providers/test.sql +1 -0
  290. package/src/services/queues/publisher-factory.service.ts +1 -1
  291. package/src/services/scheduled-jobs/scheduler.service.ts +32 -64
  292. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +41 -0
  293. package/src/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.ts +41 -0
  294. package/src/services/solid-introspect.service.ts +42 -0
  295. package/src/services/sql-expression-resolver.service.ts +125 -0
  296. package/src/solid-core.module.ts +77 -2
  297. package/src/subscribers/dashboard-question-sql-dataset-config.subscriber.ts +61 -0
  298. package/src/subscribers/dashboard-question.subscriber.ts +62 -0
  299. package/src/subscribers/dashboard-variable.subscriber.ts +63 -0
  300. package/src/subscribers/dashboard.subscriber.ts +43 -0
@@ -19,6 +19,8 @@ const selection_provider_decorator_1 = require("../decorators/selection-provider
19
19
  const solid_database_module_decorator_1 = require("../decorators/solid-database-module.decorator");
20
20
  const solid_registry_1 = require("../helpers/solid-registry");
21
21
  const scheduled_job_provider_decorator_1 = require("../decorators/scheduled-job-provider.decorator");
22
+ const dashboard_selection_provider_decorator_1 = require("../decorators/dashboard-selection-provider.decorator");
23
+ const dashboard_question_data_provider_decorator_1 = require("../decorators/dashboard-question-data-provider.decorator");
22
24
  let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectService {
23
25
  constructor(discoveryService, reflector, metadataScanner, solidRegistry) {
24
26
  this.discoveryService = discoveryService;
@@ -41,6 +43,18 @@ let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectSer
41
43
  selectionProviders.forEach((selectionProvider) => {
42
44
  this.solidRegistry.registerSelectionProvider(selectionProvider);
43
45
  });
46
+ const dashboardVariableSelectionProviders = this.discoveryService
47
+ .getProviders()
48
+ .filter((provider) => this.isDashboardVariableSelectionProvider(provider));
49
+ dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {
50
+ this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);
51
+ });
52
+ const dashboardQuestionDataProviders = this.discoveryService
53
+ .getProviders()
54
+ .filter((provider) => this.isDashboardQuestionDataProvider(provider));
55
+ dashboardQuestionDataProviders.forEach((provider) => {
56
+ this.solidRegistry.registerDashboardQuestionDataProvider(provider);
57
+ });
44
58
  const computedFieldProviders = this.discoveryService
45
59
  .getProviders()
46
60
  .filter((provider) => this.isComputedFieldProvider(provider));
@@ -74,6 +88,13 @@ let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectSer
74
88
  this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);
75
89
  });
76
90
  }
91
+ isDashboardQuestionDataProvider(providerWrapper) {
92
+ const { instance } = providerWrapper;
93
+ if (!instance)
94
+ return false;
95
+ const provider = this.reflector.get(dashboard_question_data_provider_decorator_1.IS_DASHBOARD_QUESTION_DATA_PROVIDER, instance.constructor);
96
+ return !!provider;
97
+ }
77
98
  isSeeder(provider) {
78
99
  const { instance } = provider;
79
100
  if (!instance)
@@ -92,6 +113,13 @@ let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectSer
92
113
  const isSelectionProvider = this.reflector.get(selection_provider_decorator_1.IS_SELECTION_PROVIDER, instance.constructor);
93
114
  return !!isSelectionProvider;
94
115
  }
116
+ isDashboardVariableSelectionProvider(provider) {
117
+ const { instance } = provider;
118
+ if (!instance)
119
+ return false;
120
+ const isDashboardSelectionProvider = this.reflector.get(dashboard_selection_provider_decorator_1.IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER, instance.constructor);
121
+ return !!isDashboardSelectionProvider;
122
+ }
95
123
  isComputedFieldProvider(provider) {
96
124
  const { instance } = provider;
97
125
  if (!instance)
@@ -1 +1 @@
1
- {"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { CRUDService } from './crud.service';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n onApplicationBootstrap() {\n this.logger.log('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n // @ts-ignore\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n // @ts-ignore\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n // @ts-ignore\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
1
+ {"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { CRUDService } from './crud.service';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\nimport { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';\nimport { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n onApplicationBootstrap() {\n this.logger.log('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n // @ts-ignore\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardVariableSelectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardVariableSelectionProvider(provider));\n\n dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {\n // @ts-ignore\n this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardQuestionDataProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardQuestionDataProvider(provider));\n\n dashboardQuestionDataProviders.forEach((provider) => {\n // @ts-ignore\n this.solidRegistry.registerDashboardQuestionDataProvider(provider);\n });\n\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n // @ts-ignore\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n // @ts-ignore\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n }\n\n isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {\n const { instance } = providerWrapper;\n if (!instance) return false;\n const provider = this.reflector.get<boolean>(\n IS_DASHBOARD_QUESTION_DATA_PROVIDER,\n instance.constructor,\n );\n return !!provider;\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isDashboardVariableSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n const isDashboardSelectionProvider = this.reflector.get<boolean>(\n IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER,\n instance.constructor,\n );\n return !!isDashboardSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { SqlExpression } from "./question-data-providers/chartjs-sql-data-provider.service";
2
+ export interface SqlReplacementResult {
3
+ rawSql: string;
4
+ parameters: any[];
5
+ }
6
+ export declare class SqlExpressionResolverService {
7
+ resolveSqlWithExpressions(sql: string, expressions: SqlExpression[]): SqlReplacementResult;
8
+ }
9
+ //# sourceMappingURL=sql-expression-resolver.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-expression-resolver.service.d.ts","sourceRoot":"","sources":["../../src/services/sql-expression-resolver.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAyB,MAAM,6DAA6D,CAAC;AAEnH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,GAAG,EAAE,CAAC;CACnB;AAED,qBACa,4BAA4B;IACvC,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,oBAAoB;CAkH3F"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SqlExpressionResolverService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const chartjs_sql_data_provider_service_1 = require("./question-data-providers/chartjs-sql-data-provider.service");
12
+ let SqlExpressionResolverService = class SqlExpressionResolverService {
13
+ resolveSqlWithExpressions(sql, expressions) {
14
+ const variableToColumnMap = {};
15
+ const variablePattern = /{{\s*(\w+)\s*\[\s*([\w.]+)\s*\]\s*}}/g;
16
+ let simplifiedSql = sql.replace(variablePattern, (_, variableName, columnName) => {
17
+ variableToColumnMap[variableName] = columnName;
18
+ return `{{${variableName}}}`;
19
+ });
20
+ let paramIndex = 1;
21
+ const parameters = [];
22
+ for (const expr of expressions) {
23
+ const column = variableToColumnMap[expr.variableName];
24
+ if (!column)
25
+ continue;
26
+ let sqlFragment = '';
27
+ const placeholder = `{{${expr.variableName}}}`;
28
+ switch (expr.operator) {
29
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.EQUALS:
30
+ sqlFragment = `${column} = $${paramIndex++}`;
31
+ parameters.push(expr.value[0]);
32
+ break;
33
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.NOT_EQUALS:
34
+ sqlFragment = `${column} != $${paramIndex++}`;
35
+ parameters.push(expr.value[0]);
36
+ break;
37
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.CONTAINS:
38
+ sqlFragment = `${column} LIKE $${paramIndex++}`;
39
+ parameters.push(`%${expr.value[0]}%`);
40
+ break;
41
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.NOT_CONTAINS:
42
+ sqlFragment = `${column} NOT LIKE $${paramIndex++}`;
43
+ parameters.push(`%${expr.value[0]}%`);
44
+ break;
45
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.STARTS_WITH:
46
+ sqlFragment = `${column} LIKE $${paramIndex++}`;
47
+ parameters.push(`${expr.value[0]}%`);
48
+ break;
49
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.ENDS_WITH:
50
+ sqlFragment = `${column} LIKE $${paramIndex++}`;
51
+ parameters.push(`%${expr.value[0]}`);
52
+ break;
53
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.IN:
54
+ const inParams = expr.value.map(val => {
55
+ parameters.push(val);
56
+ return `$${paramIndex++}`;
57
+ });
58
+ sqlFragment = `${column} IN (${inParams.join(", ")})`;
59
+ break;
60
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.NOT_IN:
61
+ const notInParams = expr.value.map(val => {
62
+ parameters.push(val);
63
+ return `$${paramIndex++}`;
64
+ });
65
+ sqlFragment = `${column} NOT IN (${notInParams.join(", ")})`;
66
+ break;
67
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.BETWEEN:
68
+ sqlFragment = `${column} BETWEEN $${paramIndex} AND $${paramIndex + 1}`;
69
+ parameters.push(expr.value[0], expr.value[1]);
70
+ paramIndex += 2;
71
+ break;
72
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.LT:
73
+ sqlFragment = `${column} < $${paramIndex++}`;
74
+ parameters.push(expr.value[0]);
75
+ break;
76
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.LTE:
77
+ sqlFragment = `${column} <= $${paramIndex++}`;
78
+ parameters.push(expr.value[0]);
79
+ break;
80
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.GT:
81
+ sqlFragment = `${column} > $${paramIndex++}`;
82
+ parameters.push(expr.value[0]);
83
+ break;
84
+ case chartjs_sql_data_provider_service_1.SqlExpressionOperator.GTE:
85
+ sqlFragment = `${column} >= $${paramIndex++}`;
86
+ parameters.push(expr.value[0]);
87
+ break;
88
+ default:
89
+ throw new Error(`Unsupported SQL operator: ${expr.operator}`);
90
+ }
91
+ simplifiedSql = simplifiedSql.replace(placeholder, sqlFragment);
92
+ }
93
+ simplifiedSql = simplifiedSql.replace(/{{\s*\w+\s*}}/g, '');
94
+ simplifiedSql = simplifiedSql.replace(/\bwhere\b\s*$/i, '').trim();
95
+ return {
96
+ rawSql: simplifiedSql,
97
+ parameters
98
+ };
99
+ }
100
+ };
101
+ exports.SqlExpressionResolverService = SqlExpressionResolverService;
102
+ exports.SqlExpressionResolverService = SqlExpressionResolverService = __decorate([
103
+ (0, common_1.Injectable)()
104
+ ], SqlExpressionResolverService);
105
+ //# sourceMappingURL=sql-expression-resolver.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-expression-resolver.service.js","sourceRoot":"","sources":["../../src/services/sql-expression-resolver.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { SqlExpression, SqlExpressionOperator } from \"./question-data-providers/chartjs-sql-data-provider.service\";\n\nexport interface SqlReplacementResult {\n rawSql: string;\n parameters: any[]; // Positional parameters\n}\n\n@Injectable()\nexport class SqlExpressionResolverService {\n resolveSqlWithExpressions(sql: string, expressions: SqlExpression[]): SqlReplacementResult {\n const variableToColumnMap: Record<string, string> = {};\n const variablePattern = /{{\\s*(\\w+)\\s*\\[\\s*([\\w.]+)\\s*\\]\\s*}}/g;\n\n // --- Pass 1: extract variable -> column mappings ---\n let simplifiedSql = sql.replace(variablePattern, (_, variableName, columnName) => {\n variableToColumnMap[variableName] = columnName;\n return `{{${variableName}}}`;\n });\n\n // --- Pass 2: Replace each variable with positional fragment ---\n let paramIndex = 1;\n const parameters: any[] = [];\n\n for (const expr of expressions) {\n const column = variableToColumnMap[expr.variableName];\n if (!column) continue;\n\n let sqlFragment = '';\n const placeholder = `{{${expr.variableName}}}`;\n\n switch (expr.operator) {\n case SqlExpressionOperator.EQUALS:\n sqlFragment = `${column} = $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n case SqlExpressionOperator.NOT_EQUALS:\n sqlFragment = `${column} != $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n case SqlExpressionOperator.CONTAINS:\n sqlFragment = `${column} LIKE $${paramIndex++}`;\n parameters.push(`%${expr.value[0]}%`);\n break;\n\n case SqlExpressionOperator.NOT_CONTAINS:\n sqlFragment = `${column} NOT LIKE $${paramIndex++}`;\n parameters.push(`%${expr.value[0]}%`);\n break;\n\n case SqlExpressionOperator.STARTS_WITH:\n sqlFragment = `${column} LIKE $${paramIndex++}`;\n parameters.push(`${expr.value[0]}%`);\n break;\n\n case SqlExpressionOperator.ENDS_WITH:\n sqlFragment = `${column} LIKE $${paramIndex++}`;\n parameters.push(`%${expr.value[0]}`);\n break;\n\n case SqlExpressionOperator.IN:\n const inParams = expr.value.map(val => {\n parameters.push(val);\n return `$${paramIndex++}`;\n });\n sqlFragment = `${column} IN (${inParams.join(\", \")})`;\n break;\n\n case SqlExpressionOperator.NOT_IN:\n const notInParams = expr.value.map(val => {\n parameters.push(val);\n return `$${paramIndex++}`;\n });\n sqlFragment = `${column} NOT IN (${notInParams.join(\", \")})`;\n break;\n\n case SqlExpressionOperator.BETWEEN:\n sqlFragment = `${column} BETWEEN $${paramIndex} AND $${paramIndex + 1}`;\n parameters.push(expr.value[0], expr.value[1]);\n paramIndex += 2;\n break;\n\n case SqlExpressionOperator.LT:\n sqlFragment = `${column} < $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n case SqlExpressionOperator.LTE:\n sqlFragment = `${column} <= $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n case SqlExpressionOperator.GT:\n sqlFragment = `${column} > $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n case SqlExpressionOperator.GTE:\n sqlFragment = `${column} >= $${paramIndex++}`;\n parameters.push(expr.value[0]);\n break;\n\n default:\n throw new Error(`Unsupported SQL operator: ${expr.operator}`);\n }\n simplifiedSql = simplifiedSql.replace(placeholder, sqlFragment);\n }\n\n // --- Final cleanup: remove any remaining placeholders ---\n simplifiedSql = simplifiedSql.replace(/{{\\s*\\w+\\s*}}/g, '');\n\n // Remove dangling where clause if no expressions were applied\n simplifiedSql = simplifiedSql.replace(/\\bwhere\\b\\s*$/i, '').trim();\n\n // Need to handle scenarios of complex expression i.e with and / or clauses. probably need to have this logic in the sql expression object itself\n\n\n return {\n rawSql: simplifiedSql,\n parameters\n };\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AA0NA,qBAiRa,eAAe;CAAI"}
1
+ {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AA2PA,qBA2Ta,eAAe;CAAI"}
@@ -123,9 +123,15 @@ const soft_delete_aware_event_subscriber_1 = require("./subscribers/soft-delete-
123
123
  const permission_metadata_controller_1 = require("./controllers/permission-metadata.controller");
124
124
  const permission_metadata_entity_1 = require("./entities/permission-metadata.entity");
125
125
  const permission_metadata_service_1 = require("./services/permission-metadata.service");
126
+ const schedule_1 = require("@nestjs/schedule");
126
127
  const nestjs_cls_1 = require("nestjs-cls");
128
+ const ai_interaction_controller_1 = require("./controllers/ai-interaction.controller");
127
129
  const chatter_message_details_controller_1 = require("./controllers/chatter-message-details.controller");
128
130
  const chatter_message_controller_1 = require("./controllers/chatter-message.controller");
131
+ const dashboard_question_sql_dataset_config_controller_1 = require("./controllers/dashboard-question-sql-dataset-config.controller");
132
+ const dashboard_question_controller_1 = require("./controllers/dashboard-question.controller");
133
+ const dashboard_variable_controller_1 = require("./controllers/dashboard-variable.controller");
134
+ const dashboard_controller_1 = require("./controllers/dashboard.controller");
129
135
  const export_template_controller_1 = require("./controllers/export-template.controller");
130
136
  const export_transaction_controller_1 = require("./controllers/export-transaction.controller");
131
137
  const import_transaction_error_log_controller_1 = require("./controllers/import-transaction-error-log.controller");
@@ -140,8 +146,13 @@ const setting_controller_1 = require("./controllers/setting.controller");
140
146
  const user_activity_history_controller_1 = require("./controllers/user-activity-history.controller");
141
147
  const user_view_metadata_controller_1 = require("./controllers/user-view-metadata.controller");
142
148
  const user_controller_1 = require("./controllers/user.controller");
149
+ const ai_interaction_entity_1 = require("./entities/ai-interaction.entity");
143
150
  const chatter_message_details_entity_1 = require("./entities/chatter-message-details.entity");
144
151
  const chatter_message_entity_1 = require("./entities/chatter-message.entity");
152
+ const dashboard_question_sql_dataset_config_entity_1 = require("./entities/dashboard-question-sql-dataset-config.entity");
153
+ const dashboard_question_entity_1 = require("./entities/dashboard-question.entity");
154
+ const dashboard_variable_entity_1 = require("./entities/dashboard-variable.entity");
155
+ const dashboard_entity_1 = require("./entities/dashboard.entity");
145
156
  const export_template_entity_1 = require("./entities/export-template.entity");
146
157
  const export_transaction_entity_1 = require("./entities/export-transaction.entity");
147
158
  const import_transaction_error_log_entity_1 = require("./entities/import-transaction-error-log.entity");
@@ -155,6 +166,7 @@ const setting_entity_1 = require("./entities/setting.entity");
155
166
  const user_activity_history_entity_1 = require("./entities/user-activity-history.entity");
156
167
  const user_view_metadata_entity_1 = require("./entities/user-view-metadata.entity");
157
168
  const user_entity_1 = require("./entities/user.entity");
169
+ const http_exception_filter_1 = require("./filters/http-exception.filter");
158
170
  const model_metadata_helper_service_1 = require("./helpers/model-metadata-helper.service");
159
171
  const module_metadata_helper_service_1 = require("./helpers/module-metadata-helper.service");
160
172
  const api_email_publisher_database_service_1 = require("./jobs/database/api-email-publisher-database.service");
@@ -169,19 +181,30 @@ const otp_publisher_database_service_1 = require("./jobs/database/otp-publisher-
169
181
  const otp_subscriber_database_service_1 = require("./jobs/database/otp-subscriber-database.service");
170
182
  const sms_publisher_database_service_1 = require("./jobs/database/sms-publisher-database.service");
171
183
  const sms_subscriber_database_service_1 = require("./jobs/database/sms-subscriber-database.service");
184
+ const trigger_mcp_client_publisher_database_service_1 = require("./jobs/database/trigger-mcp-client-publisher-database.service");
185
+ const trigger_mcp_client_subscriber_database_service_1 = require("./jobs/database/trigger-mcp-client-subscriber-database.service");
172
186
  const whatsapp_publisher_database_service_1 = require("./jobs/database/whatsapp-publisher-database.service");
173
187
  const whatsapp_subscriber_database_service_1 = require("./jobs/database/whatsapp-subscriber-database.service");
188
+ const dashboard_mapper_1 = require("./mappers/dashboard-mapper");
189
+ const dashboard_repository_1 = require("./repository/dashboard.repository");
174
190
  const field_metadata_repository_1 = require("./repository/field-metadata.repository");
175
191
  const field_repository_1 = require("./repository/field.repository");
176
192
  const media_repository_1 = require("./repository/media.repository");
177
193
  const security_rule_repository_1 = require("./repository/security-rule.repository");
178
194
  const permission_metadata_seeder_service_1 = require("./seeders/permission-metadata-seeder.service");
179
195
  const system_fields_seeder_service_1 = require("./seeders/system-fields-seeder.service");
196
+ const ai_interaction_service_1 = require("./services/ai-interaction.service");
180
197
  const chatter_message_details_service_1 = require("./services/chatter-message-details.service");
181
198
  const chatter_message_service_1 = require("./services/chatter-message.service");
182
199
  const concat_computed_field_provider_service_1 = require("./services/computed-fields/concat-computed-field-provider.service");
183
200
  const concat_entity_computed_field_provider_service_1 = require("./services/computed-fields/entity/concat-entity-computed-field-provider.service");
184
201
  const csv_service_1 = require("./services/csv.service");
202
+ const dashboard_question_sql_dataset_config_service_1 = require("./services/dashboard-question-sql-dataset-config.service");
203
+ const dashboard_question_service_1 = require("./services/dashboard-question.service");
204
+ const dashboard_variable_sql_dynamic_provider_service_1 = require("./services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service");
205
+ const dashboard_variable_test_dynamic_provider_service_1 = require("./services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service");
206
+ const dashboard_variable_service_1 = require("./services/dashboard-variable.service");
207
+ const dashboard_service_1 = require("./services/dashboard.service");
185
208
  const excel_service_1 = require("./services/excel.service");
186
209
  const export_template_service_1 = require("./services/export-template.service");
187
210
  const export_transaction_service_1 = require("./services/export-transaction.service");
@@ -190,6 +213,9 @@ const import_transaction_service_1 = require("./services/import-transaction.serv
190
213
  const locale_service_1 = require("./services/locale.service");
191
214
  const file_s3_storage_provider_1 = require("./services/mediaStorageProviders/file-s3-storage-provider");
192
215
  const file_storage_provider_1 = require("./services/mediaStorageProviders/file-storage-provider");
216
+ const chartjs_sql_data_provider_service_1 = require("./services/question-data-providers/chartjs-sql-data-provider.service");
217
+ const prime_react_datatable_sql_data_provider_service_1 = require("./services/question-data-providers/prime-react-datatable-sql-data-provider.service");
218
+ const prime_react_meter_group_sql_data_provider_service_1 = require("./services/question-data-providers/prime-react-meter-group-sql-data-provider.service");
193
219
  const publisher_factory_service_1 = require("./services/queues/publisher-factory.service");
194
220
  const request_context_service_1 = require("./services/request-context.service");
195
221
  const role_metadata_service_1 = require("./services/role-metadata.service");
@@ -197,18 +223,25 @@ const saved_filters_service_1 = require("./services/saved-filters.service");
197
223
  const scheduled_job_service_1 = require("./services/scheduled-job.service");
198
224
  const scheduler_service_1 = require("./services/scheduled-jobs/scheduler.service");
199
225
  const security_rule_service_1 = require("./services/security-rule.service");
226
+ const list_of_dashboard_question_providers_selection_provider_service_1 = require("./services/selection-providers/list-of-dashboard-question-providers-selection-provider.service");
227
+ const list_of_dashboard_variable_providers_selection_provider_service_1 = require("./services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service");
200
228
  const list_of_scheduled_jobs_selection_provider_service_1 = require("./services/selection-providers/list-of-scheduled-jobs-selection-provider.service");
201
229
  const locale_list_selection_provider_service_1 = require("./services/selection-providers/locale-list-selection-provider.service");
202
230
  const setting_service_1 = require("./services/setting.service");
231
+ const sql_expression_resolver_service_1 = require("./services/sql-expression-resolver.service");
203
232
  const user_activity_history_service_1 = require("./services/user-activity-history.service");
204
233
  const user_view_metadata_service_1 = require("./services/user-view-metadata.service");
205
234
  const user_service_1 = require("./services/user.service");
206
235
  const audit_subscriber_1 = require("./subscribers/audit.subscriber");
207
236
  const computed_entity_field_subscriber_1 = require("./subscribers/computed-entity-field.subscriber");
208
237
  const created_by_updated_by_subscriber_1 = require("./subscribers/created-by-updated-by.subscriber");
238
+ const dashboard_question_sql_dataset_config_subscriber_1 = require("./subscribers/dashboard-question-sql-dataset-config.subscriber");
239
+ const dashboard_question_subscriber_1 = require("./subscribers/dashboard-question.subscriber");
240
+ const dashboard_variable_subscriber_1 = require("./subscribers/dashboard-variable.subscriber");
241
+ const dashboard_subscriber_1 = require("./subscribers/dashboard.subscriber");
209
242
  const security_rule_subscriber_1 = require("./subscribers/security-rule.subscriber");
210
243
  const view_metadata_subscriber_1 = require("./subscribers/view-metadata.subscriber");
211
- const http_exception_filter_1 = require("./filters/http-exception.filter");
244
+ const crud_service_1 = require("./services/crud.service");
212
245
  let SolidCoreModule = class SolidCoreModule {
213
246
  };
214
247
  exports.SolidCoreModule = SolidCoreModule;
@@ -249,12 +282,14 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
249
282
  import_transaction_entity_1.ImportTransaction,
250
283
  import_transaction_error_log_entity_1.ImportTransactionErrorLog,
251
284
  user_activity_history_entity_1.UserActivityHistory,
285
+ ai_interaction_entity_1.AiInteraction,
252
286
  ]),
253
287
  config_1.ConfigModule.forFeature(app_builder_config_1.default),
254
288
  config_1.ConfigModule.forFeature(common_config_1.default),
255
289
  config_1.ConfigModule.forFeature(iam_config_1.iamConfig),
256
290
  config_1.ConfigModule.forFeature(iam_config_1.jwtConfig),
257
291
  jwt_1.JwtModule.registerAsync(iam_config_1.jwtConfig.asProvider()),
292
+ schedule_1.ScheduleModule.forRoot(),
258
293
  serve_static_1.ServeStaticModule.forRoot({
259
294
  rootPath: (0, path_1.join)(process.cwd(), 'media-files-storage'),
260
295
  serveRoot: '/media-files-storage',
@@ -269,6 +304,11 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
269
304
  axios_1.HttpModule,
270
305
  config_1.ConfigModule,
271
306
  nestjs_cls_1.ClsModule,
307
+ typeorm_1.TypeOrmModule.forFeature([dashboard_entity_1.Dashboard]),
308
+ typeorm_1.TypeOrmModule.forFeature([dashboard_variable_entity_1.DashboardVariable]),
309
+ typeorm_1.TypeOrmModule.forFeature([dashboard_question_entity_1.DashboardQuestion]),
310
+ typeorm_1.TypeOrmModule.forFeature([dashboard_question_sql_dataset_config_entity_1.DashboardQuestionSqlDatasetConfig]),
311
+ typeorm_1.TypeOrmModule.forFeature([ai_interaction_entity_1.AiInteraction]),
272
312
  ],
273
313
  controllers: [
274
314
  module_metadata_controller_1.ModuleMetadataController,
@@ -307,6 +347,11 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
307
347
  import_transaction_controller_1.ImportTransactionController,
308
348
  import_transaction_error_log_controller_1.ImportTransactionErrorLogController,
309
349
  user_activity_history_controller_1.UserActivityHistoryController,
350
+ dashboard_controller_1.DashboardController,
351
+ dashboard_variable_controller_1.DashboardVariableController,
352
+ dashboard_question_controller_1.DashboardQuestionController,
353
+ dashboard_question_sql_dataset_config_controller_1.DashboardQuestionSqlDatasetConfigController,
354
+ ai_interaction_controller_1.AiInteractionController,
310
355
  ],
311
356
  providers: [
312
357
  {
@@ -340,6 +385,7 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
340
385
  solid_introspect_service_1.SolidIntrospectService,
341
386
  core_1.DiscoveryService,
342
387
  crud_helper_service_1.CrudHelperService,
388
+ crud_service_1.CRUDService,
343
389
  core_1.Reflector,
344
390
  core_1.MetadataScanner,
345
391
  command_service_1.CommandService,
@@ -368,6 +414,8 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
368
414
  sms_template_service_1.SmsTemplateService,
369
415
  email_template_service_1.EmailTemplateService,
370
416
  publisher_factory_service_1.PublisherFactory,
417
+ trigger_mcp_client_publisher_database_service_1.TriggerMcpClientPublisherDatabase,
418
+ trigger_mcp_client_subscriber_database_service_1.TriggerMcpClientSubscriberDatabase,
371
419
  email_publisher_service_1.EmailQueuePublisher,
372
420
  email_subscriber_service_1.EmailQueueSubscriber,
373
421
  email_publisher_database_service_1.EmailQueuePublisherDatabase,
@@ -451,6 +499,25 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
451
499
  computed_field_evaluation_subscriber_service_1.ComputedFieldEvaluationSubscriber,
452
500
  concat_entity_computed_field_provider_service_1.ConcatEntityComputedFieldProvider,
453
501
  user_activity_history_service_1.UserActivityHistoryService,
502
+ dashboard_service_1.DashboardService,
503
+ dashboard_variable_service_1.DashboardVariableService,
504
+ dashboard_question_service_1.DashboardQuestionService,
505
+ dashboard_variable_sql_dynamic_provider_service_1.DashboardVariableSQLDynamicProvider,
506
+ dashboard_variable_test_dynamic_provider_service_1.DasbhoardVariableTestDynamicProvider,
507
+ list_of_dashboard_variable_providers_selection_provider_service_1.ListOfDashboardVariableProvidersSelectionProvider,
508
+ list_of_dashboard_question_providers_selection_provider_service_1.ListOfDashboardQuestionProvidersSelectionProvider,
509
+ dashboard_question_sql_dataset_config_service_1.DashboardQuestionSqlDatasetConfigService,
510
+ chartjs_sql_data_provider_service_1.ChartJsSqlDataProvider,
511
+ prime_react_meter_group_sql_data_provider_service_1.PrimeReactMeterGroupSqlDataProvider,
512
+ prime_react_datatable_sql_data_provider_service_1.PrimeReactDatatableSqlDataProvider,
513
+ sql_expression_resolver_service_1.SqlExpressionResolverService,
514
+ ai_interaction_service_1.AiInteractionService,
515
+ dashboard_mapper_1.DashboardMapper,
516
+ dashboard_repository_1.DashboardRepository,
517
+ dashboard_subscriber_1.DashboardSubscriber,
518
+ dashboard_variable_subscriber_1.DashboardVariableSubscriber,
519
+ dashboard_question_subscriber_1.DashboardQuestionSubscriber,
520
+ dashboard_question_sql_dataset_config_subscriber_1.DashboardQuestionSqlDatasetConfigSubscriber,
454
521
  ],
455
522
  exports: [
456
523
  module_metadata_service_1.ModuleMetadataService,
@@ -460,6 +527,7 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
460
527
  media_service_1.MediaService,
461
528
  core_1.DiscoveryService,
462
529
  crud_helper_service_1.CrudHelperService,
530
+ crud_service_1.CRUDService,
463
531
  platform_express_1.MulterModule,
464
532
  file_service_1.FileService,
465
533
  solid_registry_1.SolidRegistry,
@@ -483,6 +551,12 @@ exports.SolidCoreModule = SolidCoreModule = __decorate([
483
551
  field_repository_1.FieldRepository,
484
552
  scheduler_service_1.SchedulerServiceImpl,
485
553
  user_activity_history_service_1.UserActivityHistoryService,
554
+ csv_service_1.CsvService,
555
+ excel_service_1.ExcelService,
556
+ solid_introspect_service_1.SolidIntrospectService,
557
+ import_transaction_service_1.ImportTransactionService,
558
+ axios_1.HttpModule,
559
+ list_of_values_service_1.ListOfValuesService
486
560
  ],
487
561
  })
488
562
  ], SolidCoreModule);