@solidstarters/solid-core 1.2.135 → 1.2.137

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 (215) hide show
  1. package/dist/controllers/ai-interaction.controller.d.ts +3 -1
  2. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
  3. package/dist/controllers/ai-interaction.controller.js +27 -3
  4. package/dist/controllers/ai-interaction.controller.js.map +1 -1
  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/{question-sql-dataset-config.controller.js → dashboard-question-sql-dataset-config.controller.js} +30 -30
  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/{question.controller.js → dashboard-question.controller.js} +31 -31
  12. package/dist/controllers/dashboard-question.controller.js.map +1 -0
  13. package/dist/dtos/{create-question-sql-dataset-config.dto.d.ts → create-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
  14. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  15. package/dist/dtos/{create-question-sql-dataset-config.dto.js → create-dashboard-question-sql-dataset-config.dto.js} +13 -13
  16. package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  17. package/dist/dtos/create-dashboard-question.dto.d.ts +17 -0
  18. package/dist/dtos/create-dashboard-question.dto.d.ts.map +1 -0
  19. package/dist/dtos/{create-question.dto.js → create-dashboard-question.dto.js} +25 -19
  20. package/dist/dtos/create-dashboard-question.dto.js.map +1 -0
  21. package/dist/dtos/create-dashboard.dto.d.ts +2 -2
  22. package/dist/dtos/create-dashboard.dto.d.ts.map +1 -1
  23. package/dist/dtos/create-dashboard.dto.js +3 -3
  24. package/dist/dtos/create-dashboard.dto.js.map +1 -1
  25. package/dist/dtos/{update-question-sql-dataset-config.dto.d.ts → update-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
  26. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
  27. package/dist/dtos/{update-question-sql-dataset-config.dto.js → update-dashboard-question-sql-dataset-config.dto.js} +14 -14
  28. package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +1 -0
  29. package/dist/dtos/update-dashboard-question.dto.d.ts +18 -0
  30. package/dist/dtos/update-dashboard-question.dto.d.ts.map +1 -0
  31. package/dist/dtos/{update-question.dto.js → update-dashboard-question.dto.js} +26 -20
  32. package/dist/dtos/update-dashboard-question.dto.js.map +1 -0
  33. package/dist/dtos/update-dashboard.dto.d.ts +2 -2
  34. package/dist/dtos/update-dashboard.dto.d.ts.map +1 -1
  35. package/dist/dtos/update-dashboard.dto.js +3 -3
  36. package/dist/dtos/update-dashboard.dto.js.map +1 -1
  37. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +13 -0
  38. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -0
  39. package/dist/entities/{question-sql-dataset-config.entity.js → dashboard-question-sql-dataset-config.entity.js} +19 -19
  40. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -0
  41. package/dist/entities/dashboard-question.entity.d.ts +16 -0
  42. package/dist/entities/dashboard-question.entity.d.ts.map +1 -0
  43. package/dist/entities/{question.entity.js → dashboard-question.entity.js} +23 -19
  44. package/dist/entities/dashboard-question.entity.js.map +1 -0
  45. package/dist/entities/dashboard.entity.d.ts +2 -2
  46. package/dist/entities/dashboard.entity.d.ts.map +1 -1
  47. package/dist/entities/dashboard.entity.js +3 -3
  48. package/dist/entities/dashboard.entity.js.map +1 -1
  49. package/dist/index.d.ts +7 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +7 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/interfaces.d.ts +21 -2
  54. package/dist/interfaces.d.ts.map +1 -1
  55. package/dist/interfaces.js.map +1 -1
  56. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +11 -0
  57. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +1 -0
  58. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +39 -0
  59. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +1 -0
  60. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +8 -0
  61. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +1 -0
  62. package/dist/jobs/database/trigger-mcp-client-queue-options.js +10 -0
  63. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +1 -0
  64. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +16 -0
  65. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -0
  66. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +91 -0
  67. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -0
  68. package/dist/repository/dashboard.repository.d.ts +1 -3
  69. package/dist/repository/dashboard.repository.d.ts.map +1 -1
  70. package/dist/repository/dashboard.repository.js +42 -37
  71. package/dist/repository/dashboard.repository.js.map +1 -1
  72. package/dist/seeders/seed-data/solid-core-metadata.json +88 -131
  73. package/dist/services/ai-interaction.service.d.ts +13 -2
  74. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  75. package/dist/services/ai-interaction.service.js +84 -19
  76. package/dist/services/ai-interaction.service.js.map +1 -1
  77. package/dist/services/chatter-message.service.d.ts.map +1 -1
  78. package/dist/services/chatter-message.service.js +8 -6
  79. package/dist/services/chatter-message.service.js.map +1 -1
  80. package/dist/services/{question-sql-dataset-config.service.d.ts → dashboard-question-sql-dataset-config.service.d.ts} +5 -5
  81. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -0
  82. package/dist/services/{question-sql-dataset-config.service.js → dashboard-question-sql-dataset-config.service.js} +9 -9
  83. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -0
  84. package/dist/services/{question.service.d.ts → dashboard-question.service.d.ts} +5 -5
  85. package/dist/services/dashboard-question.service.d.ts.map +1 -0
  86. package/dist/services/{question.service.js → dashboard-question.service.js} +10 -10
  87. package/dist/services/dashboard-question.service.js.map +1 -0
  88. package/dist/services/field-metadata.service.d.ts.map +1 -1
  89. package/dist/services/field-metadata.service.js +1 -0
  90. package/dist/services/field-metadata.service.js.map +1 -1
  91. package/dist/services/import-transaction.service.d.ts +3 -1
  92. package/dist/services/import-transaction.service.d.ts.map +1 -1
  93. package/dist/services/import-transaction.service.js +22 -0
  94. package/dist/services/import-transaction.service.js.map +1 -1
  95. package/dist/services/list-of-values.service.d.ts +1 -0
  96. package/dist/services/list-of-values.service.d.ts.map +1 -1
  97. package/dist/services/list-of-values.service.js +3 -0
  98. package/dist/services/list-of-values.service.js.map +1 -1
  99. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts +9 -0
  100. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.d.ts.map +1 -0
  101. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js +40 -0
  102. package/dist/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.js.map +1 -0
  103. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts +11 -0
  104. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.d.ts.map +1 -0
  105. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js +46 -0
  106. package/dist/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.js.map +1 -0
  107. package/dist/services/module-metadata.service.d.ts.map +1 -1
  108. package/dist/services/module-metadata.service.js.map +1 -1
  109. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -2
  110. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -1
  111. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +11 -7
  112. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -1
  113. package/dist/services/question-data-providers/helpers.d.ts +5 -2
  114. package/dist/services/question-data-providers/helpers.d.ts.map +1 -1
  115. package/dist/services/question-data-providers/helpers.js +18 -3
  116. package/dist/services/question-data-providers/helpers.js.map +1 -1
  117. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -2
  118. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -1
  119. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +10 -4
  120. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -1
  121. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -2
  122. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -1
  123. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +11 -3
  124. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -1
  125. package/dist/services/queues/publisher-factory.service.js +1 -1
  126. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  127. package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts +1 -1
  128. package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts.map +1 -1
  129. package/dist/services/scheduled-jobs/scheduled-job.interface.js.map +1 -1
  130. package/dist/services/scheduled-jobs/scheduler.service.js +1 -6
  131. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  132. package/dist/solid-core.module.d.ts.map +1 -1
  133. package/dist/solid-core.module.js +56 -39
  134. package/dist/solid-core.module.js.map +1 -1
  135. package/dist/subscribers/{question-sql-dataset-config.subscriber.d.ts → dashboard-question-sql-dataset-config.subscriber.d.ts} +6 -6
  136. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +1 -0
  137. package/dist/subscribers/{question-sql-dataset-config.subscriber.js → dashboard-question-sql-dataset-config.subscriber.js} +10 -10
  138. package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +1 -0
  139. package/dist/subscribers/{question.subscriber.d.ts → dashboard-question.subscriber.d.ts} +7 -7
  140. package/dist/subscribers/dashboard-question.subscriber.d.ts.map +1 -0
  141. package/dist/subscribers/{question.subscriber.js → dashboard-question.subscriber.js} +8 -8
  142. package/dist/subscribers/dashboard-question.subscriber.js.map +1 -0
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +1 -1
  145. package/src/controllers/ai-interaction.controller.ts +14 -2
  146. package/src/controllers/{question-sql-dataset-config.controller.ts → dashboard-question-sql-dataset-config.controller.ts} +10 -10
  147. package/src/controllers/{question.controller.ts → dashboard-question.controller.ts} +10 -10
  148. package/src/dtos/{create-question-sql-dataset-config.dto.ts → create-dashboard-question-sql-dataset-config.dto.ts} +1 -1
  149. package/src/dtos/{create-question.dto.ts → create-dashboard-question.dto.ts} +9 -4
  150. package/src/dtos/create-dashboard.dto.ts +3 -3
  151. package/src/dtos/{update-question-sql-dataset-config.dto.ts → update-dashboard-question-sql-dataset-config.dto.ts} +1 -1
  152. package/src/dtos/{update-question.dto.ts → update-dashboard-question.dto.ts} +9 -4
  153. package/src/dtos/update-dashboard.dto.ts +3 -3
  154. package/src/entities/{question-sql-dataset-config.entity.ts → dashboard-question-sql-dataset-config.entity.ts} +5 -5
  155. package/src/entities/{question.entity.ts → dashboard-question.entity.ts} +8 -5
  156. package/src/entities/dashboard.entity.ts +3 -3
  157. package/src/index.ts +7 -4
  158. package/src/interfaces.ts +24 -2
  159. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +22 -0
  160. package/src/jobs/database/trigger-mcp-client-queue-options.ts +9 -0
  161. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +89 -0
  162. package/src/repository/dashboard.repository.ts +54 -53
  163. package/src/seeders/seed-data/solid-core-metadata.json +88 -131
  164. package/src/services/ai-interaction.service.ts +117 -33
  165. package/src/services/chatter-message.service.ts +12 -6
  166. package/src/services/{question-sql-dataset-config.service.ts → dashboard-question-sql-dataset-config.service.ts} +5 -5
  167. package/src/services/{question.service.ts → dashboard-question.service.ts} +6 -6
  168. package/src/services/field-metadata.service.ts +1 -0
  169. package/src/services/import-transaction.service.ts +29 -1
  170. package/src/services/list-of-values.service.ts +5 -0
  171. package/src/services/mcp-tool-response-handlers/mcp-tool-response-handler-factory.service.ts +36 -0
  172. package/src/services/mcp-tool-response-handlers/solid-create-module-mcp-tool-response-handler.service.ts +52 -0
  173. package/src/services/module-metadata.service.ts +0 -5
  174. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +14 -10
  175. package/src/services/question-data-providers/helpers.ts +23 -4
  176. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +12 -6
  177. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +14 -5
  178. package/src/services/question-data-providers/test.sql +1 -0
  179. package/src/services/queues/publisher-factory.service.ts +1 -1
  180. package/src/services/scheduled-jobs/scheduled-job.interface.ts +1 -1
  181. package/src/services/scheduled-jobs/scheduler.service.ts +6 -6
  182. package/src/solid-core.module.ts +59 -39
  183. package/src/subscribers/{question-sql-dataset-config.subscriber.ts → dashboard-question-sql-dataset-config.subscriber.ts} +8 -10
  184. package/src/subscribers/{question.subscriber.ts → dashboard-question.subscriber.ts} +7 -10
  185. package/dist/controllers/question-sql-dataset-config.controller.d.ts +0 -43
  186. package/dist/controllers/question-sql-dataset-config.controller.d.ts.map +0 -1
  187. package/dist/controllers/question-sql-dataset-config.controller.js.map +0 -1
  188. package/dist/controllers/question.controller.d.ts +0 -45
  189. package/dist/controllers/question.controller.d.ts.map +0 -1
  190. package/dist/controllers/question.controller.js.map +0 -1
  191. package/dist/dtos/create-question-sql-dataset-config.dto.d.ts.map +0 -1
  192. package/dist/dtos/create-question-sql-dataset-config.dto.js.map +0 -1
  193. package/dist/dtos/create-question.dto.d.ts +0 -16
  194. package/dist/dtos/create-question.dto.d.ts.map +0 -1
  195. package/dist/dtos/create-question.dto.js.map +0 -1
  196. package/dist/dtos/update-question-sql-dataset-config.dto.d.ts.map +0 -1
  197. package/dist/dtos/update-question-sql-dataset-config.dto.js.map +0 -1
  198. package/dist/dtos/update-question.dto.d.ts +0 -17
  199. package/dist/dtos/update-question.dto.d.ts.map +0 -1
  200. package/dist/dtos/update-question.dto.js.map +0 -1
  201. package/dist/entities/question-sql-dataset-config.entity.d.ts +0 -13
  202. package/dist/entities/question-sql-dataset-config.entity.d.ts.map +0 -1
  203. package/dist/entities/question-sql-dataset-config.entity.js.map +0 -1
  204. package/dist/entities/question.entity.d.ts +0 -15
  205. package/dist/entities/question.entity.d.ts.map +0 -1
  206. package/dist/entities/question.entity.js.map +0 -1
  207. package/dist/services/question-sql-dataset-config.service.d.ts.map +0 -1
  208. package/dist/services/question-sql-dataset-config.service.js.map +0 -1
  209. package/dist/services/question.service.d.ts.map +0 -1
  210. package/dist/services/question.service.js.map +0 -1
  211. package/dist/subscribers/question-sql-dataset-config.subscriber.d.ts.map +0 -1
  212. package/dist/subscribers/question-sql-dataset-config.subscriber.js.map +0 -1
  213. package/dist/subscribers/question.subscriber.d.ts.map +0 -1
  214. package/dist/subscribers/question.subscriber.js.map +0 -1
  215. package/src/services/1. Create a context menu option i.py +0 -12
@@ -3,8 +3,8 @@ import { CreateDashboardDto } from "src/dtos/create-dashboard.dto";
3
3
  import { DashboardVariable } from "src/entities/dashboard-variable.entity";
4
4
  import { Dashboard } from "src/entities/dashboard.entity";
5
5
  import { ModuleMetadata } from "src/entities/module-metadata.entity";
6
- import { QuestionSqlDatasetConfig } from "src/entities/question-sql-dataset-config.entity";
7
- import { Question } from "src/entities/question.entity";
6
+ import { DashboardQuestionSqlDatasetConfig } from "src/entities/dashboard-question-sql-dataset-config.entity";
7
+ import { DashboardQuestion } from "src/entities/dashboard-question.entity";
8
8
  import { DataSource, Repository } from "typeorm";
9
9
 
10
10
  @Injectable()
@@ -17,7 +17,7 @@ export class DashboardRepository extends Repository<Dashboard> {
17
17
  }
18
18
 
19
19
 
20
- async upsertWithDto(createDto: CreateDashboardDto) {
20
+ async upsertWithDto(createDto: any) {
21
21
  const moduleMetadataRepository = this.dataSource.getRepository(ModuleMetadata);
22
22
  const module = await moduleMetadataRepository.findOneBy({ name: createDto.moduleUserKey });
23
23
 
@@ -28,6 +28,55 @@ export class DashboardRepository extends Repository<Dashboard> {
28
28
  relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],
29
29
  });
30
30
 
31
+ if (existingDashboard) {
32
+ // Update basic fields
33
+ existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});
34
+ existingDashboard.module = module;
35
+
36
+ // Upsert dashboard variables
37
+ existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {
38
+ const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);
39
+ if (existingVar) {
40
+ return Object.assign(existingVar, {
41
+ ...variable,
42
+ selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
43
+ defaultValue: JSON.stringify(variable.defaultValue ?? []),
44
+ });
45
+ }
46
+ return {
47
+ ...variable,
48
+ selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
49
+ defaultValue: JSON.stringify(variable.defaultValue ?? []),
50
+ };
51
+ }) ?? [];
52
+
53
+ // Upsert questions and their configs
54
+ existingDashboard.questions = createDto.questions?.map(question => {
55
+ const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);
56
+ const questionData: any = {
57
+ ...question,
58
+ questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {
59
+ const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);
60
+ if (existingCfg) {
61
+ return Object.assign(existingCfg, {
62
+ ...cfg,
63
+ options: JSON.stringify(cfg.options ?? {}),
64
+ });
65
+ }
66
+ return {
67
+ ...cfg,
68
+ options: JSON.stringify(cfg.options ?? {}),
69
+ };
70
+ }) ?? [],
71
+ };
72
+
73
+ return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;
74
+ }) ?? [];
75
+
76
+ return this.save(existingDashboard);
77
+ }
78
+
79
+ // Else: new dashboard
31
80
  const dashboardData = {
32
81
  ...createDto,
33
82
  module,
@@ -46,55 +95,7 @@ export class DashboardRepository extends Repository<Dashboard> {
46
95
  })),
47
96
  };
48
97
 
49
- if (existingDashboard) {
50
- // Optionally clean up stale children
51
- await this.cleanupRemovedRelations(existingDashboard, createDto);
52
-
53
- this.merge(existingDashboard, dashboardData);
54
- return this.save(existingDashboard);
55
- } else {
56
- const newDashboard = this.create(dashboardData);
57
- return this.save(newDashboard);
58
- }
59
- }
60
-
61
- private async cleanupRemovedRelations(existing: Dashboard, dto: CreateDashboardDto) {
62
- const dashboardVariableRepo = this.dataSource.getRepository(DashboardVariable);
63
- const questionRepo = this.dataSource.getRepository(Question);
64
- const datasetConfigRepo = this.dataSource.getRepository(QuestionSqlDatasetConfig); // 👈 make sure this is imported
65
-
66
- // === 1. Clean up removed dashboardVariables ===
67
- const dtoVariableNames = new Set(dto.dashboardVariables.map(v => v.variableName));
68
- const variablesToRemove = existing.dashboardVariables.filter(
69
- v => !dtoVariableNames.has(v.variableName)
70
- );
71
- if (variablesToRemove.length > 0) {
72
- await dashboardVariableRepo.remove(variablesToRemove);
73
- }
74
-
75
- // === 2. Clean up removed questions and gather removed question IDs ===
76
- const dtoQuestionNames = new Set(dto.questions.map(q => q.name));
77
- const questionsToRemove = existing.questions.filter(
78
- q => !dtoQuestionNames.has(q.name)
79
- );
80
-
81
- if (questionsToRemove.length > 0) {
82
- await questionRepo.remove(questionsToRemove);
83
- }
84
-
85
- // === 3. Clean up removed questionSqlDatasetConfigs from existing (retained) questions ===
86
- for (const existingQuestion of existing.questions) {
87
- const dtoQuestion = dto.questions.find(q => q.name === existingQuestion.name);
88
- if (!dtoQuestion) continue;
89
-
90
- const dtoDatasetNames = new Set(dtoQuestion.questionSqlDatasetConfigs?.map(cfg => cfg.datasetName));
91
- const configsToRemove = existingQuestion.questionSqlDatasetConfigs.filter(
92
- cfg => !dtoDatasetNames.has(cfg.datasetName)
93
- );
94
-
95
- if (configsToRemove.length > 0) {
96
- await datasetConfigRepo.remove(configsToRemove);
97
- }
98
- }
98
+ const newDashboard = this.create(dashboardData);
99
+ return this.save(newDashboard);
99
100
  }
100
101
  }
@@ -4337,7 +4337,7 @@
4337
4337
  },
4338
4338
  {
4339
4339
  "name": "questions",
4340
- "displayName": "Questions",
4340
+ "displayName": "Dashboard Questions",
4341
4341
  "type": "relation",
4342
4342
  "required": false,
4343
4343
  "unique": false,
@@ -4345,7 +4345,7 @@
4345
4345
  "relationType": "one-to-many",
4346
4346
  "relationCoModelFieldName": "dashboard",
4347
4347
  "relationCreateInverse": true,
4348
- "relationCoModelSingularName": "question",
4348
+ "relationCoModelSingularName": "dashboardQuestion",
4349
4349
  "relationModelModuleName": "solid-core",
4350
4350
  "isSystem": true
4351
4351
  },
@@ -4547,13 +4547,13 @@
4547
4547
  ]
4548
4548
  },
4549
4549
  {
4550
- "singularName": "question",
4551
- "pluralName": "questions",
4552
- "displayName": "Question",
4553
- "description": "This is used to maintain questions for dashboards",
4550
+ "singularName": "dashboardQuestion",
4551
+ "pluralName": "dashboardQuestions",
4552
+ "displayName": "Dashboard Question",
4553
+ "description": "This is used to maintain dashboard questions for dashboards",
4554
4554
  "dataSource": "default",
4555
4555
  "dataSourceType": "postgres",
4556
- "tableName": "ss_question",
4556
+ "tableName": "ss_dashboard_question",
4557
4557
  "userKeyFieldUserKey": "name",
4558
4558
  "fields": [
4559
4559
  {
@@ -4604,6 +4604,18 @@
4604
4604
  "prime-datatable:Prime - Datatable"
4605
4605
  ]
4606
4606
  },
4607
+ {
4608
+ "name": "sequenceNumber",
4609
+ "displayName": "Sequence Number",
4610
+ "type": "int",
4611
+ "ormType": "integer",
4612
+ "required": false,
4613
+ "unique": false,
4614
+ "index": false,
4615
+ "private": false,
4616
+ "encrypt": false,
4617
+ "isSystem": true
4618
+ },
4607
4619
  {
4608
4620
  "name": "labelSql",
4609
4621
  "displayName": "Label SQL Query",
@@ -4681,7 +4693,7 @@
4681
4693
  },
4682
4694
  {
4683
4695
  "name": "questionSqlDatasetConfigs",
4684
- "displayName": "Question SQL Dataset Config",
4696
+ "displayName": "Related Dashboard Question SQL Dataset Config",
4685
4697
  "description": "Related Question SQL Dataset Config Model",
4686
4698
  "type": "relation",
4687
4699
  "ormType": "integer",
@@ -4689,7 +4701,7 @@
4689
4701
  "relationType": "one-to-many",
4690
4702
  "relationCoModelFieldName": "question",
4691
4703
  "relationCreateInverse": true,
4692
- "relationCoModelSingularName": "questionSqlDatasetConfig",
4704
+ "relationCoModelSingularName": "dashboardQuestionSqlDatasetConfig",
4693
4705
  "relationModelModuleName": "solid-core",
4694
4706
  "relationCascade": "cascade",
4695
4707
  "required": false,
@@ -4701,13 +4713,13 @@
4701
4713
  ]
4702
4714
  },
4703
4715
  {
4704
- "singularName": "questionSqlDatasetConfig",
4705
- "pluralName": "questionSqlDatasetConfigs",
4706
- "displayName": "Question SQL Dataset Config",
4707
- "description": "This is used to maintain SQL dataset configurations for questions",
4716
+ "singularName": "dashboardQuestionSqlDatasetConfig",
4717
+ "pluralName": "dashboardQuestionSqlDatasetConfigs",
4718
+ "displayName": "Dashboard Question SQL Dataset Config",
4719
+ "description": "This is used to maintain Dashboard Question SQL dataset configurations",
4708
4720
  "dataSource": "default",
4709
4721
  "dataSourceType": "postgres",
4710
- "tableName": "ss_question_sql_dataset_config",
4722
+ "tableName": "ss_dashboard_question_sql_dataset_config",
4711
4723
  "userKeyFieldUserKey": "datasetName",
4712
4724
  "fields": [
4713
4725
  {
@@ -4811,7 +4823,7 @@
4811
4823
  "relationType": "many-to-one",
4812
4824
  "relationCoModelFieldName": "questionSqlDatasetConfigs",
4813
4825
  "relationCreateInverse": true,
4814
- "relationCoModelSingularName": "question",
4826
+ "relationCoModelSingularName": "dashboardQuestion",
4815
4827
  "relationModelModuleName": "solid-core",
4816
4828
  "relationCascade": "cascade",
4817
4829
  "required": true,
@@ -4899,14 +4911,19 @@
4899
4911
  {
4900
4912
  "name": "status",
4901
4913
  "displayName": "Status",
4902
- "type": "shortText",
4914
+ "type": "selectionStatic",
4903
4915
  "ormType": "varchar",
4904
4916
  "length": 64,
4905
4917
  "required": false,
4906
4918
  "unique": false,
4907
4919
  "index": true,
4908
4920
  "private": false,
4909
- "encrypt": false
4921
+ "encrypt": false,
4922
+ "selectionStaticValues": [
4923
+ "pending:Pending",
4924
+ "failed:Failed",
4925
+ "succeeded:Succeeded"
4926
+ ]
4910
4927
  },
4911
4928
  {
4912
4929
  "name": "errorMessage",
@@ -5416,46 +5433,7 @@
5416
5433
  "type": "solid",
5417
5434
  "domain": "",
5418
5435
  "context": "",
5419
- "customComponent": "/admin/address-master/dashboardVariable/all",
5420
- "customIsModal": true,
5421
- "serverEndpoint": "",
5422
- "viewUserKey": "dashboardVariable-list-view",
5423
- "moduleUserKey": "solid-core",
5424
- "modelUserKey": "dashboardVariable"
5425
- },
5426
- {
5427
- "displayName": "Question List Action",
5428
- "name": "question-list-action",
5429
- "type": "solid",
5430
- "domain": "",
5431
- "context": "",
5432
- "customComponent": "/admin/address-master/question/all",
5433
- "customIsModal": true,
5434
- "serverEndpoint": "",
5435
- "viewUserKey": "question-list-view",
5436
- "moduleUserKey": "solid-core",
5437
- "modelUserKey": "question"
5438
- },
5439
- {
5440
- "displayName": "Dashboard List Action",
5441
- "name": "dashboard-list-action",
5442
- "type": "solid",
5443
- "domain": "",
5444
- "context": "",
5445
- "customComponent": "/admin/address-master/dashboard/all",
5446
- "customIsModal": true,
5447
- "serverEndpoint": "",
5448
- "viewUserKey": "dashboard-list-view",
5449
- "moduleUserKey": "solid-core",
5450
- "modelUserKey": "dashboard"
5451
- },
5452
- {
5453
- "displayName": "Dashboard Variable List Action",
5454
- "name": "dashboardVariable-list-action",
5455
- "type": "solid",
5456
- "domain": "",
5457
- "context": "",
5458
- "customComponent": "/admin/address-master/dashboardVariable/all",
5436
+ "customComponent": "",
5459
5437
  "customIsModal": true,
5460
5438
  "serverEndpoint": "",
5461
5439
  "viewUserKey": "dashboardVariable-list-view",
@@ -5463,69 +5441,30 @@
5463
5441
  "modelUserKey": "dashboardVariable"
5464
5442
  },
5465
5443
  {
5466
- "displayName": "Question List Action",
5467
- "name": "question-list-action",
5444
+ "displayName": "Dashboard Question List Action",
5445
+ "name": "dashboardQuestion-list-action",
5468
5446
  "type": "solid",
5469
5447
  "domain": "",
5470
5448
  "context": "",
5471
- "customComponent": "/admin/address-master/question/all",
5472
- "customIsModal": true,
5473
- "serverEndpoint": "",
5474
- "viewUserKey": "question-list-view",
5475
- "moduleUserKey": "solid-core",
5476
- "modelUserKey": "question"
5477
- },
5478
- {
5479
- "displayName": "Question List Action",
5480
- "name": "question-list-action",
5481
- "type": "solid",
5482
- "domain": "",
5483
- "context": "",
5484
- "customComponent": "/admin/address-master/question/all",
5485
- "customIsModal": true,
5486
- "serverEndpoint": "",
5487
- "viewUserKey": "question-list-view",
5488
- "moduleUserKey": "solid-core",
5489
- "modelUserKey": "question"
5490
- },
5491
- {
5492
- "displayName": "Question List Action",
5493
- "name": "question-list-action",
5494
- "type": "solid",
5495
- "domain": "",
5496
- "context": "",
5497
- "customComponent": "/admin/address-master/question/all",
5498
- "customIsModal": true,
5499
- "serverEndpoint": "",
5500
- "viewUserKey": "question-list-view",
5501
- "moduleUserKey": "solid-core",
5502
- "modelUserKey": "question"
5503
- },
5504
- {
5505
- "displayName": "Question SQL Dataset Config List Action",
5506
- "name": "questionSqlDatasetConfig-list-action",
5507
- "type": "solid",
5508
- "domain": "",
5509
- "context": "",
5510
- "customComponent": "/admin/address-master/questionSqlDatasetConfig/all",
5449
+ "customComponent": "",
5511
5450
  "customIsModal": true,
5512
5451
  "serverEndpoint": "",
5513
- "viewUserKey": "questionSqlDatasetConfig-list-view",
5452
+ "viewUserKey": "dashboardQuestion-list-view",
5514
5453
  "moduleUserKey": "solid-core",
5515
- "modelUserKey": "questionSqlDatasetConfig"
5454
+ "modelUserKey": "dashboardQuestion"
5516
5455
  },
5517
5456
  {
5518
- "displayName": "Question List Action",
5519
- "name": "question-list-action",
5457
+ "displayName": "Dashboard Question SQL Dataset Config List Action",
5458
+ "name": "dashboardQuestionSqlDatasetConfig-list-action",
5520
5459
  "type": "solid",
5521
5460
  "domain": "",
5522
5461
  "context": "",
5523
- "customComponent": "/admin/address-master/question/all",
5462
+ "customComponent": "",
5524
5463
  "customIsModal": true,
5525
5464
  "serverEndpoint": "",
5526
- "viewUserKey": "question-list-view",
5465
+ "viewUserKey": "dsahboardQuestionSqlDatasetConfig-list-view",
5527
5466
  "moduleUserKey": "solid-core",
5528
- "modelUserKey": "question"
5467
+ "modelUserKey": "dashboardQuestionSqlDatasetConfig"
5529
5468
  },
5530
5469
  {
5531
5470
  "displayName": "AI Interactions",
@@ -5855,10 +5794,10 @@
5855
5794
  "parentMenuItemUserKey": "dashboard-root-menu-item"
5856
5795
  },
5857
5796
  {
5858
- "displayName": "Question",
5859
- "name": "question-menu-item",
5797
+ "displayName": "Dashboard Question",
5798
+ "name": "dashboardQuestion-menu-item",
5860
5799
  "sequenceNumber": 2,
5861
- "actionUserKey": "question-list-action",
5800
+ "actionUserKey": "dashboardQuestion-list-action",
5862
5801
  "moduleUserKey": "solid-core",
5863
5802
  "parentMenuItemUserKey": "dashboard-root-menu-item"
5864
5803
  },
@@ -11418,12 +11357,12 @@
11418
11357
  }
11419
11358
  },
11420
11359
  {
11421
- "name": "question-list-view",
11422
- "displayName": "Question",
11360
+ "name": "dashboardQuestion-list-view",
11361
+ "displayName": "Dashboard Question",
11423
11362
  "type": "list",
11424
11363
  "context": "{}",
11425
11364
  "moduleUserKey": "solid-core",
11426
- "modelUserKey": "question",
11365
+ "modelUserKey": "dashboardQuestion",
11427
11366
  "layout": {
11428
11367
  "type": "list",
11429
11368
  "attrs": {
@@ -11462,22 +11401,28 @@
11462
11401
  "attrs": {
11463
11402
  "name": "visualisedAs"
11464
11403
  }
11404
+ },
11405
+ {
11406
+ "type": "field",
11407
+ "attrs": {
11408
+ "name": "sequenceNumber"
11409
+ }
11465
11410
  }
11466
11411
  ]
11467
11412
  }
11468
11413
  },
11469
11414
  {
11470
- "name": "question-form-view",
11471
- "displayName": "Question",
11415
+ "name": "dashboardQuestion-form-view",
11416
+ "displayName": "Dashboard Question",
11472
11417
  "type": "form",
11473
11418
  "context": "{}",
11474
11419
  "moduleUserKey": "solid-core",
11475
- "modelUserKey": "question",
11420
+ "modelUserKey": "dashboardQuestion",
11476
11421
  "layout": {
11477
11422
  "type": "form",
11478
11423
  "attrs": {
11479
11424
  "name": "form-1",
11480
- "label": "Question",
11425
+ "label": "Dashboard Question",
11481
11426
  "className": "grid"
11482
11427
  },
11483
11428
  "children": [
@@ -11531,6 +11476,12 @@
11531
11476
  "attrs": {
11532
11477
  "name": "visualisedAs"
11533
11478
  }
11479
+ },
11480
+ {
11481
+ "type": "field",
11482
+ "attrs": {
11483
+ "name": "sequenceNumber"
11484
+ }
11534
11485
  }
11535
11486
  ]
11536
11487
  },
@@ -11548,6 +11499,18 @@
11548
11499
  "name": "sourceType"
11549
11500
  }
11550
11501
  },
11502
+ {
11503
+ "type": "field",
11504
+ "attrs": {
11505
+ "name": "labelSql"
11506
+ }
11507
+ },
11508
+ {
11509
+ "type": "field",
11510
+ "attrs": {
11511
+ "name": "kpiSql"
11512
+ }
11513
+ },
11551
11514
  {
11552
11515
  "type": "field",
11553
11516
  "attrs": {
@@ -11627,7 +11590,7 @@
11627
11590
  {
11628
11591
  "type": "field",
11629
11592
  "attrs": {
11630
- "name": "barChartLabelOptions"
11593
+ "name": "chartOptions"
11631
11594
  }
11632
11595
  }
11633
11596
  ]
@@ -11661,12 +11624,12 @@
11661
11624
  }
11662
11625
  },
11663
11626
  {
11664
- "name": "questionSqlDatasetConfig-list-view",
11665
- "displayName": "Question SQL Dataset Config",
11627
+ "name": "dashboardQuestionSqlDatasetConfig-list-view",
11628
+ "displayName": "Dashboard Question SQL Dataset Config",
11666
11629
  "type": "list",
11667
11630
  "context": "{}",
11668
11631
  "moduleUserKey": "solid-core",
11669
- "modelUserKey": "questionSqlDatasetConfig",
11632
+ "modelUserKey": "dashboardQuestionSqlDatasetConfig",
11670
11633
  "layout": {
11671
11634
  "type": "list",
11672
11635
  "attrs": {
@@ -11703,24 +11666,24 @@
11703
11666
  {
11704
11667
  "type": "field",
11705
11668
  "attrs": {
11706
- "name": "backgroundColor"
11669
+ "name": "options"
11707
11670
  }
11708
11671
  }
11709
11672
  ]
11710
11673
  }
11711
11674
  },
11712
11675
  {
11713
- "name": "questionSqlDatasetConfig-form-view",
11714
- "displayName": "Question SQL Dataset Config",
11676
+ "name": "dashboardQuestionSqlDatasetConfig-form-view",
11677
+ "displayName": "Dashboard Question SQL Dataset Config",
11715
11678
  "type": "form",
11716
11679
  "context": "{}",
11717
11680
  "moduleUserKey": "solid-core",
11718
- "modelUserKey": "questionSqlDatasetConfig",
11681
+ "modelUserKey": "dashboardQuestionSqlDatasetConfig",
11719
11682
  "layout": {
11720
11683
  "type": "form",
11721
11684
  "attrs": {
11722
11685
  "name": "form-1",
11723
- "label": "Question SQL Dataset Config",
11686
+ "label": "Dashboard Question SQL Dataset Config",
11724
11687
  "className": "grid"
11725
11688
  },
11726
11689
  "children": [
@@ -11782,12 +11745,6 @@
11782
11745
  "name": "valueColumnName"
11783
11746
  }
11784
11747
  },
11785
- {
11786
- "type": "field",
11787
- "attrs": {
11788
- "name": "backgroundColor"
11789
- }
11790
- },
11791
11748
  {
11792
11749
  "type": "field",
11793
11750
  "attrs": {