@solidxai/core 0.1.6-beta.9 → 0.1.7

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 (311) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CHANGELOG.md +71 -0
  3. package/dist/controllers/dashboard-layout.controller.d.ts +47 -0
  4. package/dist/controllers/dashboard-layout.controller.d.ts.map +1 -0
  5. package/dist/controllers/dashboard-layout.controller.js +204 -0
  6. package/dist/controllers/dashboard-layout.controller.js.map +1 -0
  7. package/dist/dtos/create-dashboard-layout.dto.d.ts +8 -0
  8. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +1 -0
  9. package/dist/dtos/create-dashboard-layout.dto.js +53 -0
  10. package/dist/dtos/create-dashboard-layout.dto.js.map +1 -0
  11. package/dist/dtos/create-dashboard-variable.dto.d.ts +1 -0
  12. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +1 -1
  13. package/dist/dtos/create-dashboard-variable.dto.js +7 -1
  14. package/dist/dtos/create-dashboard-variable.dto.js.map +1 -1
  15. package/dist/dtos/update-dashboard-layout.dto.d.ts +8 -0
  16. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +1 -0
  17. package/dist/dtos/update-dashboard-layout.dto.js +53 -0
  18. package/dist/dtos/update-dashboard-layout.dto.js.map +1 -0
  19. package/dist/dtos/update-dashboard-variable.dto.d.ts +1 -0
  20. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +1 -1
  21. package/dist/dtos/update-dashboard-variable.dto.js +7 -1
  22. package/dist/dtos/update-dashboard-variable.dto.js.map +1 -1
  23. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  24. package/dist/entities/action-metadata.entity.js.map +1 -1
  25. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  26. package/dist/entities/ai-interaction.entity.js +5 -4
  27. package/dist/entities/ai-interaction.entity.js.map +1 -1
  28. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  29. package/dist/entities/chatter-message-details.entity.js +4 -3
  30. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  31. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  32. package/dist/entities/chatter-message.entity.js +4 -3
  33. package/dist/entities/chatter-message.entity.js.map +1 -1
  34. package/dist/entities/dashboard-layout.entity.d.ts +9 -0
  35. package/dist/entities/dashboard-layout.entity.d.ts.map +1 -0
  36. package/dist/entities/dashboard-layout.entity.js +41 -0
  37. package/dist/entities/dashboard-layout.entity.js.map +1 -0
  38. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -1
  39. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +5 -4
  40. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  41. package/dist/entities/dashboard-question.entity.d.ts.map +1 -1
  42. package/dist/entities/dashboard-question.entity.js +5 -4
  43. package/dist/entities/dashboard-question.entity.js.map +1 -1
  44. package/dist/entities/dashboard-variable.entity.d.ts +1 -0
  45. package/dist/entities/dashboard-variable.entity.d.ts.map +1 -1
  46. package/dist/entities/dashboard-variable.entity.js +10 -4
  47. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  48. package/dist/entities/dashboard.entity.d.ts +2 -0
  49. package/dist/entities/dashboard.entity.d.ts.map +1 -1
  50. package/dist/entities/dashboard.entity.js +9 -3
  51. package/dist/entities/dashboard.entity.js.map +1 -1
  52. package/dist/entities/email-attachment.entity.d.ts.map +1 -1
  53. package/dist/entities/email-attachment.entity.js +2 -1
  54. package/dist/entities/email-attachment.entity.js.map +1 -1
  55. package/dist/entities/email-template.entity.js +1 -1
  56. package/dist/entities/email-template.entity.js.map +1 -1
  57. package/dist/entities/export-transaction.entity.d.ts.map +1 -1
  58. package/dist/entities/export-transaction.entity.js +2 -1
  59. package/dist/entities/export-transaction.entity.js.map +1 -1
  60. package/dist/entities/field-metadata.entity.js +2 -2
  61. package/dist/entities/field-metadata.entity.js.map +1 -1
  62. package/dist/entities/import-transaction-error-log.entity.d.ts.map +1 -1
  63. package/dist/entities/import-transaction-error-log.entity.js +3 -2
  64. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  65. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  66. package/dist/entities/import-transaction.entity.js +2 -1
  67. package/dist/entities/import-transaction.entity.js.map +1 -1
  68. package/dist/entities/mq-message-queue.entity.d.ts.map +1 -1
  69. package/dist/entities/mq-message-queue.entity.js.map +1 -1
  70. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  71. package/dist/entities/mq-message.entity.js +5 -3
  72. package/dist/entities/mq-message.entity.js.map +1 -1
  73. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  74. package/dist/entities/saved-filters.entity.js +3 -2
  75. package/dist/entities/saved-filters.entity.js.map +1 -1
  76. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  77. package/dist/entities/security-rule.entity.js +2 -1
  78. package/dist/entities/security-rule.entity.js.map +1 -1
  79. package/dist/entities/sms-template.entity.js +1 -1
  80. package/dist/entities/sms-template.entity.js.map +1 -1
  81. package/dist/entities/user-view-metadata.entity.d.ts.map +1 -1
  82. package/dist/entities/user-view-metadata.entity.js +2 -1
  83. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  84. package/dist/entities/user.entity.d.ts.map +1 -1
  85. package/dist/entities/user.entity.js +2 -0
  86. package/dist/entities/user.entity.js.map +1 -1
  87. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  88. package/dist/entities/view-metadata.entity.js.map +1 -1
  89. package/dist/helpers/bootstrap.helper.d.ts +14 -0
  90. package/dist/helpers/bootstrap.helper.d.ts.map +1 -0
  91. package/dist/helpers/bootstrap.helper.js +132 -0
  92. package/dist/helpers/bootstrap.helper.js.map +1 -0
  93. package/dist/helpers/cache.helper.d.ts +2 -0
  94. package/dist/helpers/cache.helper.d.ts.map +1 -0
  95. package/dist/helpers/cache.helper.js +8 -0
  96. package/dist/helpers/cache.helper.js.map +1 -0
  97. package/dist/helpers/cors.helper.d.ts.map +1 -1
  98. package/dist/helpers/cors.helper.js +13 -4
  99. package/dist/helpers/cors.helper.js.map +1 -1
  100. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  101. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  102. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +8 -9
  103. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  104. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts +2 -2
  105. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts.map +1 -1
  106. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js +8 -5
  107. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
  108. package/dist/helpers/solid-registry.d.ts +3 -0
  109. package/dist/helpers/solid-registry.d.ts.map +1 -1
  110. package/dist/helpers/solid-registry.js +7 -0
  111. package/dist/helpers/solid-registry.js.map +1 -1
  112. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  113. package/dist/helpers/typeorm-db-helper.js +21 -0
  114. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  115. package/dist/index.d.ts +3 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +3 -0
  118. package/dist/index.js.map +1 -1
  119. package/dist/interfaces.d.ts +2 -0
  120. package/dist/interfaces.d.ts.map +1 -1
  121. package/dist/interfaces.js.map +1 -1
  122. package/dist/jobs/chatter-queue-options.js +1 -1
  123. package/dist/jobs/chatter-queue-options.js.map +1 -1
  124. package/dist/jobs/chatter-queue-publisher.service.d.ts +9 -9
  125. package/dist/jobs/chatter-queue-publisher.service.d.ts.map +1 -1
  126. package/dist/jobs/chatter-queue-publisher.service.js +5 -5
  127. package/dist/jobs/chatter-queue-publisher.service.js.map +1 -1
  128. package/dist/jobs/chatter-queue-subscriber.service.d.ts +4 -4
  129. package/dist/jobs/chatter-queue-subscriber.service.d.ts.map +1 -1
  130. package/dist/jobs/chatter-queue-subscriber.service.js +11 -11
  131. package/dist/jobs/chatter-queue-subscriber.service.js.map +1 -1
  132. package/dist/jobs/computed-field-evaluation-queue-options.d.ts +2 -0
  133. package/dist/jobs/computed-field-evaluation-queue-options.d.ts.map +1 -1
  134. package/dist/jobs/computed-field-evaluation-queue-options.js +2 -0
  135. package/dist/jobs/computed-field-evaluation-queue-options.js.map +1 -1
  136. package/dist/jobs/database/chatter-queue-options-database.d.ts +8 -0
  137. package/dist/jobs/database/chatter-queue-options-database.d.ts.map +1 -0
  138. package/dist/jobs/database/chatter-queue-options-database.js +10 -0
  139. package/dist/jobs/database/chatter-queue-options-database.js.map +1 -0
  140. package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts +12 -0
  141. package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts.map +1 -0
  142. package/dist/jobs/database/chatter-queue-publisher-database.service.js +39 -0
  143. package/dist/jobs/database/chatter-queue-publisher-database.service.js.map +1 -0
  144. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts +19 -0
  145. package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts.map +1 -0
  146. package/dist/jobs/database/chatter-queue-subscriber-database.service.js +62 -0
  147. package/dist/jobs/database/chatter-queue-subscriber-database.service.js.map +1 -0
  148. package/dist/repository/dashboard-layout.repository.d.ts +12 -0
  149. package/dist/repository/dashboard-layout.repository.d.ts.map +1 -0
  150. package/dist/repository/dashboard-layout.repository.js +34 -0
  151. package/dist/repository/dashboard-layout.repository.js.map +1 -0
  152. package/dist/repository/model-metadata.repository.d.ts +6 -1
  153. package/dist/repository/model-metadata.repository.d.ts.map +1 -1
  154. package/dist/repository/model-metadata.repository.js +41 -2
  155. package/dist/repository/model-metadata.repository.js.map +1 -1
  156. package/dist/seeders/module-metadata-seeder.service.js +4 -4
  157. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  158. package/dist/seeders/seed-data/solid-core-metadata.json +372 -32
  159. package/dist/services/chatter-message.service.d.ts +4 -4
  160. package/dist/services/chatter-message.service.d.ts.map +1 -1
  161. package/dist/services/chatter-message.service.js +33 -9
  162. package/dist/services/chatter-message.service.js.map +1 -1
  163. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +7 -3
  164. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
  165. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +61 -22
  166. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
  167. package/dist/services/crud.service.js +1 -1
  168. package/dist/services/crud.service.js.map +1 -1
  169. package/dist/services/dashboard-layout.service.d.ts +20 -0
  170. package/dist/services/dashboard-layout.service.d.ts.map +1 -0
  171. package/dist/services/dashboard-layout.service.js +120 -0
  172. package/dist/services/dashboard-layout.service.js.map +1 -0
  173. package/dist/services/dashboard.service.d.ts +2 -0
  174. package/dist/services/dashboard.service.d.ts.map +1 -1
  175. package/dist/services/dashboard.service.js +4 -0
  176. package/dist/services/dashboard.service.js.map +1 -1
  177. package/dist/services/model-metadata.service.d.ts +3 -1
  178. package/dist/services/model-metadata.service.d.ts.map +1 -1
  179. package/dist/services/model-metadata.service.js +21 -2
  180. package/dist/services/model-metadata.service.js.map +1 -1
  181. package/dist/services/permission-metadata.service.d.ts +5 -1
  182. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  183. package/dist/services/permission-metadata.service.js +66 -20
  184. package/dist/services/permission-metadata.service.js.map +1 -1
  185. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  186. package/dist/services/queues/database-subscriber.service.js +6 -1
  187. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  188. package/dist/services/queues/publisher-factory.service.js +0 -1
  189. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  190. package/dist/services/queues/rabbitmq-publisher.service.d.ts +1 -0
  191. package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
  192. package/dist/services/queues/rabbitmq-publisher.service.js +6 -1
  193. package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
  194. package/dist/services/queues/rabbitmq-subscriber.service.d.ts +5 -1
  195. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  196. package/dist/services/queues/rabbitmq-subscriber.service.js +84 -9
  197. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  198. package/dist/services/request-context.service.d.ts +2 -1
  199. package/dist/services/request-context.service.d.ts.map +1 -1
  200. package/dist/services/request-context.service.js.map +1 -1
  201. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  202. package/dist/services/scheduled-jobs/scheduler.service.js +20 -2
  203. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  204. package/dist/services/solid-introspect.service.d.ts +6 -1
  205. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  206. package/dist/services/solid-introspect.service.js +27 -2
  207. package/dist/services/solid-introspect.service.js.map +1 -1
  208. package/dist/services/solid-ts-morph.service.d.ts +9 -0
  209. package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
  210. package/dist/services/solid-ts-morph.service.js +76 -0
  211. package/dist/services/solid-ts-morph.service.js.map +1 -1
  212. package/dist/solid-core.module.d.ts.map +1 -1
  213. package/dist/solid-core.module.js +16 -0
  214. package/dist/solid-core.module.js.map +1 -1
  215. package/dist/subscribers/audit.subscriber.d.ts +10 -7
  216. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  217. package/dist/subscribers/audit.subscriber.js +58 -85
  218. package/dist/subscribers/audit.subscriber.js.map +1 -1
  219. package/dist/subscribers/computed-entity-field.subscriber.js +3 -1
  220. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  221. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +0 -1
  222. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
  223. package/dist/subscribers/created-by-updated-by.subscriber.js +3 -13
  224. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
  225. package/dist/winston.logger.d.ts.map +1 -1
  226. package/dist/winston.logger.js +2 -1
  227. package/dist/winston.logger.js.map +1 -1
  228. package/package.json +3 -1
  229. package/sql/default/mariadb/proc_CleanupModelMetadata.sql +153 -0
  230. package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +56 -0
  231. package/sql/default/mysql/proc_CleanupModelMetadata.sql +153 -0
  232. package/sql/default/mysql/proc_CleanupModuleMetadata.sql +56 -0
  233. package/src/controllers/dashboard-layout.controller.ts +106 -0
  234. package/src/dtos/create-dashboard-layout.dto.ts +31 -0
  235. package/src/dtos/create-dashboard-variable.dto.ts +4 -0
  236. package/src/dtos/update-dashboard-layout.dto.ts +30 -0
  237. package/src/dtos/update-dashboard-variable.dto.ts +5 -1
  238. package/src/entities/action-metadata.entity.ts +3 -2
  239. package/src/entities/ai-interaction.entity.ts +5 -4
  240. package/src/entities/chatter-message-details.entity.ts +4 -3
  241. package/src/entities/chatter-message.entity.ts +4 -3
  242. package/src/entities/dashboard-layout.entity.ts +18 -0
  243. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +5 -4
  244. package/src/entities/dashboard-question.entity.ts +5 -4
  245. package/src/entities/dashboard-variable.entity.ts +9 -4
  246. package/src/entities/dashboard.entity.ts +7 -2
  247. package/src/entities/email-attachment.entity.ts +2 -1
  248. package/src/entities/email-template.entity.ts +1 -1
  249. package/src/entities/export-transaction.entity.ts +2 -1
  250. package/src/entities/field-metadata.entity.ts +2 -2
  251. package/src/entities/import-transaction-error-log.entity.ts +3 -2
  252. package/src/entities/import-transaction.entity.ts +2 -1
  253. package/src/entities/mq-message-queue.entity.ts +8 -8
  254. package/src/entities/mq-message.entity.ts +5 -3
  255. package/src/entities/saved-filters.entity.ts +3 -2
  256. package/src/entities/security-rule.entity.ts +2 -1
  257. package/src/entities/sms-template.entity.ts +1 -1
  258. package/src/entities/user-view-metadata.entity.ts +2 -1
  259. package/src/entities/user.entity.ts +37 -2
  260. package/src/entities/view-metadata.entity.ts +3 -0
  261. package/src/helpers/bootstrap.helper.ts +222 -0
  262. package/src/helpers/cache.helper.ts +5 -0
  263. package/src/helpers/cors.helper.ts +26 -6
  264. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +9 -9
  265. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +9 -6
  266. package/src/helpers/solid-registry.ts +10 -5
  267. package/src/helpers/typeorm-db-helper.ts +26 -0
  268. package/src/index.ts +3 -0
  269. package/src/interfaces.ts +3 -0
  270. package/src/jobs/chatter-queue-options.ts +1 -1
  271. package/src/jobs/chatter-queue-publisher.service.ts +11 -11
  272. package/src/jobs/chatter-queue-subscriber.service.ts +13 -8
  273. package/src/jobs/computed-field-evaluation-queue-options.ts +2 -0
  274. package/src/jobs/database/chatter-queue-options-database.ts +9 -0
  275. package/src/jobs/database/chatter-queue-publisher-database.service.ts +24 -0
  276. package/src/jobs/database/chatter-queue-subscriber-database.service.ts +53 -0
  277. package/src/repository/dashboard-layout.repository.ts +17 -0
  278. package/src/repository/model-metadata.repository.ts +45 -2
  279. package/src/seeders/module-metadata-seeder.service.ts +5 -5
  280. package/src/seeders/seed-data/solid-core-metadata.json +373 -33
  281. package/src/services/1.js +6 -0
  282. package/src/services/chatter-message.service.ts +41 -9
  283. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +79 -40
  284. package/src/services/crud.service.ts +1 -1
  285. package/src/services/dashboard-layout.service.ts +111 -0
  286. package/src/services/dashboard.service.ts +7 -0
  287. package/src/services/model-metadata.service.ts +22 -43
  288. package/src/services/permission-metadata.service.ts +73 -20
  289. package/src/services/queues/database-subscriber.service.ts +7 -1
  290. package/src/services/queues/publisher-factory.service.ts +1 -1
  291. package/src/services/queues/rabbitmq-publisher.service.ts +8 -2
  292. package/src/services/queues/rabbitmq-subscriber.service.ts +127 -10
  293. package/src/services/request-context.service.ts +2 -1
  294. package/src/services/scheduled-jobs/scheduler.service.ts +22 -4
  295. package/src/services/solid-introspect.service.ts +28 -0
  296. package/src/services/solid-ts-morph.service.ts +98 -0
  297. package/src/solid-core.module.ts +21 -2
  298. package/src/subscribers/audit.subscriber.ts +63 -271
  299. package/src/subscribers/computed-entity-field.subscriber.ts +3 -3
  300. package/src/subscribers/created-by-updated-by.subscriber.ts +22 -16
  301. package/src/winston.logger.ts +2 -1
  302. package/dist-tests/api/authenticate.spec.js +0 -119
  303. package/dist-tests/api/authenticate.spec.js.map +0 -1
  304. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  305. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  306. package/dist-tests/api/ping.spec.js +0 -21
  307. package/dist-tests/api/ping.spec.js.map +0 -1
  308. package/dist-tests/helpers/auth.js +0 -41
  309. package/dist-tests/helpers/auth.js.map +0 -1
  310. package/dist-tests/helpers/env.js +0 -11
  311. package/dist-tests/helpers/env.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(node -e:*)",
5
+ "WebFetch(domain:docs.solidxai.com)",
6
+ "WebFetch(domain:github.com)",
7
+ "Read(//Users/oswald/projects/Solid_Starters/solidctl/**)",
8
+ "Read(//Users/oswald/projects/Solid_Starters/**)",
9
+ "Bash(find /Users/oswald/projects/Solid_Starters/solid-core-module -type d -name migration* -o -name *database*)"
10
+ ],
11
+ "additionalDirectories": [
12
+ "/Users/oswald/projects/Solid_Starters/solidctl"
13
+ ]
14
+ }
15
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.7.0] - 2026-04-08
4
+
5
+ ### New Features
6
+
7
+ #### Bootstrap Helper
8
+ - **`bootstrapSolidApp()` and `bootstrapSolidCli()`**: New exported helper functions that wire up a SolidX NestJS HTTP server or CLI application with sensible defaults — security headers, CORS, Winston logger, `ValidationPipe`, `WrapResponseInterceptor`, qs deep query parsing, Swagger, and the pg BIGINT type parser. Replaces the boilerplate `main.ts` that every app had to copy and maintain.
9
+
10
+ #### Dashboard Layouts
11
+ - **`DashboardLayout` entity and full CRUD**: A new `DashboardLayout` entity, repository, service, and controller have been added. Dashboard layouts allow configuring the visual arrangement of a dashboard and are available via `/dashboard-layout` endpoints. Create and update DTOs are included.
12
+
13
+ #### Scheduled Jobs
14
+ - **Manual trigger endpoint**: `POST /scheduled-job/:id/trigger` allows any scheduled job to be invoked immediately on demand, outside its normal cron window. The job's `lastRunAt` and `nextRunAt` are updated after execution.
15
+ - **Selective job enabling via regex**: Set `SOLID_SCHEDULER_JOBS_REGEX_TO_ENABLE` to a regex string to allow only matching job names to run in a given environment. Set it to `"all"` (or leave it empty) to enable all jobs. Invalid regex causes the scheduler loop to skip the run and log an error.
16
+
17
+ #### Audit — Fully Queue-Driven Processing
18
+ - **All audit work pushed to the queue**: The audit subscriber no longer calls `ChatterMessageService` directly. All insert/update/delete audit events are serialised into `AuditQueuePayload` messages and dispatched through the publisher (RabbitMQ or database broker). The chatter queue subscriber then processes these asynchronously, improving database connection pool utilisation under load.
19
+ - **Database broker for chatter queue**: New `ChatterQueuePublisherDatabase` and `ChatterQueueSubscriberDatabase` services provide a database-backed alternative to the RabbitMQ chatter queue, for deployments that do not run RabbitMQ.
20
+ - **Old and new field values captured on delete**: The audit subscriber now records the full entity state (old values) when a delete event fires, so the audit log shows what was deleted.
21
+
22
+ #### SQL Stored Procedures
23
+ - **`proc_CleanupModelMetadata` and `proc_CleanupModuleMetadata`**: New stored procedures for MariaDB and MySQL that purge stale model and module metadata entries. Useful for keeping the metadata tables clean after module restructuring.
24
+
25
+ ---
26
+
27
+ ### Performance Improvements
28
+
29
+ #### Audit & Subscribers
30
+ - **`shouldTrackAudit` moved to registry**: The per-event auditability check is now a synchronous in-memory lookup against the `SolidRegistry` (populated at startup) rather than a live database query on every TypeORM event. Removes N+1 queries from the hot path.
31
+ - **`CreatedByUpdatedBySubscriber` no longer queries the database**: `createdBy` / `updatedBy` are now stamped directly from the JWT `sub` claim available in `RequestContextService`, eliminating a `User` table lookup per insert/update.
32
+ - **Model metadata queries cached**: Frequently used model metadata lookups are cached in the registry, avoiding repeated database round-trips during request handling.
33
+ - **Permission service hot-path optimisation**: Methods in `PermissionMetadataService` used during auth and access-token guard evaluation have been optimised to reduce redundant work on the critical authentication path.
34
+
35
+ #### Computed Fields
36
+ - **`EntityIdSequenceNumComputedFieldProvider` merged into `SequenceNumComputedFieldProvider`**: The two sequence providers have been consolidated. The entity-ID-based sequence now runs as a post-compute step, removing a duplicated provider registration.
37
+
38
+ #### Database
39
+ - **Indexes on `User.email` and `User.mobile`**: Both columns now have database indexes, speeding up the frequent lookups performed during OTP and email-based login flows.
40
+ - **Index on `MqMessage` message ID**: Adds an index on the message ID column in the MQ message table for faster message lookups.
41
+
42
+ ---
43
+
44
+ ### Improvements
45
+
46
+ #### Logging
47
+ - **Environment-variable log level control**: Log verbosity can now be configured via environment variables, with sensible defaults per environment (development vs production). Previously log levels were hardcoded.
48
+ - **CORS diagnostic logging**: The CORS helper logs the allowed origins list and the compiled regexes at startup, and logs per-request debug output showing which regex matched (or why a request was rejected). Makes CORS misconfiguration much easier to diagnose.
49
+ - **RabbitMQ subscriber logs service role on skip**: When `QUEUES_SERVICE_ROLE` is set to a value that disables the subscriber, a clear log message is emitted instead of silently not connecting.
50
+ - **RabbitMQ error logs now include stack traces**: `handleProcessingError` passes the full error stack to the logger, rather than only the message string.
51
+
52
+ #### RabbitMQ Subscriber
53
+ - **Processing timeout**: Subscribers can now declare a per-queue processing timeout. If a message handler exceeds the timeout a `ConsumerProcessingTimeoutError` is thrown, preventing a slow message from blocking the consumer indefinitely.
54
+ - **`shouldPersistToDatabase()` flag**: Subscribers can opt out of DB persistence for retry/dead-letter tracking by overriding `shouldPersistToDatabase()` returning `false`.
55
+
56
+ #### Audit — Chatter Message Details
57
+ - **`fieldType` stored on `ChatterMessageDetails`**: Audit detail records now capture the field's metadata type (e.g. `"relation"`, `"date"`, `"select"`), enabling richer display logic on the client without re-fetching field metadata.
58
+
59
+ #### Scheduler
60
+ - **Scheduler disabled state is now logged**: When `SOLID_SCHEDULER_ENABLED=false` the scheduler logs a debug message instead of returning silently.
61
+
62
+ #### Query String Parsing
63
+ - **qs depth limit increased**: The `qs` query-string depth limit has been raised to accommodate deeper nested filter objects.
64
+
65
+ ---
66
+
67
+ ### Bug Fixes
68
+
69
+ - **RabbitMQ subscriber role check refactored**: The service-role guard that was inline inside the connection block has been pulled out to a top-level check with a clear log message, preventing silent no-ops when the role is misconfigured.
70
+ - **Audit subscriber no longer holds `ChatterMessageService` in synchronous TypeORM event scope**: Resolves potential circular dependency and scope issues that could cause runtime errors under certain module initialisation orders.
71
+
72
+ ---
73
+
3
74
  ## [0.1.5] - 2026-03-13
4
75
 
5
76
  ### Breaking Changes
@@ -0,0 +1,47 @@
1
+ import { CreateDashboardLayoutDto } from 'src/dtos/create-dashboard-layout.dto';
2
+ import { UpdateDashboardLayoutDto } from 'src/dtos/update-dashboard-layout.dto';
3
+ import { DashboardLayoutService } from 'src/services/dashboard-layout.service';
4
+ export declare class DashboardLayoutController {
5
+ private readonly service;
6
+ constructor(service: DashboardLayoutService);
7
+ create(createDto: CreateDashboardLayoutDto, files: Array<Express.Multer.File>): Promise<import("..").DashboardLayout>;
8
+ insertMany(createDtos: CreateDashboardLayoutDto[], filesArray?: Express.Multer.File[][]): Promise<import("..").DashboardLayout[]>;
9
+ upsertUserDashboardLayout(createDtos: CreateDashboardLayoutDto): Promise<import("..").DashboardLayout>;
10
+ update(id: number, updateDto: UpdateDashboardLayoutDto, files: Array<Express.Multer.File>): Promise<import("..").DashboardLayout>;
11
+ partialUpdate(id: number, updateDto: UpdateDashboardLayoutDto, files: Array<Express.Multer.File>): Promise<import("..").DashboardLayout>;
12
+ recoverMany(ids: number[]): Promise<{
13
+ message: string;
14
+ recoveredIds: number[];
15
+ }>;
16
+ getUserDashboardLayoutByDashboardId(dashboardId: number): Promise<import("..").DashboardLayout | {
17
+ layout: any;
18
+ }>;
19
+ recover(id: number): Promise<{
20
+ message: string;
21
+ data: import("..").DashboardLayout;
22
+ }>;
23
+ findMany(query: any): Promise<{
24
+ meta: {
25
+ totalRecords: number;
26
+ };
27
+ groupMeta: any[];
28
+ groupRecords: any[];
29
+ records?: undefined;
30
+ } | {
31
+ meta: {
32
+ totalRecords: number;
33
+ currentPage: number;
34
+ nextPage: number;
35
+ prevPage: number;
36
+ totalPages: number;
37
+ perPage: number;
38
+ };
39
+ records: import("..").DashboardLayout[];
40
+ groupMeta?: undefined;
41
+ groupRecords?: undefined;
42
+ }>;
43
+ findOne(id: string, query: any): Promise<import("..").DashboardLayout>;
44
+ deleteMany(ids: number[]): Promise<any>;
45
+ delete(id: number): Promise<import("..").DashboardLayout>;
46
+ }
47
+ //# sourceMappingURL=dashboard-layout.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-layout.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/dashboard-layout.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAO/E,qBAEa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAK5D,MAAM,CAAS,SAAS,EAAE,wBAAwB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOtG,UAAU,CAAS,UAAU,EAAE,wBAAwB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAOpH,yBAAyB,CAAS,UAAU,EAAE,wBAAwB;IAQtE,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,wBAAwB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO/H,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,wBAAwB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAMhI,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,mCAAmC,CAAuB,WAAW,EAAE,MAAM;;;IAM7E,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;CAKrC"}
@@ -0,0 +1,204 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DashboardLayoutController = void 0;
16
+ const openapi = require("@nestjs/swagger");
17
+ const common_1 = require("@nestjs/common");
18
+ const platform_express_1 = require("@nestjs/platform-express");
19
+ const swagger_1 = require("@nestjs/swagger");
20
+ const create_dashboard_layout_dto_1 = require("../dtos/create-dashboard-layout.dto");
21
+ const update_dashboard_layout_dto_1 = require("../dtos/update-dashboard-layout.dto");
22
+ const dashboard_layout_service_1 = require("../services/dashboard-layout.service");
23
+ var ShowSoftDeleted;
24
+ (function (ShowSoftDeleted) {
25
+ ShowSoftDeleted["INCLUSIVE"] = "inclusive";
26
+ ShowSoftDeleted["EXCLUSIVE"] = "exclusive";
27
+ })(ShowSoftDeleted || (ShowSoftDeleted = {}));
28
+ let DashboardLayoutController = class DashboardLayoutController {
29
+ constructor(service) {
30
+ this.service = service;
31
+ }
32
+ create(createDto, files) {
33
+ return this.service.create(createDto, files);
34
+ }
35
+ insertMany(createDtos, filesArray = []) {
36
+ return this.service.insertMany(createDtos, filesArray);
37
+ }
38
+ upsertUserDashboardLayout(createDtos) {
39
+ return this.service.upsertUserDashboardLayout(createDtos);
40
+ }
41
+ update(id, updateDto, files) {
42
+ return this.service.update(id, updateDto, files);
43
+ }
44
+ partialUpdate(id, updateDto, files) {
45
+ return this.service.update(id, updateDto, files, true);
46
+ }
47
+ async recoverMany(ids) {
48
+ return this.service.recoverMany(ids);
49
+ }
50
+ async getUserDashboardLayoutByDashboardId(dashboardId) {
51
+ return this.service.getUserDashboardLayoutByDashboardId(dashboardId);
52
+ }
53
+ async recover(id) {
54
+ return this.service.recover(id);
55
+ }
56
+ async findMany(query) {
57
+ return this.service.find(query);
58
+ }
59
+ async findOne(id, query) {
60
+ return this.service.findOne(+id, query);
61
+ }
62
+ async deleteMany(ids) {
63
+ return this.service.deleteMany(ids);
64
+ }
65
+ async delete(id) {
66
+ return this.service.delete(id);
67
+ }
68
+ };
69
+ exports.DashboardLayoutController = DashboardLayoutController;
70
+ __decorate([
71
+ (0, swagger_1.ApiBearerAuth)("jwt"),
72
+ (0, common_1.Post)(),
73
+ (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
74
+ openapi.ApiResponse({ status: 201, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
75
+ __param(0, (0, common_1.Body)()),
76
+ __param(1, (0, common_1.UploadedFiles)()),
77
+ __metadata("design:type", Function),
78
+ __metadata("design:paramtypes", [create_dashboard_layout_dto_1.CreateDashboardLayoutDto, Array]),
79
+ __metadata("design:returntype", void 0)
80
+ ], DashboardLayoutController.prototype, "create", null);
81
+ __decorate([
82
+ (0, swagger_1.ApiBearerAuth)("jwt"),
83
+ (0, common_1.Post)('/bulk'),
84
+ (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
85
+ openapi.ApiResponse({ status: 201, type: [require("../entities/dashboard-layout.entity").DashboardLayout] }),
86
+ __param(0, (0, common_1.Body)()),
87
+ __param(1, (0, common_1.UploadedFiles)()),
88
+ __metadata("design:type", Function),
89
+ __metadata("design:paramtypes", [Array, Array]),
90
+ __metadata("design:returntype", void 0)
91
+ ], DashboardLayoutController.prototype, "insertMany", null);
92
+ __decorate([
93
+ (0, swagger_1.ApiBearerAuth)("jwt"),
94
+ (0, common_1.Post)('/upsert-user-dashboard-layout'),
95
+ (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
96
+ openapi.ApiResponse({ status: 201, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
97
+ __param(0, (0, common_1.Body)()),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [create_dashboard_layout_dto_1.CreateDashboardLayoutDto]),
100
+ __metadata("design:returntype", void 0)
101
+ ], DashboardLayoutController.prototype, "upsertUserDashboardLayout", null);
102
+ __decorate([
103
+ (0, swagger_1.ApiBearerAuth)("jwt"),
104
+ (0, common_1.Put)(':id'),
105
+ (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
106
+ openapi.ApiResponse({ status: 200, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
107
+ __param(0, (0, common_1.Param)('id')),
108
+ __param(1, (0, common_1.Body)()),
109
+ __param(2, (0, common_1.UploadedFiles)()),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", [Number, update_dashboard_layout_dto_1.UpdateDashboardLayoutDto, Array]),
112
+ __metadata("design:returntype", void 0)
113
+ ], DashboardLayoutController.prototype, "update", null);
114
+ __decorate([
115
+ (0, swagger_1.ApiBearerAuth)("jwt"),
116
+ (0, common_1.Patch)(':id'),
117
+ (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
118
+ openapi.ApiResponse({ status: 200, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
119
+ __param(0, (0, common_1.Param)('id')),
120
+ __param(1, (0, common_1.Body)()),
121
+ __param(2, (0, common_1.UploadedFiles)()),
122
+ __metadata("design:type", Function),
123
+ __metadata("design:paramtypes", [Number, update_dashboard_layout_dto_1.UpdateDashboardLayoutDto, Array]),
124
+ __metadata("design:returntype", void 0)
125
+ ], DashboardLayoutController.prototype, "partialUpdate", null);
126
+ __decorate([
127
+ (0, swagger_1.ApiBearerAuth)("jwt"),
128
+ (0, common_1.Post)('/bulk-recover'),
129
+ openapi.ApiResponse({ status: 201 }),
130
+ __param(0, (0, common_1.Body)()),
131
+ __metadata("design:type", Function),
132
+ __metadata("design:paramtypes", [Array]),
133
+ __metadata("design:returntype", Promise)
134
+ ], DashboardLayoutController.prototype, "recoverMany", null);
135
+ __decorate([
136
+ (0, swagger_1.ApiBearerAuth)("jwt"),
137
+ (0, common_1.Get)('/user-dashboard-layout/:dashboardId'),
138
+ openapi.ApiResponse({ status: 200, type: Object }),
139
+ __param(0, (0, common_1.Param)('dashboardId')),
140
+ __metadata("design:type", Function),
141
+ __metadata("design:paramtypes", [Number]),
142
+ __metadata("design:returntype", Promise)
143
+ ], DashboardLayoutController.prototype, "getUserDashboardLayoutByDashboardId", null);
144
+ __decorate([
145
+ (0, swagger_1.ApiBearerAuth)("jwt"),
146
+ (0, common_1.Get)('/recover/:id'),
147
+ openapi.ApiResponse({ status: 200 }),
148
+ __param(0, (0, common_1.Param)('id')),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [Number]),
151
+ __metadata("design:returntype", Promise)
152
+ ], DashboardLayoutController.prototype, "recover", null);
153
+ __decorate([
154
+ (0, swagger_1.ApiBearerAuth)("jwt"),
155
+ (0, swagger_1.ApiQuery)({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted }),
156
+ (0, swagger_1.ApiQuery)({ name: 'limit', required: false, type: Number }),
157
+ (0, swagger_1.ApiQuery)({ name: 'offset', required: false, type: Number }),
158
+ (0, swagger_1.ApiQuery)({ name: 'fields', required: false, type: Array }),
159
+ (0, swagger_1.ApiQuery)({ name: 'sort', required: false, type: Array }),
160
+ (0, swagger_1.ApiQuery)({ name: 'groupBy', required: false, type: Array }),
161
+ (0, swagger_1.ApiQuery)({ name: 'populate', required: false, type: Array }),
162
+ (0, swagger_1.ApiQuery)({ name: 'populateMedia', required: false, type: Array }),
163
+ (0, swagger_1.ApiQuery)({ name: 'filters', required: false, type: Array }),
164
+ (0, common_1.Get)(),
165
+ openapi.ApiResponse({ status: 200, type: Object }),
166
+ __param(0, (0, common_1.Query)()),
167
+ __metadata("design:type", Function),
168
+ __metadata("design:paramtypes", [Object]),
169
+ __metadata("design:returntype", Promise)
170
+ ], DashboardLayoutController.prototype, "findMany", null);
171
+ __decorate([
172
+ (0, swagger_1.ApiBearerAuth)("jwt"),
173
+ (0, common_1.Get)(':id'),
174
+ openapi.ApiResponse({ status: 200, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
175
+ __param(0, (0, common_1.Param)('id')),
176
+ __param(1, (0, common_1.Query)()),
177
+ __metadata("design:type", Function),
178
+ __metadata("design:paramtypes", [String, Object]),
179
+ __metadata("design:returntype", Promise)
180
+ ], DashboardLayoutController.prototype, "findOne", null);
181
+ __decorate([
182
+ (0, swagger_1.ApiBearerAuth)("jwt"),
183
+ (0, common_1.Delete)('/bulk'),
184
+ openapi.ApiResponse({ status: 200, type: Object }),
185
+ __param(0, (0, common_1.Body)()),
186
+ __metadata("design:type", Function),
187
+ __metadata("design:paramtypes", [Array]),
188
+ __metadata("design:returntype", Promise)
189
+ ], DashboardLayoutController.prototype, "deleteMany", null);
190
+ __decorate([
191
+ (0, swagger_1.ApiBearerAuth)("jwt"),
192
+ (0, common_1.Delete)(':id'),
193
+ openapi.ApiResponse({ status: 200, type: require("../entities/dashboard-layout.entity").DashboardLayout }),
194
+ __param(0, (0, common_1.Param)('id')),
195
+ __metadata("design:type", Function),
196
+ __metadata("design:paramtypes", [Number]),
197
+ __metadata("design:returntype", Promise)
198
+ ], DashboardLayoutController.prototype, "delete", null);
199
+ exports.DashboardLayoutController = DashboardLayoutController = __decorate([
200
+ (0, swagger_1.ApiTags)('Solid Core'),
201
+ (0, common_1.Controller)('dashboard-layout'),
202
+ __metadata("design:paramtypes", [dashboard_layout_service_1.DashboardLayoutService])
203
+ ], DashboardLayoutController);
204
+ //# sourceMappingURL=dashboard-layout.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-layout.controller.js","sourceRoot":"","sources":["../../src/controllers/dashboard-layout.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { CreateDashboardLayoutDto } from 'src/dtos/create-dashboard-layout.dto';\nimport { UpdateDashboardLayoutDto } from 'src/dtos/update-dashboard-layout.dto';\nimport { DashboardLayoutService } from 'src/services/dashboard-layout.service';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('dashboard-layout')\nexport class DashboardLayoutController {\n constructor(private readonly service: DashboardLayoutService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateDashboardLayoutDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateDashboardLayoutDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/upsert-user-dashboard-layout')\n @UseInterceptors(AnyFilesInterceptor())\n upsertUserDashboardLayout(@Body() createDtos: CreateDashboardLayoutDto) {\n return this.service.upsertUserDashboardLayout(createDtos);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateDashboardLayoutDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateDashboardLayoutDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk-recover')\n async recoverMany(@Body() ids: number[]) {\n return this.service.recoverMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/user-dashboard-layout/:dashboardId')\n async getUserDashboardLayoutByDashboardId(@Param('dashboardId') dashboardId: number) {\n return this.service.getUserDashboardLayoutByDashboardId(dashboardId);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/recover/:id')\n async recover(@Param('id') id: number) {\n return this.service.recover(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n\n}\n"]}
@@ -0,0 +1,8 @@
1
+ export declare class CreateDashboardLayoutDto {
2
+ layout: string;
3
+ dashboardId: number;
4
+ dashboardUserKey: string;
5
+ userId: number;
6
+ userUserKey: string;
7
+ }
8
+ //# sourceMappingURL=create-dashboard-layout.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dashboard-layout.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-dashboard-layout.dto.ts"],"names":[],"mappings":"AAKA,qBAAa,wBAAwB;IAIjC,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC;IAKpB,gBAAgB,EAAE,MAAM,CAAC;IAKzB,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,53 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateDashboardLayoutDto = void 0;
13
+ const openapi = require("@nestjs/swagger");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const class_validator_1 = require("class-validator");
16
+ const class_validator_2 = require("class-validator");
17
+ class CreateDashboardLayoutDto {
18
+ static _OPENAPI_METADATA_FACTORY() {
19
+ return { layout: { required: true, type: () => String }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, userId: { required: true, type: () => Number }, userUserKey: { required: true, type: () => String } };
20
+ }
21
+ }
22
+ exports.CreateDashboardLayoutDto = CreateDashboardLayoutDto;
23
+ __decorate([
24
+ (0, class_validator_2.IsNotEmpty)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, swagger_1.ApiProperty)(),
27
+ __metadata("design:type", String)
28
+ ], CreateDashboardLayoutDto.prototype, "layout", void 0);
29
+ __decorate([
30
+ (0, class_validator_2.IsOptional)(),
31
+ (0, class_validator_2.IsInt)(),
32
+ (0, swagger_1.ApiProperty)({ description: "Related Dashboard Model" }),
33
+ __metadata("design:type", Number)
34
+ ], CreateDashboardLayoutDto.prototype, "dashboardId", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_2.IsOptional)(),
38
+ (0, swagger_1.ApiProperty)({ description: "Related Dashboard Model" }),
39
+ __metadata("design:type", String)
40
+ ], CreateDashboardLayoutDto.prototype, "dashboardUserKey", void 0);
41
+ __decorate([
42
+ (0, class_validator_2.IsOptional)(),
43
+ (0, class_validator_2.IsInt)(),
44
+ (0, swagger_1.ApiProperty)(),
45
+ __metadata("design:type", Number)
46
+ ], CreateDashboardLayoutDto.prototype, "userId", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_2.IsOptional)(),
50
+ (0, swagger_1.ApiProperty)(),
51
+ __metadata("design:type", String)
52
+ ], CreateDashboardLayoutDto.prototype, "userUserKey", void 0);
53
+ //# sourceMappingURL=create-dashboard-layout.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dashboard-layout.dto.js","sourceRoot":"","sources":["../../src/dtos/create-dashboard-layout.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAAgE;AAGhE,MAAa,wBAAwB;;;;CAyBpC;AAzBD,4DAyBC;AArBG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACC;AAKf;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;6DACpC;AAKpB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;kEAC/B;AAKzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;wDACC;AAKf;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;6DACM","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsOptional, IsInt } from 'class-validator';\n\n\nexport class CreateDashboardLayoutDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n layout: string;\n\n @IsOptional()\n @IsInt()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardId: number;\n\n @IsString()\n @IsOptional()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardUserKey: string;\n\n @IsOptional()\n @IsInt()\n @ApiProperty()\n userId: number;\n\n @IsString()\n @IsOptional()\n @ApiProperty()\n userUserKey: string;\n}"]}
@@ -14,5 +14,6 @@ export declare class CreateDashboardVariableDto {
14
14
  dashboardUserKey: string;
15
15
  defaultValue: string;
16
16
  defaultOperator: string;
17
+ externalId: string;
17
18
  }
18
19
  //# sourceMappingURL=create-dashboard-variable.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-dashboard-variable.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-dashboard-variable.dto.ts"],"names":[],"mappings":"AAIA,oBAAY,0BAA0B;IAClC,GAAG,QAAQ;IACX,QAAQ,aAAa;CACxB;AAGD,qBAAa,0BAA0B;IAInC,YAAY,EAAE,MAAM,CAAC;IAIrB,YAAY,EAAE,MAAM,CAAC;IAIrB,qBAAqB,EAAE,GAAG,CAAC;IAI3B,0BAA0B,EAAE,MAAM,CAAC;IAInC,mBAAmB,EAAE,MAAM,CAAC;IAI5B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,aAAa,EAAE,OAAO,CAAQ;IAI9B,WAAW,EAAE,MAAM,CAAC;IAIpB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,YAAY,EAAE,MAAM,CAAC;IAIrB,eAAe,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"create-dashboard-variable.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/create-dashboard-variable.dto.ts"],"names":[],"mappings":"AAIA,oBAAY,0BAA0B;IAClC,GAAG,QAAQ;IACX,QAAQ,aAAa;CACxB;AAGD,qBAAa,0BAA0B;IAInC,YAAY,EAAE,MAAM,CAAC;IAIrB,YAAY,EAAE,MAAM,CAAC;IAIrB,qBAAqB,EAAE,GAAG,CAAC;IAI3B,0BAA0B,EAAE,MAAM,CAAC;IAInC,mBAAmB,EAAE,MAAM,CAAC;IAI5B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,aAAa,EAAE,OAAO,CAAQ;IAI9B,WAAW,EAAE,MAAM,CAAC;IAIpB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,YAAY,EAAE,MAAM,CAAC;IAIrB,eAAe,EAAE,MAAM,CAAC;IAIxB,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -24,7 +24,7 @@ class CreateDashboardVariableDto {
24
24
  this.isMultiSelect = true;
25
25
  }
26
26
  static _OPENAPI_METADATA_FACTORY() {
27
- return { variableName: { required: true, type: () => String }, variableType: { required: true, type: () => String }, selectionStaticValues: { required: true, type: () => Object }, selectionDynamicSourceType: { required: true, type: () => String }, selectionDynamicSQL: { required: true, type: () => String }, selectionDynamicProviderName: { required: true, type: () => String }, isMultiSelect: { required: true, type: () => Boolean, default: true }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, defaultValue: { required: true, type: () => String }, defaultOperator: { required: true, type: () => String } };
27
+ return { variableName: { required: true, type: () => String }, variableType: { required: true, type: () => String }, selectionStaticValues: { required: true, type: () => Object }, selectionDynamicSourceType: { required: true, type: () => String }, selectionDynamicSQL: { required: true, type: () => String }, selectionDynamicProviderName: { required: true, type: () => String }, isMultiSelect: { required: true, type: () => Boolean, default: true }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, defaultValue: { required: true, type: () => String }, defaultOperator: { required: true, type: () => String }, externalId: { required: true, type: () => String } };
28
28
  }
29
29
  }
30
30
  exports.CreateDashboardVariableDto = CreateDashboardVariableDto;
@@ -94,4 +94,10 @@ __decorate([
94
94
  (0, swagger_1.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." }),
95
95
  __metadata("design:type", String)
96
96
  ], CreateDashboardVariableDto.prototype, "defaultOperator", void 0);
97
+ __decorate([
98
+ (0, class_validator_1.IsString)(),
99
+ (0, class_validator_2.IsOptional)(),
100
+ (0, swagger_1.ApiProperty)(),
101
+ __metadata("design:type", String)
102
+ ], CreateDashboardVariableDto.prototype, "externalId", void 0);
97
103
  //# sourceMappingURL=create-dashboard-variable.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-dashboard-variable.dto.js","sourceRoot":"","sources":["../../src/dtos/create-dashboard-variable.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAAmF;AAEnF,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IAClC,yCAAW,CAAA;IACX,mDAAqB,CAAA;AACzB,CAAC,EAHW,0BAA0B,0CAA1B,0BAA0B,QAGrC;AAGD,MAAa,0BAA0B;IAAvC;QA4BI,kBAAa,GAAY,IAAI,CAAC;KAiBjC;;kcAjB4B,IAAI;;CAiBhC;AA7CD,gEA6CC;AAzCG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;gEACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;gEACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;;yEACa;AAI3B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;8EACqB;AAInC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,sJAAsJ,EAAE,CAAC;;uEACzJ;AAI5B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,oRAAoR,EAAE,CAAC;;gFAC9Q;AAIrC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,4KAA4K,EAAE,CAAC;;iEAC7K;AAI9B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;+DACpC;AAIpB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;oEAC/B;AAIzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,wJAAwJ,EAAE,CAAC;;gEAClK;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,2JAA2J,EAAE,CAAC;;mEAClK","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsJSON, IsOptional, IsBoolean, IsInt } from 'class-validator';\n\nexport enum SelectionDynamicSourceType {\n SQL = \"sql\",\n PROVIDER = \"provider\",\n}\n\n\nexport class CreateDashboardVariableDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n variableName: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n variableType: string;\n @IsOptional()\n @IsJSON()\n @ApiProperty()\n selectionStaticValues: any;\n @IsOptional()\n @IsString()\n @ApiProperty()\n selectionDynamicSourceType: string;\n @IsOptional()\n @IsString()\n @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.\" })\n selectionDynamicSQL: string;\n @IsOptional()\n @IsString()\n @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.\" })\n selectionDynamicProviderName: string;\n @IsOptional()\n @IsBoolean()\n @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.\" })\n isMultiSelect: boolean = true;\n @IsOptional()\n @IsInt()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardId: number;\n @IsString()\n @IsOptional()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardUserKey: string;\n @IsOptional()\n @IsString()\n @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.\" })\n defaultValue: string;\n @IsOptional()\n @IsString()\n @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.\" })\n defaultOperator: string;\n}"]}
1
+ {"version":3,"file":"create-dashboard-variable.dto.js","sourceRoot":"","sources":["../../src/dtos/create-dashboard-variable.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAC3C,qDAAmF;AAEnF,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IAClC,yCAAW,CAAA;IACX,mDAAqB,CAAA;AACzB,CAAC,EAHW,0BAA0B,0CAA1B,0BAA0B,QAGrC;AAGD,MAAa,0BAA0B;IAAvC;QA4BI,kBAAa,GAAY,IAAI,CAAC;KAqBjC;;kcArB4B,IAAI;;CAqBhC;AAjDD,gEAiDC;AA7CG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;gEACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;gEACO;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;IACR,IAAA,qBAAW,GAAE;;yEACa;AAI3B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;8EACqB;AAInC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,sJAAsJ,EAAE,CAAC;;uEACzJ;AAI5B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,oRAAoR,EAAE,CAAC;;gFAC9Q;AAIrC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,4KAA4K,EAAE,CAAC;;iEAC7K;AAI9B;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;+DACpC;AAIpB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;oEAC/B;AAIzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,wJAAwJ,EAAE,CAAC;;gEAClK;AAIrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,2JAA2J,EAAE,CAAC;;mEAClK;AAIxB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;8DACK","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\nimport { IsNotEmpty, IsJSON, IsOptional, IsBoolean, IsInt } from 'class-validator';\n\nexport enum SelectionDynamicSourceType {\n SQL = \"sql\",\n PROVIDER = \"provider\",\n}\n\n\nexport class CreateDashboardVariableDto {\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n variableName: string;\n @IsNotEmpty()\n @IsString()\n @ApiProperty()\n variableType: string;\n @IsOptional()\n @IsJSON()\n @ApiProperty()\n selectionStaticValues: any;\n @IsOptional()\n @IsString()\n @ApiProperty()\n selectionDynamicSourceType: string;\n @IsOptional()\n @IsString()\n @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.\" })\n selectionDynamicSQL: string;\n @IsOptional()\n @IsString()\n @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.\" })\n selectionDynamicProviderName: string;\n @IsOptional()\n @IsBoolean()\n @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.\" })\n isMultiSelect: boolean = true;\n @IsOptional()\n @IsInt()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardId: number;\n @IsString()\n @IsOptional()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardUserKey: string;\n @IsOptional()\n @IsString()\n @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.\" })\n defaultValue: string;\n @IsOptional()\n @IsString()\n @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.\" })\n defaultOperator: string;\n @IsString()\n @IsOptional()\n @ApiProperty()\n externalId: string;\n}"]}
@@ -0,0 +1,8 @@
1
+ export declare class UpdateDashboardLayoutDto {
2
+ layout: string;
3
+ dashboardId: number;
4
+ dashboardUserKey: string;
5
+ userId: number;
6
+ userUserKey: string;
7
+ }
8
+ //# sourceMappingURL=update-dashboard-layout.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-dashboard-layout.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-dashboard-layout.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,wBAAwB;IAKjC,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC;IAKpB,gBAAgB,EAAE,MAAM,CAAC;IAKzB,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,53 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateDashboardLayoutDto = void 0;
13
+ const openapi = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ class UpdateDashboardLayoutDto {
17
+ static _OPENAPI_METADATA_FACTORY() {
18
+ return { layout: { required: true, type: () => String }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, userId: { required: true, type: () => Number }, userUserKey: { required: true, type: () => String } };
19
+ }
20
+ }
21
+ exports.UpdateDashboardLayoutDto = UpdateDashboardLayoutDto;
22
+ __decorate([
23
+ (0, class_validator_1.IsNotEmpty)(),
24
+ (0, class_validator_1.IsOptional)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, swagger_1.ApiProperty)(),
27
+ __metadata("design:type", String)
28
+ ], UpdateDashboardLayoutDto.prototype, "layout", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsOptional)(),
31
+ (0, class_validator_1.IsInt)(),
32
+ (0, swagger_1.ApiProperty)({ description: "Related Dashboard Model" }),
33
+ __metadata("design:type", Number)
34
+ ], UpdateDashboardLayoutDto.prototype, "dashboardId", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, swagger_1.ApiProperty)({ description: "Related Dashboard Model" }),
39
+ __metadata("design:type", String)
40
+ ], UpdateDashboardLayoutDto.prototype, "dashboardUserKey", void 0);
41
+ __decorate([
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_validator_1.IsInt)(),
44
+ (0, swagger_1.ApiProperty)(),
45
+ __metadata("design:type", Number)
46
+ ], UpdateDashboardLayoutDto.prototype, "userId", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_1.IsOptional)(),
50
+ (0, swagger_1.ApiProperty)(),
51
+ __metadata("design:type", String)
52
+ ], UpdateDashboardLayoutDto.prototype, "userUserKey", void 0);
53
+ //# sourceMappingURL=update-dashboard-layout.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-dashboard-layout.dto.js","sourceRoot":"","sources":["../../src/dtos/update-dashboard-layout.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAA0E;AAC1E,6CAA8C;AAE9C,MAAa,wBAAwB;;;;CA0BpC;AA1BD,4DA0BC;AArBG;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAW,GAAE;;wDACC;AAKf;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;6DACpC;AAKpB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;kEAC/B;AAKzB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,GAAE;;wDACC;AAKf;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;6DACM","sourcesContent":["import { IsInt, IsOptional, IsString, IsNotEmpty } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UpdateDashboardLayoutDto {\n @IsNotEmpty()\n @IsOptional()\n @IsString()\n @ApiProperty()\n layout: string;\n\n @IsOptional()\n @IsInt()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardId: number;\n\n @IsString()\n @IsOptional()\n @ApiProperty({ description: \"Related Dashboard Model\" })\n dashboardUserKey: string;\n\n @IsOptional()\n @IsInt()\n @ApiProperty()\n userId: number;\n\n @IsString()\n @IsOptional()\n @ApiProperty()\n userUserKey: string;\n}"]}
@@ -11,5 +11,6 @@ export declare class UpdateDashboardVariableDto {
11
11
  dashboardUserKey: string;
12
12
  defaultValue: string;
13
13
  defaultOperator: string;
14
+ externalId: string;
14
15
  }
15
16
  //# sourceMappingURL=update-dashboard-variable.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-dashboard-variable.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-dashboard-variable.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,0BAA0B;IAGnC,EAAE,EAAE,MAAM,CAAC;IAKX,YAAY,EAAE,MAAM,CAAC;IAKrB,YAAY,EAAE,MAAM,CAAC;IAIrB,qBAAqB,EAAE,GAAG,CAAC;IAI3B,0BAA0B,EAAE,MAAM,CAAC;IAInC,mBAAmB,EAAE,MAAM,CAAC;IAI5B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,aAAa,EAAE,OAAO,CAAC;IAIvB,WAAW,EAAE,MAAM,CAAC;IAIpB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,YAAY,EAAE,MAAM,CAAC;IAIrB,eAAe,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"update-dashboard-variable.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-dashboard-variable.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,0BAA0B;IAGnC,EAAE,EAAE,MAAM,CAAC;IAKX,YAAY,EAAE,MAAM,CAAC;IAKrB,YAAY,EAAE,MAAM,CAAC;IAIrB,qBAAqB,EAAE,GAAG,CAAC;IAI3B,0BAA0B,EAAE,MAAM,CAAC;IAInC,mBAAmB,EAAE,MAAM,CAAC;IAI5B,4BAA4B,EAAE,MAAM,CAAC;IAIrC,aAAa,EAAE,OAAO,CAAC;IAIvB,WAAW,EAAE,MAAM,CAAC;IAIpB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,YAAY,EAAE,MAAM,CAAC;IAIrB,eAAe,EAAE,MAAM,CAAC;IAIxB,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -15,7 +15,7 @@ const class_validator_1 = require("class-validator");
15
15
  const swagger_1 = require("@nestjs/swagger");
16
16
  class UpdateDashboardVariableDto {
17
17
  static _OPENAPI_METADATA_FACTORY() {
18
- return { id: { required: true, type: () => Number }, variableName: { required: true, type: () => String }, variableType: { required: true, type: () => String }, selectionStaticValues: { required: true, type: () => Object }, selectionDynamicSourceType: { required: true, type: () => String }, selectionDynamicSQL: { required: true, type: () => String }, selectionDynamicProviderName: { required: true, type: () => String }, isMultiSelect: { required: true, type: () => Boolean }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, defaultValue: { required: true, type: () => String }, defaultOperator: { required: true, type: () => String } };
18
+ return { id: { required: true, type: () => Number }, variableName: { required: true, type: () => String }, variableType: { required: true, type: () => String }, selectionStaticValues: { required: true, type: () => Object }, selectionDynamicSourceType: { required: true, type: () => String }, selectionDynamicSQL: { required: true, type: () => String }, selectionDynamicProviderName: { required: true, type: () => String }, isMultiSelect: { required: true, type: () => Boolean }, dashboardId: { required: true, type: () => Number }, dashboardUserKey: { required: true, type: () => String }, defaultValue: { required: true, type: () => String }, defaultOperator: { required: true, type: () => String }, externalId: { required: true, type: () => String } };
19
19
  }
20
20
  }
21
21
  exports.UpdateDashboardVariableDto = UpdateDashboardVariableDto;
@@ -92,4 +92,10 @@ __decorate([
92
92
  (0, swagger_1.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." }),
93
93
  __metadata("design:type", String)
94
94
  ], UpdateDashboardVariableDto.prototype, "defaultOperator", void 0);
95
+ __decorate([
96
+ (0, class_validator_1.IsString)(),
97
+ (0, class_validator_1.IsOptional)(),
98
+ (0, swagger_1.ApiProperty)(),
99
+ __metadata("design:type", String)
100
+ ], UpdateDashboardVariableDto.prototype, "externalId", void 0);
95
101
  //# sourceMappingURL=update-dashboard-variable.dto.js.map