@solidxai/core 0.1.6-beta.0 → 0.1.6-beta.10

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 (275) hide show
  1. package/dist/controllers/dashboard-layout.controller.d.ts +47 -0
  2. package/dist/controllers/dashboard-layout.controller.d.ts.map +1 -0
  3. package/dist/controllers/dashboard-layout.controller.js +204 -0
  4. package/dist/controllers/dashboard-layout.controller.js.map +1 -0
  5. package/dist/controllers/scheduled-job.controller.d.ts +1 -0
  6. package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
  7. package/dist/controllers/scheduled-job.controller.js +12 -0
  8. package/dist/controllers/scheduled-job.controller.js.map +1 -1
  9. package/dist/dtos/create-dashboard-layout.dto.d.ts +8 -0
  10. package/dist/dtos/create-dashboard-layout.dto.d.ts.map +1 -0
  11. package/dist/dtos/create-dashboard-layout.dto.js +53 -0
  12. package/dist/dtos/create-dashboard-layout.dto.js.map +1 -0
  13. package/dist/dtos/create-dashboard-variable.dto.d.ts +1 -0
  14. package/dist/dtos/create-dashboard-variable.dto.d.ts.map +1 -1
  15. package/dist/dtos/create-dashboard-variable.dto.js +7 -1
  16. package/dist/dtos/create-dashboard-variable.dto.js.map +1 -1
  17. package/dist/dtos/update-dashboard-layout.dto.d.ts +8 -0
  18. package/dist/dtos/update-dashboard-layout.dto.d.ts.map +1 -0
  19. package/dist/dtos/update-dashboard-layout.dto.js +53 -0
  20. package/dist/dtos/update-dashboard-layout.dto.js.map +1 -0
  21. package/dist/dtos/update-dashboard-variable.dto.d.ts +1 -0
  22. package/dist/dtos/update-dashboard-variable.dto.d.ts.map +1 -1
  23. package/dist/dtos/update-dashboard-variable.dto.js +7 -1
  24. package/dist/dtos/update-dashboard-variable.dto.js.map +1 -1
  25. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  26. package/dist/entities/action-metadata.entity.js.map +1 -1
  27. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  28. package/dist/entities/ai-interaction.entity.js +5 -4
  29. package/dist/entities/ai-interaction.entity.js.map +1 -1
  30. package/dist/entities/chatter-message-details.entity.d.ts +1 -0
  31. package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
  32. package/dist/entities/chatter-message-details.entity.js +9 -4
  33. package/dist/entities/chatter-message-details.entity.js.map +1 -1
  34. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  35. package/dist/entities/chatter-message.entity.js +4 -3
  36. package/dist/entities/chatter-message.entity.js.map +1 -1
  37. package/dist/entities/common.entity.js +1 -1
  38. package/dist/entities/common.entity.js.map +1 -1
  39. package/dist/entities/dashboard-layout.entity.d.ts +9 -0
  40. package/dist/entities/dashboard-layout.entity.d.ts.map +1 -0
  41. package/dist/entities/dashboard-layout.entity.js +41 -0
  42. package/dist/entities/dashboard-layout.entity.js.map +1 -0
  43. package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -1
  44. package/dist/entities/dashboard-question-sql-dataset-config.entity.js +5 -4
  45. package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
  46. package/dist/entities/dashboard-question.entity.d.ts.map +1 -1
  47. package/dist/entities/dashboard-question.entity.js +5 -4
  48. package/dist/entities/dashboard-question.entity.js.map +1 -1
  49. package/dist/entities/dashboard-variable.entity.d.ts +1 -0
  50. package/dist/entities/dashboard-variable.entity.d.ts.map +1 -1
  51. package/dist/entities/dashboard-variable.entity.js +10 -4
  52. package/dist/entities/dashboard-variable.entity.js.map +1 -1
  53. package/dist/entities/dashboard.entity.d.ts +2 -0
  54. package/dist/entities/dashboard.entity.d.ts.map +1 -1
  55. package/dist/entities/dashboard.entity.js +9 -3
  56. package/dist/entities/dashboard.entity.js.map +1 -1
  57. package/dist/entities/email-attachment.entity.d.ts.map +1 -1
  58. package/dist/entities/email-attachment.entity.js +2 -1
  59. package/dist/entities/email-attachment.entity.js.map +1 -1
  60. package/dist/entities/email-template.entity.js +1 -1
  61. package/dist/entities/email-template.entity.js.map +1 -1
  62. package/dist/entities/export-transaction.entity.d.ts.map +1 -1
  63. package/dist/entities/export-transaction.entity.js +2 -1
  64. package/dist/entities/export-transaction.entity.js.map +1 -1
  65. package/dist/entities/field-metadata.entity.js +2 -2
  66. package/dist/entities/field-metadata.entity.js.map +1 -1
  67. package/dist/entities/import-transaction-error-log.entity.d.ts.map +1 -1
  68. package/dist/entities/import-transaction-error-log.entity.js +3 -2
  69. package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
  70. package/dist/entities/import-transaction.entity.d.ts.map +1 -1
  71. package/dist/entities/import-transaction.entity.js +2 -1
  72. package/dist/entities/import-transaction.entity.js.map +1 -1
  73. package/dist/entities/legacy-common.entity.d.ts.map +1 -1
  74. package/dist/entities/legacy-common.entity.js +1 -1
  75. package/dist/entities/legacy-common.entity.js.map +1 -1
  76. package/dist/entities/mq-message.entity.d.ts.map +1 -1
  77. package/dist/entities/mq-message.entity.js +4 -3
  78. package/dist/entities/mq-message.entity.js.map +1 -1
  79. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  80. package/dist/entities/saved-filters.entity.js +3 -2
  81. package/dist/entities/saved-filters.entity.js.map +1 -1
  82. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  83. package/dist/entities/security-rule.entity.js +2 -1
  84. package/dist/entities/security-rule.entity.js.map +1 -1
  85. package/dist/entities/sms-template.entity.js +1 -1
  86. package/dist/entities/sms-template.entity.js.map +1 -1
  87. package/dist/entities/user-view-metadata.entity.d.ts.map +1 -1
  88. package/dist/entities/user-view-metadata.entity.js +2 -1
  89. package/dist/entities/user-view-metadata.entity.js.map +1 -1
  90. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  91. package/dist/entities/view-metadata.entity.js.map +1 -1
  92. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  93. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  94. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +8 -9
  95. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  96. package/dist/helpers/solid-registry.d.ts +3 -1
  97. package/dist/helpers/solid-registry.d.ts.map +1 -1
  98. package/dist/helpers/solid-registry.js.map +1 -1
  99. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  100. package/dist/helpers/typeorm-db-helper.js +21 -0
  101. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  102. package/dist/index.d.ts +1 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +1 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/interfaces.d.ts +4 -1
  107. package/dist/interfaces.d.ts.map +1 -1
  108. package/dist/interfaces.js.map +1 -1
  109. package/dist/repository/dashboard-layout.repository.d.ts +12 -0
  110. package/dist/repository/dashboard-layout.repository.d.ts.map +1 -0
  111. package/dist/repository/dashboard-layout.repository.js +34 -0
  112. package/dist/repository/dashboard-layout.repository.js.map +1 -0
  113. package/dist/seeders/module-metadata-seeder.service.js +4 -4
  114. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  115. package/dist/seeders/seed-data/solid-core-metadata.json +445 -35
  116. package/dist/services/authentication.service.d.ts.map +1 -1
  117. package/dist/services/authentication.service.js +45 -21
  118. package/dist/services/authentication.service.js.map +1 -1
  119. package/dist/services/chatter-message.service.d.ts.map +1 -1
  120. package/dist/services/chatter-message.service.js +26 -0
  121. package/dist/services/chatter-message.service.js.map +1 -1
  122. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
  123. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +6 -5
  124. package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
  125. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
  126. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +9 -10
  127. package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
  128. package/dist/services/dashboard-layout.service.d.ts +20 -0
  129. package/dist/services/dashboard-layout.service.d.ts.map +1 -0
  130. package/dist/services/dashboard-layout.service.js +120 -0
  131. package/dist/services/dashboard-layout.service.js.map +1 -0
  132. package/dist/services/dashboard-question.service.d.ts +4 -0
  133. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  134. package/dist/services/dashboard-question.service.js +22 -8
  135. package/dist/services/dashboard-question.service.js.map +1 -1
  136. package/dist/services/dashboard.service.d.ts +2 -0
  137. package/dist/services/dashboard.service.d.ts.map +1 -1
  138. package/dist/services/dashboard.service.js +4 -0
  139. package/dist/services/dashboard.service.js.map +1 -1
  140. package/dist/services/model-metadata.service.d.ts +3 -1
  141. package/dist/services/model-metadata.service.d.ts.map +1 -1
  142. package/dist/services/model-metadata.service.js +122 -8
  143. package/dist/services/model-metadata.service.js.map +1 -1
  144. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -4
  145. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -1
  146. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +2 -1
  147. package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -1
  148. package/dist/services/question-data-providers/interfaces.d.ts +1 -0
  149. package/dist/services/question-data-providers/interfaces.d.ts.map +1 -0
  150. package/dist/services/question-data-providers/interfaces.js +1 -0
  151. package/dist/services/question-data-providers/interfaces.js.map +1 -0
  152. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -5
  153. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -1
  154. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +2 -1
  155. package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -1
  156. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -5
  157. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -1
  158. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +2 -1
  159. package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -1
  160. package/dist/services/queues/database-subscriber.service.d.ts +4 -2
  161. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  162. package/dist/services/queues/database-subscriber.service.js +15 -2
  163. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  164. package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
  165. package/dist/services/queues/publisher-factory.service.js +4 -6
  166. package/dist/services/queues/publisher-factory.service.js.map +1 -1
  167. package/dist/services/queues/rabbitmq-subscriber.service.d.ts +8 -3
  168. package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
  169. package/dist/services/queues/rabbitmq-subscriber.service.js +72 -5
  170. package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
  171. package/dist/services/scheduled-job.service.d.ts +6 -1
  172. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  173. package/dist/services/scheduled-job.service.js +26 -2
  174. package/dist/services/scheduled-job.service.js.map +1 -1
  175. package/dist/services/scheduled-jobs/scheduler.interface.d.ts +2 -0
  176. package/dist/services/scheduled-jobs/scheduler.interface.d.ts.map +1 -1
  177. package/dist/services/scheduled-jobs/scheduler.interface.js.map +1 -1
  178. package/dist/services/scheduled-jobs/scheduler.service.d.ts +6 -2
  179. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  180. package/dist/services/scheduled-jobs/scheduler.service.js +75 -17
  181. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  182. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts.map +1 -1
  183. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js +4 -1
  184. package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.js.map +1 -1
  185. package/dist/services/solid-ts-morph.service.d.ts +9 -0
  186. package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
  187. package/dist/services/solid-ts-morph.service.js +76 -0
  188. package/dist/services/solid-ts-morph.service.js.map +1 -1
  189. package/dist/solid-core.module.d.ts.map +1 -1
  190. package/dist/solid-core.module.js +8 -0
  191. package/dist/solid-core.module.js.map +1 -1
  192. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
  193. package/dist/subscribers/computed-entity-field.subscriber.js +9 -1
  194. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
  195. package/dist/transformers/typeorm/local-date-time-transformer.d.ts +4 -4
  196. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
  197. package/dist/transformers/typeorm/local-date-time-transformer.js +25 -28
  198. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
  199. package/dist-tests/api/authenticate.spec.js +119 -0
  200. package/dist-tests/api/authenticate.spec.js.map +1 -0
  201. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  202. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  203. package/dist-tests/api/ping.spec.js +21 -0
  204. package/dist-tests/api/ping.spec.js.map +1 -0
  205. package/dist-tests/helpers/auth.js +41 -0
  206. package/dist-tests/helpers/auth.js.map +1 -0
  207. package/dist-tests/helpers/env.js +11 -0
  208. package/dist-tests/helpers/env.js.map +1 -0
  209. package/package.json +1 -1
  210. package/sql/default/mariadb/proc_CleanupModelMetadata.sql +153 -0
  211. package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +56 -0
  212. package/sql/default/mysql/proc_CleanupModelMetadata.sql +153 -0
  213. package/sql/default/mysql/proc_CleanupModuleMetadata.sql +56 -0
  214. package/src/controllers/dashboard-layout.controller.ts +106 -0
  215. package/src/controllers/scheduled-job.controller.ts +6 -0
  216. package/src/dtos/create-dashboard-layout.dto.ts +31 -0
  217. package/src/dtos/create-dashboard-variable.dto.ts +4 -0
  218. package/src/dtos/update-dashboard-layout.dto.ts +30 -0
  219. package/src/dtos/update-dashboard-variable.dto.ts +5 -1
  220. package/src/entities/action-metadata.entity.ts +3 -2
  221. package/src/entities/ai-interaction.entity.ts +5 -4
  222. package/src/entities/chatter-message-details.entity.ts +7 -3
  223. package/src/entities/chatter-message.entity.ts +4 -3
  224. package/src/entities/common.entity.ts +2 -2
  225. package/src/entities/dashboard-layout.entity.ts +18 -0
  226. package/src/entities/dashboard-question-sql-dataset-config.entity.ts +5 -4
  227. package/src/entities/dashboard-question.entity.ts +5 -4
  228. package/src/entities/dashboard-variable.entity.ts +9 -4
  229. package/src/entities/dashboard.entity.ts +7 -2
  230. package/src/entities/email-attachment.entity.ts +2 -1
  231. package/src/entities/email-template.entity.ts +1 -1
  232. package/src/entities/export-transaction.entity.ts +2 -1
  233. package/src/entities/field-metadata.entity.ts +2 -2
  234. package/src/entities/import-transaction-error-log.entity.ts +3 -2
  235. package/src/entities/import-transaction.entity.ts +2 -1
  236. package/src/entities/legacy-common.entity.ts +3 -4
  237. package/src/entities/mq-message.entity.ts +4 -3
  238. package/src/entities/saved-filters.entity.ts +3 -2
  239. package/src/entities/security-rule.entity.ts +2 -1
  240. package/src/entities/sms-template.entity.ts +1 -1
  241. package/src/entities/user-view-metadata.entity.ts +2 -1
  242. package/src/entities/view-metadata.entity.ts +3 -0
  243. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +9 -9
  244. package/src/helpers/solid-registry.ts +3 -2
  245. package/src/helpers/typeorm-db-helper.ts +26 -0
  246. package/src/index.ts +1 -0
  247. package/src/interfaces.ts +7 -1
  248. package/src/repository/dashboard-layout.repository.ts +17 -0
  249. package/src/seeders/module-metadata-seeder.service.ts +5 -5
  250. package/src/seeders/seed-data/solid-core-metadata.json +446 -36
  251. package/src/services/authentication.service.ts +47 -24
  252. package/src/services/chatter-message.service.ts +26 -0
  253. package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +6 -5
  254. package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +17 -22
  255. package/src/services/dashboard-layout.service.ts +111 -0
  256. package/src/services/dashboard-question.service.ts +23 -4
  257. package/src/services/dashboard.service.ts +7 -0
  258. package/src/services/model-metadata.service.ts +131 -50
  259. package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +3 -7
  260. package/src/services/question-data-providers/interfaces.ts +0 -0
  261. package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +4 -8
  262. package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +4 -8
  263. package/src/services/queues/database-subscriber.service.ts +19 -2
  264. package/src/services/queues/publisher-factory.service.ts +8 -6
  265. package/src/services/queues/rabbitmq-subscriber.service.ts +115 -5
  266. package/src/services/scheduled-job.service.ts +31 -2
  267. package/src/services/scheduled-jobs/scheduler.interface.ts +4 -1
  268. package/src/services/scheduled-jobs/scheduler.service.ts +82 -20
  269. package/src/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.ts +4 -1
  270. package/src/services/solid-ts-morph.service.ts +98 -0
  271. package/src/solid-core.module.ts +12 -0
  272. package/src/subscribers/computed-entity-field.subscriber.ts +9 -3
  273. package/src/transformers/typeorm/local-date-time-transformer.ts +41 -33
  274. package/.claude/settings.local.json +0 -15
  275. package/src/services/1.js +0 -6
@@ -1,6 +1,7 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, JoinColumn, ManyToOne, Index, Column } from 'typeorm';
3
3
  import { User } from 'src/entities/user.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
 
5
6
  @Entity("ss_ai_interactions")
6
7
  export class AiInteraction extends CommonEntity {
@@ -16,7 +17,7 @@ export class AiInteraction extends CommonEntity {
16
17
  @Column({ type: "varchar" })
17
18
  role: string;
18
19
 
19
- @Column({ type: "text" })
20
+ @Column({ ...getColumnType('longText'), nullable: true })
20
21
  message: string;
21
22
 
22
23
  @Column({ type: "varchar", nullable: true })
@@ -26,7 +27,7 @@ export class AiInteraction extends CommonEntity {
26
27
  @Column({ type: "varchar", nullable: true })
27
28
  status: string;
28
29
 
29
- @Column({ type: "text", nullable: true })
30
+ @Column({ nullable: true, ...getColumnType('longText') })
30
31
  errorMessage: string;
31
32
 
32
33
  @Column({ type: "varchar", nullable: true })
@@ -35,7 +36,7 @@ export class AiInteraction extends CommonEntity {
35
36
  @Column({ type: "integer", nullable: true })
36
37
  responseTimeMs: number;
37
38
 
38
- @Column({ type: "simple-json", nullable: true })
39
+ @Column({ type: "simple-json", nullable: true, ...getColumnType('simpleJsonLargeText') })
39
40
  metadata: any;
40
41
 
41
42
  @Column({ nullable: true, default: false })
@@ -62,7 +63,7 @@ export class AiInteraction extends CommonEntity {
62
63
  @Column({ type: "integer", nullable: true })
63
64
  totalTokens: number;
64
65
 
65
- @Column({ type: "text", nullable: true })
66
+ @Column({ nullable: true, ...getColumnType('longText') })
66
67
  originalMessage: string;
67
68
 
68
69
  @Column({ nullable: true, default: false })
@@ -1,6 +1,7 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, JoinColumn, ManyToOne, Column, Index } from 'typeorm';
3
3
  import { ChatterMessage } from 'src/entities/chatter-message.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
  @Entity("ss_chatter_message_details")
5
6
  export class ChatterMessageDetails extends CommonEntity {
6
7
  @Index()
@@ -8,10 +9,10 @@ export class ChatterMessageDetails extends CommonEntity {
8
9
  @JoinColumn()
9
10
  chatterMessage: ChatterMessage;
10
11
 
11
- @Column({ type: "text", nullable: true })
12
+ @Column({ nullable: true, ...getColumnType('longText') })
12
13
  oldValue: string;
13
14
 
14
- @Column({ type: "text", nullable: true })
15
+ @Column({ nullable: true, ...getColumnType('longText') })
15
16
  newValue: string;
16
17
 
17
18
  @Column({ type: "varchar", nullable: true })
@@ -24,6 +25,9 @@ export class ChatterMessageDetails extends CommonEntity {
24
25
  @Column({ type: "varchar" })
25
26
  fieldName: string;
26
27
 
27
- @Column({ type: "text", nullable: true })
28
+ @Column({ nullable: true })
28
29
  fieldDisplayName: string;
30
+
31
+ @Column({ type: "varchar", nullable: true })
32
+ fieldType: string;
29
33
  }
@@ -2,6 +2,7 @@ import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
3
3
  import { User } from 'src/entities/user.entity'
4
4
  import { ChatterMessageDetails } from './chatter-message-details.entity';
5
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
5
6
 
6
7
  @Index(["coModelName", "coModelEntityId"])
7
8
  @Entity("ss_chatter_message")
@@ -13,7 +14,7 @@ export class ChatterMessage extends CommonEntity {
13
14
  @Column({ type: "varchar" })
14
15
  messageSubType: string; // audit_update | audit_insert | audit_delete | custom
15
16
 
16
- @Column({ type: "text", nullable: true })
17
+ @Column({ nullable: true, ...getColumnType('longText') })
17
18
  messageBody: string;
18
19
 
19
20
  @Index()
@@ -32,9 +33,9 @@ export class ChatterMessage extends CommonEntity {
32
33
  @OneToMany(() => ChatterMessageDetails, (chatterMessageDetails) => chatterMessageDetails.chatterMessage, { cascade: true })
33
34
  chatterMessageDetails: ChatterMessageDetails[];
34
35
 
35
- @Column({ type: "text", nullable: true })
36
+ @Column({ nullable: true })
36
37
  modelDisplayName: string;
37
38
 
38
- @Column({ type: "text", nullable: true })
39
+ @Column({ nullable: true })
39
40
  modelUserKey: string;
40
41
  }
@@ -1,6 +1,6 @@
1
- import { Column, CreateDateColumn, DeleteDateColumn, Index, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
2
1
  import { Exclude, Expose } from "class-transformer";
3
- import { LocalDateTimeTransformer, UtcDateTimeTransformer } from "src/transformers/typeorm/local-date-time-transformer";
2
+ import { LocalDateTimeTransformer } from "src/transformers/typeorm/local-date-time-transformer";
3
+ import { Column, CreateDateColumn, DeleteDateColumn, Index, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm";
4
4
 
5
5
  @Exclude()
6
6
  export abstract class CommonEntity {
@@ -0,0 +1,18 @@
1
+ import { CommonEntity } from 'src/entities/common.entity'
2
+ import { Entity, Column, JoinColumn, ManyToOne } from 'typeorm';
3
+ import { Dashboard } from 'src/entities/dashboard.entity'
4
+ import { User } from './user.entity';
5
+
6
+ @Entity("ss_dashboard_layout")
7
+ export class DashboardLayout extends CommonEntity {
8
+ @Column({ type: "text", nullable: true })
9
+ layout: string;
10
+
11
+ @ManyToOne(() => Dashboard, { nullable: true })
12
+ @JoinColumn()
13
+ dashboard: Dashboard;
14
+
15
+ @ManyToOne(() => User, { nullable: true })
16
+ @JoinColumn()
17
+ user: User;
18
+ }
@@ -1,20 +1,21 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
3
3
  import { DashboardQuestion } from 'src/entities/dashboard-question.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
 
5
6
  @Entity("ss_dashboard_question_sql_dataset_config")
6
7
  export class DashboardQuestionSqlDatasetConfig extends CommonEntity {
7
- @Index({ unique: true })
8
+ @Index()
8
9
  @Column({ type: "varchar" })
9
10
  datasetName: string;
10
11
 
11
12
  @Column({ type: "varchar" })
12
13
  datasetDisplayName: string;
13
14
 
14
- @Column({ type: "text", nullable: true })
15
+ @Column({ nullable: true })
15
16
  description: string;
16
17
 
17
- @Column({ type: "text" })
18
+ @Column({ ...getColumnType('longText'), nullable: true })
18
19
  sql: string;
19
20
 
20
21
  @Column({ type: "varchar" })
@@ -27,7 +28,7 @@ export class DashboardQuestionSqlDatasetConfig extends CommonEntity {
27
28
  @JoinColumn()
28
29
  question: DashboardQuestion;
29
30
 
30
- @Column({ type: "text", nullable: true })
31
+ @Column({ nullable: true, ...getColumnType('longText') })
31
32
  options: any;
32
33
 
33
34
  @Index({ unique: true })
@@ -1,11 +1,12 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
3
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
3
4
  import { Dashboard } from 'src/entities/dashboard.entity';
4
5
  import { DashboardQuestionSqlDatasetConfig } from 'src/entities/dashboard-question-sql-dataset-config.entity'
5
6
 
6
7
  @Entity("ss_dashboard_question")
7
8
  export class DashboardQuestion extends CommonEntity {
8
- @Index({ unique: true })
9
+ @Index()
9
10
  @Column({ type: "varchar" })
10
11
  name: string;
11
12
 
@@ -27,13 +28,13 @@ export class DashboardQuestion extends CommonEntity {
27
28
  @OneToMany(() => DashboardQuestionSqlDatasetConfig, dashboardQuestionSqlDatasetConfig => dashboardQuestionSqlDatasetConfig.question, { cascade: true })
28
29
  questionSqlDatasetConfigs: DashboardQuestionSqlDatasetConfig[];
29
30
 
30
- @Column({ type: "simple-json", nullable: true })
31
+ @Column({ type: "simple-json", nullable: true, ...getColumnType('simpleJsonLargeText') })
31
32
  chartOptions: any;
32
33
 
33
- @Column({ type: "text", nullable: true })
34
+ @Column({ nullable: true, ...getColumnType('longText') })
34
35
  labelSql: string;
35
36
 
36
- @Column({ type: "text", nullable: true })
37
+ @Column({ nullable: true, ...getColumnType('longText') })
37
38
  kpiSql: string;
38
39
 
39
40
  @Column({ type: "integer", nullable: true })
@@ -1,10 +1,11 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
- import {Entity, Column, Index, JoinColumn, ManyToOne} from 'typeorm';
2
+ import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
3
3
  import { Dashboard } from 'src/entities/dashboard.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
 
5
6
  @Entity("ss_dashboard_variable")
6
7
  export class DashboardVariable extends CommonEntity {
7
- @Index({ unique: true })
8
+ @Index()
8
9
  @Column({ type: "varchar" })
9
10
  variableName: string;
10
11
 
@@ -18,7 +19,7 @@ export class DashboardVariable extends CommonEntity {
18
19
  @Column({ nullable: true })
19
20
  selectionDynamicSourceType: string;
20
21
 
21
- @Column({ type: "text", nullable: true })
22
+ @Column({ nullable: true, ...getColumnType('longText') })
22
23
  selectionDynamicSQL: string;
23
24
 
24
25
  @Column({ type: "varchar", nullable: true })
@@ -31,9 +32,13 @@ export class DashboardVariable extends CommonEntity {
31
32
  @JoinColumn()
32
33
  dashboard: Dashboard;
33
34
 
34
- @Column({ type: "text", nullable: true })
35
+ @Column({ nullable: true})
35
36
  defaultValue: string;
36
37
 
37
38
  @Column({ type: "varchar", nullable: true })
38
39
  defaultOperator: string;
40
+
41
+ @Index({ unique: true })
42
+ @Column({ type: "varchar" })
43
+ externalId: string;
39
44
  }
@@ -1,8 +1,10 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, OneToMany, JoinColumn, ManyToOne } from 'typeorm';
3
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
3
4
  import { DashboardVariable } from 'src/entities/dashboard-variable.entity';
4
5
  import { DashboardQuestion } from 'src/entities/dashboard-question.entity';
5
6
  import { ModuleMetadata } from 'src/entities/module-metadata.entity'
7
+ import { DashboardLayout } from './dashboard-layout.entity';
6
8
 
7
9
  @Entity("ss_dashboard")
8
10
  export class Dashboard extends CommonEntity {
@@ -10,7 +12,7 @@ export class Dashboard extends CommonEntity {
10
12
  @Column({ type: "varchar" })
11
13
  name: string;
12
14
 
13
- @Column({ type: "text" })
15
+ @Column({ ...getColumnType('longText'), nullable: true })
14
16
  layoutJson: any;
15
17
 
16
18
  @OneToMany(() => DashboardVariable, dashboardVariable => dashboardVariable.dashboard, { cascade: true })
@@ -19,6 +21,9 @@ export class Dashboard extends CommonEntity {
19
21
  @OneToMany(() => DashboardQuestion, dashboardQuestion => dashboardQuestion.dashboard, { cascade: true })
20
22
  questions: DashboardQuestion[];
21
23
 
24
+ @OneToMany(() => DashboardLayout, dashboardLayout => dashboardLayout.dashboard, { cascade: true })
25
+ dashboardLayouts: DashboardLayout[];
26
+
22
27
  @ManyToOne(() => ModuleMetadata, { nullable: false })
23
28
  @JoinColumn()
24
29
  module: ModuleMetadata;
@@ -26,6 +31,6 @@ export class Dashboard extends CommonEntity {
26
31
  @Column({ type: "varchar", nullable: true })
27
32
  displayName: string;
28
33
 
29
- @Column({ type: "text", nullable: true })
34
+ @Column({ nullable: true })
30
35
  description: string;
31
36
  }
@@ -1,6 +1,7 @@
1
1
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
2
2
  import { CommonEntity } from "./common.entity";
3
3
  import { EmailTemplate } from "./email-template.entity";
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
  import { IndentLogger } from "@angular-devkit/core/src/logger";
5
6
 
6
7
  @Entity("ss_email_attachment")
@@ -14,7 +15,7 @@ export class EmailAttachment extends CommonEntity {
14
15
  relativePath: string; // This is the path relative to the email service being used. For e.g if the attahchment is uploaded in the media manager of elastic email service
15
16
  @Column({ name: "url", type: "varchar", nullable: true })
16
17
  url: string;
17
- @Column({ name: "template", type: "text", nullable: true })
18
+ @Column({ name: "template", nullable: true, ...getColumnType('longText') })
18
19
  template: string;
19
20
  @Index()
20
21
  @ManyToOne(() => EmailTemplate, (template) => template.attachments, { onDelete: 'CASCADE' })
@@ -14,7 +14,7 @@ export class EmailTemplate extends CommonEntity {
14
14
  body: string;
15
15
  @Column({ name: "subject", type: "varchar", default: "{}" })
16
16
  subject: string = "{}";
17
- @Column({ name: "description", type: "text", nullable: true })
17
+ @Column({ name: "description", nullable: true })
18
18
  description: string;
19
19
  @Column({ name: "active", nullable: true, default: true })
20
20
  active: boolean = true;
@@ -1,6 +1,7 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, ManyToOne } from 'typeorm';
3
3
  import { ExportTemplate } from 'src/entities/export-template.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
 
5
6
  @Entity("ss_export_transaction")
6
7
  @Index(["exportTransactionId", "deletedTracker"], { unique: true })
@@ -14,7 +15,7 @@ export class ExportTransaction extends CommonEntity {
14
15
  @Index()
15
16
  @Column({ type: "varchar" })
16
17
  status: string;
17
- @Column({ type: "text", nullable: true })
18
+ @Column({ nullable: true, ...getColumnType('longText') })
18
19
  error: string;
19
20
  @Index()
20
21
  @ManyToOne(() => ExportTemplate, { nullable: true })
@@ -36,7 +36,7 @@ export class FieldMetadata extends CommonEntity {
36
36
  @Column({ name: 'regex_pattern', nullable: true })
37
37
  regexPattern: string;
38
38
 
39
- @Column({ name: 'regex_pattern_not_matching_error_msg', type: 'text', nullable: true, default: ERROR_MESSAGES.DEFAULT_REGEX_PATTERN_NOT_MATCHING_ERROR_MSG })
39
+ @Column({ name: 'regex_pattern_not_matching_error_msg', nullable: true, default: ERROR_MESSAGES.DEFAULT_REGEX_PATTERN_NOT_MATCHING_ERROR_MSG })
40
40
  regexPatternNotMatchingErrorMsg: string;
41
41
 
42
42
  @Column({ name: "required", default: false })
@@ -119,7 +119,7 @@ export class FieldMetadata extends CommonEntity {
119
119
  @Column({ name: 'selection_static_values', nullable: true, type: 'simple-array' })
120
120
  selectionStaticValues: string[];
121
121
 
122
- @Column({ name: 'selection_value_type', nullable: true, type: 'text' }) // text type cannot have a default value
122
+ @Column({ name: 'selection_value_type', nullable: true })
123
123
  selectionValueType: string = 'string';
124
124
 
125
125
  // @Column({ name: "computed", default: false })
@@ -1,6 +1,7 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
3
3
  import { ImportTransaction } from 'src/entities/import-transaction.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
 
5
6
  @Entity("ss_import_transaction_error_log")
6
7
  export class ImportTransactionErrorLog extends CommonEntity {
@@ -9,7 +10,7 @@ export class ImportTransactionErrorLog extends CommonEntity {
9
10
  importTransactionErrorLogId: string;
10
11
  @Column({ type: "integer" })
11
12
  rowNumber: number;
12
- @Column({ type: "text", nullable: true })
13
+ @Column({ nullable: true, ...getColumnType('longText') })
13
14
  rowData: any;
14
15
  @Index()
15
16
  @ManyToOne(() => ImportTransaction, { nullable: false })
@@ -17,6 +18,6 @@ export class ImportTransactionErrorLog extends CommonEntity {
17
18
  importTransaction: ImportTransaction;
18
19
  @Column({ type: "varchar" })
19
20
  errorMessage: string;
20
- @Column({ type: "text", nullable: true })
21
+ @Column({ nullable: true, ...getColumnType('longText') })
21
22
  errorTrace: string;
22
23
  }
@@ -2,13 +2,14 @@ import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, Column, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
3
3
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
4
4
  import { ImportTransactionErrorLog } from 'src/entities/import-transaction-error-log.entity'
5
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
5
6
 
6
7
  @Entity("ss_import_transaction")
7
8
  export class ImportTransaction extends CommonEntity {
8
9
  @Index()
9
10
  @Column({ type: "varchar", nullable: true, default: "draft" })
10
11
  status: string = "draft";
11
- @Column({ type: "text", nullable: true })
12
+ @Column({ nullable: true, ...getColumnType('longText') })
12
13
  mapping: any;
13
14
  @Index()
14
15
  @ManyToOne(() => ModelMetadata, { nullable: true })
@@ -1,7 +1,6 @@
1
- import { Exclude, Expose, Type } from "class-transformer";
2
- import { Column, CreateDateColumn, DeleteDateColumn, Index, JoinColumn, ManyToOne, UpdateDateColumn } from "typeorm";
3
- import type { User } from "./user.entity";
4
- import { LocalDateTimeTransformer, UtcDateTimeTransformer } from "src/transformers/typeorm/local-date-time-transformer";
1
+ import { Exclude, Expose } from "class-transformer";
2
+ import { LocalDateTimeTransformer } from "src/transformers/typeorm/local-date-time-transformer";
3
+ import { Column, CreateDateColumn, DeleteDateColumn, Index, UpdateDateColumn } from "typeorm";
5
4
 
6
5
  export const LEGACY_TABLE_FIELDS_PREFIX = 'ss';
7
6
 
@@ -1,6 +1,7 @@
1
1
  import { CommonEntity } from "src/entities/common.entity"
2
2
  import { Entity, Column, Index, ManyToOne } from "typeorm";
3
3
  import { MqMessageQueue } from 'src/entities/mq-message-queue.entity'
4
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
4
5
  @Entity("ss_mq_message")
5
6
  export class MqMessage extends CommonEntity {
6
7
  @Column({ type: "varchar", nullable: true })
@@ -31,13 +32,13 @@ export class MqMessage extends CommonEntity {
31
32
  @Column({ type: "integer", nullable: true })
32
33
  elapsedMillis: number;
33
34
 
34
- @Column({ type: "text", nullable: true })
35
+ @Column({ nullable: true, ...getColumnType('longText') })
35
36
  input: string;
36
37
 
37
- @Column({ type: "text", nullable: true })
38
+ @Column({ nullable: true, ...getColumnType('longText') })
38
39
  output: string;
39
40
 
40
- @Column({ type: "text", nullable: true })
41
+ @Column({ nullable: true, ...getColumnType('longText') })
41
42
  error: string;
42
43
 
43
44
  @Column({ type: "integer", nullable: true })
@@ -3,10 +3,11 @@ import { Entity, Column, JoinColumn, ManyToOne, Index } from 'typeorm';
3
3
  import { User } from 'src/entities/user.entity';
4
4
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
5
5
  import { ViewMetadata } from 'src/entities/view-metadata.entity'
6
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
6
7
 
7
8
  @Entity("ss_saved_fitlers")
8
9
  export class SavedFilters extends CommonEntity {
9
- @Column({ type: "text", nullable: true })
10
+ @Column({ nullable: true, ...getColumnType('longText') })
10
11
  filterQueryJson: any;
11
12
 
12
13
  @Index({ unique: true })
@@ -28,7 +29,7 @@ export class SavedFilters extends CommonEntity {
28
29
  @JoinColumn()
29
30
  view: ViewMetadata;
30
31
 
31
- @Column({ name: "description", type: "text", nullable: true })
32
+ @Column({ name: "description", nullable: true })
32
33
  description: string;
33
34
 
34
35
  @Column({ nullable: true, default: false })
@@ -2,6 +2,7 @@ import { CommonEntity } from 'src/entities/common.entity';
2
2
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
3
3
  import { RoleMetadata } from 'src/entities/role-metadata.entity';
4
4
  import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
5
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
5
6
 
6
7
  @Entity("ss_security_rule")
7
8
  export class SecurityRule extends CommonEntity {
@@ -22,7 +23,7 @@ export class SecurityRule extends CommonEntity {
22
23
  @JoinColumn()
23
24
  modelMetadata: ModelMetadata;
24
25
 
25
- @Column({ type: "text" })
26
+ @Column({ ...getColumnType('longText'), nullable: true })
26
27
  securityRuleConfig: any;
27
28
 
28
29
  @Column({ type: "varchar", nullable: true })
@@ -12,7 +12,7 @@ export class SmsTemplate extends CommonEntity {
12
12
  body: string;
13
13
  @Column({ type: "varchar", nullable: true })
14
14
  smsProviderTemplateId: string;
15
- @Column({ name: "description", type: "text", nullable: true })
15
+ @Column({ name: "description", nullable: true })
16
16
  description: string;
17
17
  @Column({ name: "active", nullable: true, default: true })
18
18
  active: boolean = true;
@@ -1,5 +1,6 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
2
  import { Entity, JoinColumn, ManyToOne, Index, Column } from 'typeorm';
3
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
3
4
  import { ViewMetadata } from 'src/entities/view-metadata.entity';
4
5
  import { User } from 'src/entities/user.entity'
5
6
 
@@ -9,7 +10,7 @@ export class UserViewMetadata extends CommonEntity {
9
10
  @ManyToOne(() => User, { nullable: false })
10
11
  @JoinColumn()
11
12
  user: User;
12
- @Column({ name: "layout", type: "text", nullable: true })
13
+ @Column({ name: "layout", nullable: true, ...getColumnType('longText') })
13
14
  layout: any = "{}";
14
15
  @Index()
15
16
  @ManyToOne(() => ViewMetadata, { nullable: false })
@@ -1,5 +1,6 @@
1
1
  import { CommonEntity } from "src/entities/common.entity"
2
2
  import { Entity, Column, ManyToOne, Index, JoinColumn, OneToMany } from "typeorm";
3
+ import { getColumnType } from 'src/helpers/typeorm-db-helper';
3
4
  import { ModuleMetadata } from 'src/entities/module-metadata.entity';
4
5
  import { ModelMetadata } from 'src/entities/model-metadata.entity';
5
6
  import { UserViewMetadata } from 'src/entities/user-view-metadata.entity'
@@ -16,9 +17,11 @@ export class ViewMetadata extends CommonEntity {
16
17
  @Column({ name: "type", type: "varchar" })
17
18
  type: string;
18
19
 
20
+ //TODO: To make this truly cross db compatible, we should avoid setting a db type
19
21
  @Column({ name: "context", type: "text" })
20
22
  context: any = "{}";
21
23
 
24
+ //TODO: To make this truly cross db compatible, we should avoid setting a db type
22
25
  @Column({ name: "layout", type: "text" })
23
26
  layout: any;
24
27
 
@@ -11,6 +11,7 @@ export interface MediaFieldOptions {
11
11
  fieldName: string | undefined | null;
12
12
  mediaMaxSizeKb: number | undefined | null;
13
13
  mediaTypes: string[];
14
+ isUpdate: boolean | undefined | null;
14
15
  }
15
16
 
16
17
  type MediaType = 'image' | 'audio' | 'video' | 'file' | 'pdf';
@@ -119,25 +120,24 @@ export class MediaFieldCrudManager implements FieldCrudManager {
119
120
  }
120
121
 
121
122
  validate(dto: any, files: Array<Express.Multer.File>): ValidationError[] {
122
- const isValidateForUpdate = dto.id !== undefined; //FIXME: This is a hack, since we are using PUT for update. Once we support PATCH, this will be removed
123
123
  const fieldFiles = files.filter(file => file.fieldname === this.options.fieldName);
124
- return this.applyValidations(fieldFiles, isValidateForUpdate);
124
+ return this.applyValidations(fieldFiles);
125
125
  }
126
126
 
127
- private applyValidations(fieldFiles: Array<Express.Multer.File>, isValidateForUpdate: boolean): ValidationError[] {
127
+ private applyValidations(fieldFiles: Array<Express.Multer.File>): ValidationError[] {
128
128
  switch (this.options.type) {
129
129
  case SolidMediaType.mediaSingle:
130
- return this.validateMediaSingle(fieldFiles, isValidateForUpdate);
130
+ return this.validateMediaSingle(fieldFiles);
131
131
  case SolidMediaType.mediaMultiple:
132
- return this.validateMediaMultiple(fieldFiles, isValidateForUpdate);
132
+ return this.validateMediaMultiple(fieldFiles);
133
133
  default:
134
134
  return [];
135
135
  }
136
136
  }
137
137
 
138
- private validateMediaSingle(fieldFiles: Array<Express.Multer.File>, isValidateForUpdate: boolean): ValidationError[] {
138
+ private validateMediaSingle(fieldFiles: Array<Express.Multer.File>): ValidationError[] {
139
139
  const errors: ValidationError[] = [];
140
- if (!isValidateForUpdate && this.options.required && fieldFiles.length === 0) {
140
+ if (!this.options.isUpdate && this.options.required && fieldFiles.length === 0) {
141
141
  errors.push({
142
142
  field: this.options.fieldName,
143
143
  error: `${this.options.fieldName} is required`
@@ -184,9 +184,9 @@ export class MediaFieldCrudManager implements FieldCrudManager {
184
184
  return errors;
185
185
  }
186
186
 
187
- private validateMediaMultiple(fieldFiles: Array<Express.Multer.File>, isValidateForUpdate: boolean): ValidationError[] {
187
+ private validateMediaMultiple(fieldFiles: Array<Express.Multer.File>): ValidationError[] {
188
188
  const errors: ValidationError[] = [];
189
- if (!isValidateForUpdate && this.options.required && fieldFiles.length === 0) {
189
+ if (!this.options.isUpdate && this.options.required && fieldFiles.length === 0) {
190
190
  errors.push({
191
191
  field: this.options.fieldName,
192
192
  error: `${this.options.fieldName} is required`
@@ -7,7 +7,7 @@ import { SecurityRule } from 'src/entities/security-rule.entity';
7
7
  import { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';
8
8
  import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule, ISettingsProvider, SettingDefinition } from "../interfaces";
9
9
  import { DatasourceType } from 'src/dtos/create-model-metadata.dto';
10
- import { ObjectLiteral } from 'typeorm';
10
+ import { EntityManager, ObjectLiteral, QueryRunner } from 'typeorm';
11
11
  import { ColumnMetadata } from 'typeorm/metadata/ColumnMetadata';
12
12
  import { RelationMetadata } from 'typeorm/metadata/RelationMetadata';
13
13
  import { Setting } from 'src/entities/setting.entity';
@@ -51,6 +51,8 @@ export interface TypeOrmEventContext {
51
51
  metadataName?: string;
52
52
  updatedColumns?: string[];
53
53
  updatedRelations?: string[];
54
+ manager?: EntityManager;
55
+ queryRunner?: QueryRunner;
54
56
  }
55
57
 
56
58
  export interface ComputedFieldMetadata<TContext = any> {
@@ -357,4 +359,3 @@ export class SolidRegistry {
357
359
  }
358
360
  }
359
361
  }
360
-
@@ -9,6 +9,29 @@ const LONG_TEXT_MAP: Record<DatasourceType, ColumnOptions> = {
9
9
  [DatasourceType.oracle]: { type: "clob" },
10
10
  };
11
11
 
12
+ // For simple-json columns that may contain large payloads: on MySQL/MariaDB the default
13
+ // TEXT backing store is limited to 64 KB, so we override the type to longtext and supply
14
+ // an explicit JSON transformer so TypeORM still serialises/deserialises correctly.
15
+ const SIMPLE_JSON_LARGE_TEXT_MAP: Record<DatasourceType, ColumnOptions> = {
16
+ [DatasourceType.postgres]: {},
17
+ [DatasourceType.mssql]: {},
18
+ [DatasourceType.mysql]: {
19
+ type: "longtext",
20
+ transformer: {
21
+ to: (value: any) => (value !== undefined && value !== null ? JSON.stringify(value) : value),
22
+ from: (value: any) => (value !== null && value !== undefined ? JSON.parse(value) : value),
23
+ },
24
+ },
25
+ [DatasourceType.mariadb]: {
26
+ type: "longtext",
27
+ transformer: {
28
+ to: (value: any) => (value !== undefined && value !== null ? JSON.stringify(value) : value),
29
+ from: (value: any) => (value !== null && value !== undefined ? JSON.parse(value) : value),
30
+ },
31
+ },
32
+ [DatasourceType.oracle]: { type: "clob" },
33
+ };
34
+
12
35
  const solidCoreDbType: DatasourceType =
13
36
  Object.values(DatasourceType).includes(process.env.SOLID_CORE_DB_TYPE as DatasourceType)
14
37
  ? (process.env.SOLID_CORE_DB_TYPE as DatasourceType)
@@ -20,6 +43,9 @@ export function getColumnType(solidType: string): ColumnOptions {
20
43
  case "richText":
21
44
  return LONG_TEXT_MAP[solidCoreDbType];
22
45
 
46
+ case "simpleJsonLargeText":
47
+ return SIMPLE_JSON_LARGE_TEXT_MAP[solidCoreDbType];
48
+
23
49
  default:
24
50
  return {};
25
51
  }
package/src/index.ts CHANGED
@@ -137,6 +137,7 @@ export * from './entities/user-activity-history.entity'
137
137
  export * from './entities/dashboard.entity'
138
138
  export * from './entities/dashboard-variable.entity'
139
139
  export * from './entities/dashboard-question.entity'
140
+ export * from './entities/dashboard-layout.entity'
140
141
  export * from './entities/dashboard-question-sql-dataset-config.entity'
141
142
  export * from './entities/ai-interaction.entity'
142
143
  export * from './entities/model-sequence.entity'