@solidstarters/solid-core 1.2.134 → 1.2.135

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 (264) hide show
  1. package/dist/controllers/ai-interaction.controller.d.ts +45 -0
  2. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -0
  3. package/dist/controllers/ai-interaction.controller.js +192 -0
  4. package/dist/controllers/ai-interaction.controller.js.map +1 -0
  5. package/dist/controllers/dashboard-variable.controller.d.ts +43 -0
  6. package/dist/controllers/dashboard-variable.controller.d.ts.map +1 -0
  7. package/dist/controllers/dashboard-variable.controller.js +179 -0
  8. package/dist/controllers/dashboard-variable.controller.js.map +1 -0
  9. package/dist/controllers/dashboard.controller.d.ts +45 -0
  10. package/dist/controllers/dashboard.controller.d.ts.map +1 -0
  11. package/dist/controllers/dashboard.controller.js +192 -0
  12. package/dist/controllers/dashboard.controller.js.map +1 -0
  13. package/dist/controllers/question-sql-dataset-config.controller.d.ts +43 -0
  14. package/dist/controllers/question-sql-dataset-config.controller.d.ts.map +1 -0
  15. package/dist/controllers/question-sql-dataset-config.controller.js +179 -0
  16. package/dist/controllers/question-sql-dataset-config.controller.js.map +1 -0
  17. package/dist/controllers/question.controller.d.ts +45 -0
  18. package/dist/controllers/question.controller.d.ts.map +1 -0
  19. package/dist/controllers/question.controller.js +194 -0
  20. package/dist/controllers/question.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-variable.dto.d.ts +18 -0
  36. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +1 -0
  37. package/dist/dtos/create-dashboard-variable.dto.js +97 -0
  38. package/dist/dtos/create-dashboard-variable.dto.js.map +1 -0
  39. package/dist/dtos/create-dashboard.dto.d.ts +15 -0
  40. package/dist/dtos/create-dashboard.dto.d.ts.map +1 -0
  41. package/dist/dtos/create-dashboard.dto.js +90 -0
  42. package/dist/dtos/create-dashboard.dto.js.map +1 -0
  43. package/dist/dtos/create-question-sql-dataset-config.dto.d.ts +12 -0
  44. package/dist/dtos/create-question-sql-dataset-config.dto.d.ts.map +1 -0
  45. package/dist/dtos/create-question-sql-dataset-config.dto.js +77 -0
  46. package/dist/dtos/create-question-sql-dataset-config.dto.js.map +1 -0
  47. package/dist/dtos/create-question.dto.d.ts +16 -0
  48. package/dist/dtos/create-question.dto.d.ts.map +1 -0
  49. package/dist/dtos/create-question.dto.js +99 -0
  50. package/dist/dtos/create-question.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-variable.dto.d.ts +15 -0
  64. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +1 -0
  65. package/dist/dtos/update-dashboard-variable.dto.js +95 -0
  66. package/dist/dtos/update-dashboard-variable.dto.js.map +1 -0
  67. package/dist/dtos/update-dashboard.dto.d.ts +16 -0
  68. package/dist/dtos/update-dashboard.dto.d.ts.map +1 -0
  69. package/dist/dtos/update-dashboard.dto.js +96 -0
  70. package/dist/dtos/update-dashboard.dto.js.map +1 -0
  71. package/dist/dtos/update-question-sql-dataset-config.dto.d.ts +13 -0
  72. package/dist/dtos/update-question-sql-dataset-config.dto.d.ts.map +1 -0
  73. package/dist/dtos/update-question-sql-dataset-config.dto.js +86 -0
  74. package/dist/dtos/update-question-sql-dataset-config.dto.js.map +1 -0
  75. package/dist/dtos/update-question.dto.d.ts +17 -0
  76. package/dist/dtos/update-question.dto.d.ts.map +1 -0
  77. package/dist/dtos/update-question.dto.js +106 -0
  78. package/dist/dtos/update-question.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-variable.entity.d.ts +15 -0
  84. package/dist/entities/dashboard-variable.entity.d.ts.map +1 -0
  85. package/dist/entities/dashboard-variable.entity.js +73 -0
  86. package/dist/entities/dashboard-variable.entity.js.map +1 -0
  87. package/dist/entities/dashboard.entity.d.ts +12 -0
  88. package/dist/entities/dashboard.entity.d.ts.map +1 -0
  89. package/dist/entities/dashboard.entity.js +50 -0
  90. package/dist/entities/dashboard.entity.js.map +1 -0
  91. package/dist/entities/question-sql-dataset-config.entity.d.ts +13 -0
  92. package/dist/entities/question-sql-dataset-config.entity.d.ts.map +1 -0
  93. package/dist/entities/question-sql-dataset-config.entity.js +60 -0
  94. package/dist/entities/question-sql-dataset-config.entity.js.map +1 -0
  95. package/dist/entities/question.entity.d.ts +15 -0
  96. package/dist/entities/question.entity.d.ts.map +1 -0
  97. package/dist/entities/question.entity.js +67 -0
  98. package/dist/entities/question.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 +5 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +5 -0
  106. package/dist/index.js.map +1 -1
  107. package/dist/interfaces.d.ts +12 -1
  108. package/dist/interfaces.d.ts.map +1 -1
  109. package/dist/interfaces.js.map +1 -1
  110. package/dist/mappers/dashboard-mapper.d.ts +6 -0
  111. package/dist/mappers/dashboard-mapper.d.ts.map +1 -0
  112. package/dist/mappers/dashboard-mapper.js +60 -0
  113. package/dist/mappers/dashboard-mapper.js.map +1 -0
  114. package/dist/repository/dashboard.repository.d.ts +11 -0
  115. package/dist/repository/dashboard.repository.d.ts.map +1 -0
  116. package/dist/repository/dashboard.repository.js +93 -0
  117. package/dist/repository/dashboard.repository.js.map +1 -0
  118. package/dist/seeders/module-metadata-seeder.service.d.ts +5 -1
  119. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  120. package/dist/seeders/module-metadata-seeder.service.js +18 -2
  121. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  122. package/dist/seeders/seed-data/solid-core-metadata.json +4222 -2418
  123. package/dist/services/ai-interaction.service.d.ts +23 -0
  124. package/dist/services/ai-interaction.service.d.ts.map +1 -0
  125. package/dist/services/ai-interaction.service.js +147 -0
  126. package/dist/services/ai-interaction.service.js.map +1 -0
  127. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts +12 -0
  128. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.d.ts.map +1 -0
  129. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js +55 -0
  130. package/dist/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.js.map +1 -0
  131. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts +11 -0
  132. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.d.ts.map +1 -0
  133. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js +45 -0
  134. package/dist/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.js.map +1 -0
  135. package/dist/services/dashboard-variable.service.d.ts +23 -0
  136. package/dist/services/dashboard-variable.service.d.ts.map +1 -0
  137. package/dist/services/dashboard-variable.service.js +57 -0
  138. package/dist/services/dashboard-variable.service.js.map +1 -0
  139. package/dist/services/dashboard.service.d.ts +38 -0
  140. package/dist/services/dashboard.service.d.ts.map +1 -0
  141. package/dist/services/dashboard.service.js +179 -0
  142. package/dist/services/dashboard.service.js.map +1 -0
  143. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  144. package/dist/services/menu-item-metadata.service.js +1 -1
  145. package/dist/services/menu-item-metadata.service.js.map +1 -1
  146. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +36 -0
  147. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -0
  148. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +85 -0
  149. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -0
  150. package/dist/services/question-data-providers/helpers.d.ts +4 -0
  151. package/dist/services/question-data-providers/helpers.d.ts.map +1 -0
  152. package/dist/services/question-data-providers/helpers.js +10 -0
  153. package/dist/services/question-data-providers/helpers.js.map +1 -0
  154. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +17 -0
  155. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -0
  156. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +64 -0
  157. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -0
  158. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +19 -0
  159. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -0
  160. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +84 -0
  161. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -0
  162. package/dist/services/question-sql-dataset-config.service.d.ts +22 -0
  163. package/dist/services/question-sql-dataset-config.service.d.ts.map +1 -0
  164. package/dist/services/question-sql-dataset-config.service.js +56 -0
  165. package/dist/services/question-sql-dataset-config.service.js.map +1 -0
  166. package/dist/services/question.service.d.ts +29 -0
  167. package/dist/services/question.service.d.ts.map +1 -0
  168. package/dist/services/question.service.js +117 -0
  169. package/dist/services/question.service.js.map +1 -0
  170. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  171. package/dist/services/scheduled-jobs/scheduler.service.js +22 -11
  172. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  173. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +11 -0
  174. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +1 -0
  175. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +46 -0
  176. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +1 -0
  177. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +11 -0
  178. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts.map +1 -0
  179. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js +47 -0
  180. package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.js.map +1 -0
  181. package/dist/services/solid-introspect.service.d.ts +2 -0
  182. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  183. package/dist/services/solid-introspect.service.js +28 -0
  184. package/dist/services/solid-introspect.service.js.map +1 -1
  185. package/dist/services/sql-expression-resolver.service.d.ts +9 -0
  186. package/dist/services/sql-expression-resolver.service.d.ts.map +1 -0
  187. package/dist/services/sql-expression-resolver.service.js +105 -0
  188. package/dist/services/sql-expression-resolver.service.js.map +1 -0
  189. package/dist/solid-core.module.d.ts.map +1 -1
  190. package/dist/solid-core.module.js +61 -0
  191. package/dist/solid-core.module.js.map +1 -1
  192. package/dist/subscribers/dashboard-variable.subscriber.d.ts +16 -0
  193. package/dist/subscribers/dashboard-variable.subscriber.d.ts.map +1 -0
  194. package/dist/subscribers/dashboard-variable.subscriber.js +72 -0
  195. package/dist/subscribers/dashboard-variable.subscriber.js.map +1 -0
  196. package/dist/subscribers/dashboard.subscriber.d.ts +15 -0
  197. package/dist/subscribers/dashboard.subscriber.d.ts.map +1 -0
  198. package/dist/subscribers/dashboard.subscriber.js +56 -0
  199. package/dist/subscribers/dashboard.subscriber.js.map +1 -0
  200. package/dist/subscribers/question-sql-dataset-config.subscriber.d.ts +16 -0
  201. package/dist/subscribers/question-sql-dataset-config.subscriber.d.ts.map +1 -0
  202. package/dist/subscribers/question-sql-dataset-config.subscriber.js +72 -0
  203. package/dist/subscribers/question-sql-dataset-config.subscriber.js.map +1 -0
  204. package/dist/subscribers/question.subscriber.d.ts +16 -0
  205. package/dist/subscribers/question.subscriber.d.ts.map +1 -0
  206. package/dist/subscribers/question.subscriber.js +72 -0
  207. package/dist/subscribers/question.subscriber.js.map +1 -0
  208. package/dist/tsconfig.tsbuildinfo +1 -1
  209. package/package.json +1 -1
  210. package/src/controllers/ai-interaction.controller.ts +98 -0
  211. package/src/controllers/dashboard-variable.controller.ts +93 -0
  212. package/src/controllers/dashboard.controller.ts +99 -0
  213. package/src/controllers/question-sql-dataset-config.controller.ts +93 -0
  214. package/src/controllers/question.controller.ts +104 -0
  215. package/src/controllers/test.controller.ts +1 -2
  216. package/src/decorators/dashboard-question-data-provider.decorator.ts +7 -0
  217. package/src/decorators/dashboard-selection-provider.decorator.ts +7 -0
  218. package/src/dtos/create-ai-interaction.dto.ts +60 -0
  219. package/src/dtos/create-dashboard-variable.dto.ts +56 -0
  220. package/src/dtos/create-dashboard.dto.ts +53 -0
  221. package/src/dtos/create-question-sql-dataset-config.dto.ts +42 -0
  222. package/src/dtos/create-question.dto.ts +58 -0
  223. package/src/dtos/dashboard-variable-selection-dynamic-query.dto.ts +29 -0
  224. package/src/dtos/invoke-ai-prompt.dto.ts +6 -0
  225. package/src/dtos/update-ai-interaction.dto.ts +65 -0
  226. package/src/dtos/update-dashboard-variable.dto.ts +54 -0
  227. package/src/dtos/update-dashboard.dto.ts +57 -0
  228. package/src/dtos/update-question-sql-dataset-config.dto.ts +49 -0
  229. package/src/dtos/update-question.dto.ts +63 -0
  230. package/src/entities/ai-interaction.entity.ts +39 -0
  231. package/src/entities/dashboard-variable.entity.ts +30 -0
  232. package/src/entities/dashboard.entity.ts +21 -0
  233. package/src/entities/question-sql-dataset-config.entity.ts +25 -0
  234. package/src/entities/question.entity.ts +30 -0
  235. package/src/helpers/solid-registry.ts +44 -2
  236. package/src/index.ts +5 -0
  237. package/src/interfaces.ts +41 -29
  238. package/src/mappers/dashboard-mapper.ts +52 -0
  239. package/src/repository/dashboard.repository.ts +100 -0
  240. package/src/seeders/module-metadata-seeder.service.ts +21 -1
  241. package/src/seeders/seed-data/solid-core-metadata.json +4225 -2421
  242. package/src/services/1. Create a context menu option i.py +12 -0
  243. package/src/services/ai-interaction.service.ts +127 -0
  244. package/src/services/dashboard-selection-providers/dashboard-variable-sql-dynamic-provider.service.ts +56 -0
  245. package/src/services/dashboard-selection-providers/dashboard-variable-test-dynamic-provider.service.ts +37 -0
  246. package/src/services/dashboard-variable.service.ts +36 -0
  247. package/src/services/dashboard.service.ts +147 -0
  248. package/src/services/menu-item-metadata.service.ts +2 -1
  249. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +121 -0
  250. package/src/services/question-data-providers/helpers.ts +11 -0
  251. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +72 -0
  252. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +110 -0
  253. package/src/services/question-sql-dataset-config.service.ts +34 -0
  254. package/src/services/question.service.ts +115 -0
  255. package/src/services/scheduled-jobs/scheduler.service.ts +32 -64
  256. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +41 -0
  257. package/src/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.ts +41 -0
  258. package/src/services/solid-introspect.service.ts +42 -0
  259. package/src/services/sql-expression-resolver.service.ts +125 -0
  260. package/src/solid-core.module.ts +61 -1
  261. package/src/subscribers/dashboard-variable.subscriber.ts +63 -0
  262. package/src/subscribers/dashboard.subscriber.ts +43 -0
  263. package/src/subscribers/question-sql-dataset-config.subscriber.ts +63 -0
  264. package/src/subscribers/question.subscriber.ts +65 -0
@@ -0,0 +1,53 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsString } from 'class-validator';
3
+ import { IsNotEmpty, ValidateNested, IsArray, IsOptional, IsJSON, IsInt } from 'class-validator';
4
+ import { Type } from 'class-transformer';
5
+ import { UpdateDashboardVariableDto } from 'src/dtos/update-dashboard-variable.dto';
6
+ import { UpdateQuestionDto } from 'src/dtos/update-question.dto';
7
+
8
+ export class CreateDashboardDto {
9
+ @IsNotEmpty()
10
+ @IsString()
11
+ @ApiProperty()
12
+ name: string;
13
+ @IsNotEmpty()
14
+ @IsJSON()
15
+ @ApiProperty()
16
+ layoutJson: any;
17
+ @IsOptional()
18
+ @ApiProperty()
19
+ @IsArray()
20
+ @ValidateNested({ each: true })
21
+ @Type(() => UpdateDashboardVariableDto)
22
+ dashboardVariables: UpdateDashboardVariableDto[];
23
+ @IsOptional()
24
+ @IsArray()
25
+ @ApiProperty()
26
+ dashboardVariablesIds: number[];
27
+ @IsString()
28
+ @IsOptional()
29
+ @ApiProperty()
30
+ dashboardVariablesCommand: string;
31
+ @IsOptional()
32
+ @ApiProperty()
33
+ @IsArray()
34
+ @ValidateNested({ each: true })
35
+ @Type(() => UpdateQuestionDto)
36
+ questions: UpdateQuestionDto[];
37
+ @IsOptional()
38
+ @IsArray()
39
+ @ApiProperty()
40
+ questionsIds: number[];
41
+ @IsString()
42
+ @IsOptional()
43
+ @ApiProperty()
44
+ questionsCommand: string;
45
+ @IsOptional()
46
+ @IsInt()
47
+ @ApiProperty()
48
+ moduleId: number;
49
+ @IsString()
50
+ @IsOptional()
51
+ @ApiProperty()
52
+ moduleUserKey: string;
53
+ }
@@ -0,0 +1,42 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsString } from 'class-validator';
3
+ import { IsNotEmpty, IsOptional, IsInt, IsJSON } from 'class-validator';
4
+
5
+ export class CreateQuestionSqlDatasetConfigDto {
6
+ @IsNotEmpty()
7
+ @IsString()
8
+ @ApiProperty()
9
+ datasetName: string;
10
+ @IsNotEmpty()
11
+ @IsString()
12
+ @ApiProperty({ description: "This is the display name for the dataset configuration, which can be used in UI components to represent the dataset in a user-friendly manner." })
13
+ datasetDisplayName: string;
14
+ @IsOptional()
15
+ @IsString()
16
+ @ApiProperty({ description: "This is a description of the dataset configuration, providing context and details about its purpose." })
17
+ description: string;
18
+ @IsNotEmpty()
19
+ @IsString()
20
+ @ApiProperty()
21
+ sql: string;
22
+ @IsNotEmpty()
23
+ @IsString()
24
+ @ApiProperty()
25
+ labelColumnName: string;
26
+ @IsNotEmpty()
27
+ @IsString()
28
+ @ApiProperty()
29
+ valueColumnName: string;
30
+ @IsOptional()
31
+ @IsInt()
32
+ @ApiProperty({ description: "Related Question Model" })
33
+ questionId: number;
34
+ @IsString()
35
+ @IsOptional()
36
+ @ApiProperty({ description: "Related Question Model" })
37
+ questionUserKey: string;
38
+ @IsOptional()
39
+ @IsJSON()
40
+ @ApiProperty({ description: "This allows you to set the dataset options e.g border-color, background-color, etc. This is a JSON object that can be used to customize the dataset appearance or behavior in the UI." })
41
+ options: any;
42
+ }
@@ -0,0 +1,58 @@
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import { IsString } from 'class-validator';
3
+ import { IsNotEmpty, IsOptional, IsJSON, IsInt, ValidateNested, IsArray } from 'class-validator';
4
+ import { Type } from 'class-transformer';
5
+ import { UpdateQuestionSqlDatasetConfigDto } from 'src/dtos/update-question-sql-dataset-config.dto';
6
+
7
+ export class CreateQuestionDto {
8
+ @IsNotEmpty()
9
+ @IsString()
10
+ @ApiProperty()
11
+ name: string;
12
+ @IsNotEmpty()
13
+ @IsString()
14
+ @ApiProperty()
15
+ sourceType: string;
16
+ @IsNotEmpty()
17
+ @IsString()
18
+ @ApiProperty()
19
+ visualisedAs: string;
20
+ @IsOptional()
21
+ @IsString()
22
+ @ApiProperty({ description: "This is only applicable when sourceType is set to provider. It allows the user to select any pre-existing Dashboard Question Data provider implementation used to fetch a dynamic dropdown of values to choose from when this question is presented to the user." })
23
+ providerName: string;
24
+ @IsOptional()
25
+ @IsInt()
26
+ @ApiProperty({ description: "Related Dashboard Model" })
27
+ dashboardId: number;
28
+ @IsString()
29
+ @IsOptional()
30
+ @ApiProperty({ description: "Related Dashboard Model" })
31
+ dashboardUserKey: string;
32
+ @IsOptional()
33
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
34
+ @IsArray()
35
+ @ValidateNested({ each: true })
36
+ @Type(() => UpdateQuestionSqlDatasetConfigDto)
37
+ questionSqlDatasetConfigs: UpdateQuestionSqlDatasetConfigDto[];
38
+ @IsOptional()
39
+ @IsArray()
40
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
41
+ questionSqlDatasetConfigsIds: number[];
42
+ @IsString()
43
+ @IsOptional()
44
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
45
+ questionSqlDatasetConfigsCommand: string;
46
+ @IsOptional()
47
+ @IsJSON()
48
+ @ApiProperty({ description: "This is a JSON object representing each labels display and color options for the bar chart" })
49
+ chartOptions: any;
50
+ @IsOptional()
51
+ @IsString()
52
+ @ApiProperty({ description: "This is the SQL query to fetch the label values for the question" })
53
+ labelSql: string;
54
+ @IsOptional()
55
+ @IsString()
56
+ @ApiProperty({ description: "This is the SQL query to fetch the KPI value for the question" })
57
+ kpiSql: string;
58
+ }
@@ -0,0 +1,29 @@
1
+
2
+ import { ApiProperty } from "@nestjs/swagger";
3
+ import { Transform, Type } from "class-transformer";
4
+ import { IsNumber, IsOptional, IsString } from "class-validator";
5
+ import { PaginationQueryDto } from "src/dtos/pagination-query.dto";
6
+ import integerTransformer from "../transformers/integer-transformer";
7
+
8
+ export class DashboardVariableSelectionDynamicQueryDto extends PaginationQueryDto {
9
+ constructor(variableId: number, query: string, limit: number, offset: number) {
10
+ super(limit, offset);
11
+ this.variableId = variableId;
12
+ this.query = query;
13
+ }
14
+
15
+ @ApiProperty({ description: "Field ID of the field against which the dynamic value provider is registered.", type: Number })
16
+ @IsNumber()
17
+ @Transform(integerTransformer)
18
+ variableId: number;
19
+
20
+ @ApiProperty({ description: "Search query string", type: String })
21
+ @IsString()
22
+ @IsOptional()
23
+ query?: any;
24
+
25
+ @ApiProperty({ description: "Value of a single dynamic option", type: String })
26
+ @IsString()
27
+ @IsOptional()
28
+ optionValue?: string = '';
29
+ }
@@ -0,0 +1,6 @@
1
+ import { IsString } from 'class-validator';
2
+
3
+ export class InvokeAiPromptDto {
4
+ @IsString()
5
+ prompt: string;
6
+ }
@@ -0,0 +1,65 @@
1
+ import { IsInt,IsOptional, IsString, IsNotEmpty, IsJSON } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+ export class UpdateAiInteractionDto {
4
+ @IsOptional()
5
+ @IsInt()
6
+ id: number;
7
+
8
+ @IsOptional()
9
+ @IsInt()
10
+ @ApiProperty()
11
+ userId: number;
12
+
13
+ @IsString()
14
+ @IsOptional()
15
+ @ApiProperty()
16
+ userUserKey: string;
17
+
18
+ @IsNotEmpty()
19
+ @IsOptional()
20
+ @IsString()
21
+ @ApiProperty()
22
+ threadId: string;
23
+
24
+ @IsNotEmpty()
25
+ @IsOptional()
26
+ @IsString()
27
+ @ApiProperty()
28
+ role: string;
29
+
30
+ @IsNotEmpty()
31
+ @IsOptional()
32
+ @IsString()
33
+ @ApiProperty()
34
+ message: string;
35
+
36
+ @IsOptional()
37
+ @IsString()
38
+ @ApiProperty()
39
+ contentType: string;
40
+
41
+ @IsOptional()
42
+ @IsString()
43
+ @ApiProperty()
44
+ status: string;
45
+
46
+ @IsOptional()
47
+ @IsString()
48
+ @ApiProperty()
49
+ errorMessage: string;
50
+
51
+ @IsOptional()
52
+ @IsString()
53
+ @ApiProperty()
54
+ modelUsed: string;
55
+
56
+ @IsOptional()
57
+ @IsInt()
58
+ @ApiProperty()
59
+ responseTimeMs: number;
60
+
61
+ @IsOptional()
62
+ @IsJSON()
63
+ @ApiProperty()
64
+ metadata: any;
65
+ }
@@ -0,0 +1,54 @@
1
+ import { IsInt,IsOptional, IsString, IsNotEmpty, IsJSON, IsBoolean } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+
4
+ export class UpdateDashboardVariableDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ id: number;
8
+ @IsNotEmpty()
9
+ @IsOptional()
10
+ @IsString()
11
+ @ApiProperty()
12
+ variableName: string;
13
+ @IsNotEmpty()
14
+ @IsOptional()
15
+ @IsString()
16
+ @ApiProperty()
17
+ variableType: string;
18
+ @IsOptional()
19
+ @IsJSON()
20
+ @ApiProperty()
21
+ selectionStaticValues: any;
22
+ @IsOptional()
23
+ @IsString()
24
+ @ApiProperty()
25
+ selectionDynamicSourceType: string;
26
+ @IsOptional()
27
+ @IsString()
28
+ @ApiProperty({ description: "SQL query to fetch the data for this variable when it is rendered at runtime. This is only applicable when selectionDynamicSourceType is set to SQL." })
29
+ selectionDynamicSQL: string;
30
+ @IsOptional()
31
+ @IsString()
32
+ @ApiProperty({ description: "This is only applicable when selectionDynamicSourceType is set to provider. It allows the user to select any pre-existing Dashboard SelectionDynamicProvider implementation used to fetch a dynamic dropdown of values to choose from when this variable is presented to the user." })
33
+ selectionDynamicProviderName: string;
34
+ @IsOptional()
35
+ @IsBoolean()
36
+ @ApiProperty({ description: "This is relevant only for variables of type \"selectionStatic\" or \"selectionDynamic\". When set to true, it allows the user to select multiple values from the dropdown." })
37
+ isMultiSelect: boolean;
38
+ @IsOptional()
39
+ @IsInt()
40
+ @ApiProperty({ description: "Related Dashboard Model" })
41
+ dashboardId: number;
42
+ @IsString()
43
+ @IsOptional()
44
+ @ApiProperty({ description: "Related Dashboard Model" })
45
+ dashboardUserKey: string;
46
+ @IsOptional()
47
+ @IsString()
48
+ @ApiProperty({ description: "This is the default value for this variable when it is rendered at runtime. It can be a static value for this variable when it is rendered at runtime." })
49
+ defaultValue: string;
50
+ @IsOptional()
51
+ @IsString()
52
+ @ApiProperty({ description: "This is the default operator for this variable when it is rendered at runtime. It can be a static value for this variable when it is rendered at runtime." })
53
+ defaultOperator: string;
54
+ }
@@ -0,0 +1,57 @@
1
+ import { IsInt,IsOptional, IsString, IsNotEmpty, ValidateNested, IsArray, IsJSON } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+ import { Type } from 'class-transformer';
4
+ import { UpdateDashboardVariableDto } from 'src/dtos/update-dashboard-variable.dto';
5
+ import { UpdateQuestionDto } from 'src/dtos/update-question.dto';
6
+
7
+ export class UpdateDashboardDto {
8
+ @IsOptional()
9
+ @IsInt()
10
+ id: number;
11
+ @IsNotEmpty()
12
+ @IsOptional()
13
+ @IsString()
14
+ @ApiProperty()
15
+ name: string;
16
+ @IsNotEmpty()
17
+ @IsOptional()
18
+ @IsJSON()
19
+ @ApiProperty()
20
+ layoutJson: any;
21
+ @IsOptional()
22
+ @ApiProperty()
23
+ @IsArray()
24
+ @ValidateNested({ each: true })
25
+ @Type(() => UpdateDashboardVariableDto)
26
+ dashboardVariables: UpdateDashboardVariableDto[];
27
+ @IsOptional()
28
+ @IsArray()
29
+ @ApiProperty()
30
+ dashboardVariablesIds: number[];
31
+ @IsString()
32
+ @IsOptional()
33
+ @ApiProperty()
34
+ dashboardVariablesCommand: string;
35
+ @IsOptional()
36
+ @ApiProperty()
37
+ @IsArray()
38
+ @ValidateNested({ each: true })
39
+ @Type(() => UpdateQuestionDto)
40
+ questions: UpdateQuestionDto[];
41
+ @IsOptional()
42
+ @IsArray()
43
+ @ApiProperty()
44
+ questionsIds: number[];
45
+ @IsString()
46
+ @IsOptional()
47
+ @ApiProperty()
48
+ questionsCommand: string;
49
+ @IsOptional()
50
+ @IsInt()
51
+ @ApiProperty()
52
+ moduleId: number;
53
+ @IsString()
54
+ @IsOptional()
55
+ @ApiProperty()
56
+ moduleUserKey: string;
57
+ }
@@ -0,0 +1,49 @@
1
+ import { IsInt, IsOptional, IsString, IsNotEmpty, IsJSON } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+
4
+ export class UpdateQuestionSqlDatasetConfigDto {
5
+ @IsOptional()
6
+ @IsInt()
7
+ id: number;
8
+ @IsNotEmpty()
9
+ @IsOptional()
10
+ @IsString()
11
+ @ApiProperty()
12
+ datasetName: string;
13
+ @IsNotEmpty()
14
+ @IsOptional()
15
+ @IsString()
16
+ @ApiProperty({ description: "This is the display name for the dataset configuration, which can be used in UI components to represent the dataset in a user-friendly manner." })
17
+ datasetDisplayName: string;
18
+ @IsOptional()
19
+ @IsString()
20
+ @ApiProperty({ description: "This is a description of the dataset configuration, providing context and details about its purpose." })
21
+ description: string;
22
+ @IsNotEmpty()
23
+ @IsOptional()
24
+ @IsString()
25
+ @ApiProperty()
26
+ sql: string;
27
+ @IsNotEmpty()
28
+ @IsOptional()
29
+ @IsString()
30
+ @ApiProperty()
31
+ labelColumnName: string;
32
+ @IsNotEmpty()
33
+ @IsOptional()
34
+ @IsString()
35
+ @ApiProperty()
36
+ valueColumnName: string;
37
+ @IsOptional()
38
+ @IsInt()
39
+ @ApiProperty({ description: "Related Question Model" })
40
+ questionId: number;
41
+ @IsString()
42
+ @IsOptional()
43
+ @ApiProperty({ description: "Related Question Model" })
44
+ questionUserKey: string;
45
+ @IsOptional()
46
+ @IsJSON()
47
+ @ApiProperty({ description: "This allows you to set the dataset options e.g border-color, background-color, etc. This is a JSON object that can be used to customize the dataset appearance or behavior in the UI." })
48
+ options: any;
49
+ }
@@ -0,0 +1,63 @@
1
+ import { IsInt,IsOptional, IsString, IsNotEmpty, IsJSON, ValidateNested, IsArray } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+ import { Type } from 'class-transformer';
4
+ import { UpdateQuestionSqlDatasetConfigDto } from 'src/dtos/update-question-sql-dataset-config.dto';
5
+
6
+ export class UpdateQuestionDto {
7
+ @IsOptional()
8
+ @IsInt()
9
+ id: number;
10
+ @IsNotEmpty()
11
+ @IsOptional()
12
+ @IsString()
13
+ @ApiProperty()
14
+ name: string;
15
+ @IsNotEmpty()
16
+ @IsOptional()
17
+ @IsString()
18
+ @ApiProperty()
19
+ sourceType: string;
20
+ @IsNotEmpty()
21
+ @IsOptional()
22
+ @IsString()
23
+ @ApiProperty()
24
+ visualisedAs: string;
25
+ @IsOptional()
26
+ @IsString()
27
+ @ApiProperty({ description: "This is only applicable when sourceType is set to provider. It allows the user to select any pre-existing Dashboard Question Data provider implementation used to fetch a dynamic dropdown of values to choose from when this question is presented to the user." })
28
+ providerName: string;
29
+ @IsOptional()
30
+ @IsInt()
31
+ @ApiProperty({ description: "Related Dashboard Model" })
32
+ dashboardId: number;
33
+ @IsString()
34
+ @IsOptional()
35
+ @ApiProperty({ description: "Related Dashboard Model" })
36
+ dashboardUserKey: string;
37
+ @IsOptional()
38
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
39
+ @IsArray()
40
+ @ValidateNested({ each: true })
41
+ @Type(() => UpdateQuestionSqlDatasetConfigDto)
42
+ questionSqlDatasetConfigs: UpdateQuestionSqlDatasetConfigDto[];
43
+ @IsOptional()
44
+ @IsArray()
45
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
46
+ questionSqlDatasetConfigsIds: number[];
47
+ @IsString()
48
+ @IsOptional()
49
+ @ApiProperty({ description: "Related Question SQL Dataset Config Model" })
50
+ questionSqlDatasetConfigsCommand: string;
51
+ @IsOptional()
52
+ @IsJSON()
53
+ @ApiProperty({ description: "This is a JSON object representing each labels display and color options for the bar chart" })
54
+ chartOptions: any;
55
+ @IsOptional()
56
+ @IsString()
57
+ @ApiProperty({ description: "This is the SQL query to fetch the label values for the question" })
58
+ labelSql: string;
59
+ @IsOptional()
60
+ @IsString()
61
+ @ApiProperty({ description: "This is the SQL query to fetch the KPI value for the question" })
62
+ kpiSql: string;
63
+ }
@@ -0,0 +1,39 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import {Entity, JoinColumn, ManyToOne, Index, Column} from 'typeorm';
3
+ import { User } from 'src/entities/user.entity'
4
+ @Entity("ss_ai_interactions")
5
+ export class AiInteraction extends CommonEntity{
6
+ @Index()
7
+ @ManyToOne(() => User, { onDelete: "CASCADE", nullable: false })
8
+ @JoinColumn()
9
+ user: User;
10
+
11
+ @Index()
12
+ @Column({ type: "varchar" })
13
+ threadId: string;
14
+
15
+ @Column({ type: "varchar" })
16
+ role: string;
17
+
18
+ @Column({ type: "text" })
19
+ message: string;
20
+
21
+ @Column({ type: "varchar", nullable: true })
22
+ contentType: string;
23
+
24
+ @Index()
25
+ @Column({ type: "varchar", nullable: true })
26
+ status: string;
27
+
28
+ @Column({ type: "text", nullable: true })
29
+ errorMessage: string;
30
+
31
+ @Column({ type: "varchar", nullable: true })
32
+ modelUsed: string;
33
+
34
+ @Column({ type: "integer", nullable: true })
35
+ responseTimeMs: number;
36
+
37
+ @Column({ type: "jsonb", nullable: true })
38
+ metadata: any;
39
+ }
@@ -0,0 +1,30 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import {Entity, Column, Index, JoinColumn, ManyToOne} from 'typeorm';
3
+ import { Dashboard } from 'src/entities/dashboard.entity'
4
+
5
+ @Entity("ss_dashboard_variable")
6
+ export class DashboardVariable extends CommonEntity {
7
+ @Index({ unique: true })
8
+ @Column({ type: "varchar" })
9
+ variableName: string;
10
+ @Index()
11
+ @Column({ type: "varchar" })
12
+ variableType: string;
13
+ @Column({ type: "jsonb", nullable: true })
14
+ selectionStaticValues: any;
15
+ @Column({ nullable: true })
16
+ selectionDynamicSourceType: string;
17
+ @Column({ type: "text", nullable: true })
18
+ selectionDynamicSQL: string;
19
+ @Column({ type: "varchar", nullable: true })
20
+ selectionDynamicProviderName: string;
21
+ @Column({ type: "boolean", nullable: true, default: true })
22
+ isMultiSelect: boolean = true;
23
+ @ManyToOne(() => Dashboard, { onDelete: "CASCADE", nullable: true })
24
+ @JoinColumn()
25
+ dashboard: Dashboard;
26
+ @Column({ type: "text", nullable: true })
27
+ defaultValue: string;
28
+ @Column({ type: "varchar", nullable: true })
29
+ defaultOperator: string;
30
+ }
@@ -0,0 +1,21 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import { Entity, Column, Index, OneToMany, JoinColumn, ManyToOne } from 'typeorm';
3
+ import { DashboardVariable } from 'src/entities/dashboard-variable.entity';
4
+ import { Question } from 'src/entities/question.entity';
5
+ import { ModuleMetadata } from 'src/entities/module-metadata.entity'
6
+
7
+ @Entity("ss_dashboard")
8
+ export class Dashboard extends CommonEntity {
9
+ @Index({ unique: true })
10
+ @Column({ type: "varchar" })
11
+ name: string;
12
+ @Column({ type: "text" })
13
+ layoutJson: any;
14
+ @OneToMany(() => DashboardVariable, dashboardVariable => dashboardVariable.dashboard, { cascade: true })
15
+ dashboardVariables: DashboardVariable[];
16
+ @OneToMany(() => Question, question => question.dashboard, { cascade: true })
17
+ questions: Question[];
18
+ @ManyToOne(() => ModuleMetadata, { onDelete: "CASCADE", nullable: false })
19
+ @JoinColumn()
20
+ module: ModuleMetadata;
21
+ }
@@ -0,0 +1,25 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
3
+ import { Question } from 'src/entities/question.entity'
4
+
5
+ @Entity("ss_question_sql_dataset_config")
6
+ export class QuestionSqlDatasetConfig extends CommonEntity {
7
+ @Index({ unique: true })
8
+ @Column({ type: "varchar" })
9
+ datasetName: string;
10
+ @Column({ type: "varchar" })
11
+ datasetDisplayName: string;
12
+ @Column({ type: "text", nullable: true })
13
+ description: string;
14
+ @Column({ type: "text" })
15
+ sql: string;
16
+ @Column({ type: "varchar" })
17
+ labelColumnName: string;
18
+ @Column({ type: "varchar" })
19
+ valueColumnName: string;
20
+ @ManyToOne(() => Question, { onDelete: "CASCADE", nullable: false })
21
+ @JoinColumn()
22
+ question: Question;
23
+ @Column({ type: "text", nullable: true })
24
+ options: any;
25
+ }
@@ -0,0 +1,30 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import { Entity, Column, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
3
+ import { Dashboard } from 'src/entities/dashboard.entity';
4
+ import { QuestionSqlDatasetConfig } from 'src/entities/question-sql-dataset-config.entity'
5
+
6
+ @Entity("ss_question")
7
+ export class Question extends CommonEntity {
8
+ @Index({ unique: true })
9
+ @Column({ type: "varchar" })
10
+ name: string;
11
+ @Index()
12
+ @Column({})
13
+ sourceType: string;
14
+ @Index()
15
+ @Column({})
16
+ visualisedAs: string;
17
+ @Column({ type: "varchar", nullable: true })
18
+ providerName: string;
19
+ @ManyToOne(() => Dashboard, { onDelete: "CASCADE", nullable: true })
20
+ @JoinColumn()
21
+ dashboard: Dashboard;
22
+ @OneToMany(() => QuestionSqlDatasetConfig, questionSqlDatasetConfig => questionSqlDatasetConfig.question, { cascade: true })
23
+ questionSqlDatasetConfigs: QuestionSqlDatasetConfig[];
24
+ @Column({ type: "jsonb", nullable: true })
25
+ chartOptions: any;
26
+ @Column({ type: "text", nullable: true })
27
+ labelSql: string;
28
+ @Column({ type: "text", nullable: true })
29
+ kpiSql: string;
30
+ }