@solidxai/core 0.1.10-beta.26 → 0.1.10-beta.28

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 (315) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/CLAUDE.md +26 -0
  3. package/MICROSOFT_ACTIVE_DIRECTORY_OAUTH_FLOW.md +616 -0
  4. package/ai-interaction-cleanup.sql +53 -0
  5. package/dist/constants/error-messages.d.ts +1 -0
  6. package/dist/constants/error-messages.d.ts.map +1 -1
  7. package/dist/constants/error-messages.js +1 -0
  8. package/dist/constants/error-messages.js.map +1 -1
  9. package/dist/controllers/microsoft-active-directory-authentication.controller.d.ts +28 -0
  10. package/dist/controllers/microsoft-active-directory-authentication.controller.d.ts.map +1 -0
  11. package/dist/controllers/microsoft-active-directory-authentication.controller.js +122 -0
  12. package/dist/controllers/microsoft-active-directory-authentication.controller.js.map +1 -0
  13. package/dist/controllers/service.controller.d.ts +1 -5
  14. package/dist/controllers/service.controller.d.ts.map +1 -1
  15. package/dist/controllers/service.controller.js +6 -11
  16. package/dist/controllers/service.controller.js.map +1 -1
  17. package/dist/controllers/test.controller.d.ts +1 -6
  18. package/dist/controllers/test.controller.d.ts.map +1 -1
  19. package/dist/controllers/test.controller.js +2 -20
  20. package/dist/controllers/test.controller.js.map +1 -1
  21. package/dist/dtos/create-permission-metadata.dto.d.ts.map +1 -1
  22. package/dist/dtos/create-permission-metadata.dto.js +2 -0
  23. package/dist/dtos/create-permission-metadata.dto.js.map +1 -1
  24. package/dist/dtos/create-role-metadata.dto.d.ts +2 -0
  25. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  26. package/dist/dtos/create-role-metadata.dto.js +13 -1
  27. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  28. package/dist/dtos/import-instructions.dto.d.ts +2 -0
  29. package/dist/dtos/import-instructions.dto.d.ts.map +1 -1
  30. package/dist/dtos/import-instructions.dto.js +15 -1
  31. package/dist/dtos/import-instructions.dto.js.map +1 -1
  32. package/dist/dtos/update-permission-metadata.dto.d.ts.map +1 -1
  33. package/dist/dtos/update-permission-metadata.dto.js +3 -1
  34. package/dist/dtos/update-permission-metadata.dto.js.map +1 -1
  35. package/dist/dtos/update-role-metadata.dto.d.ts +2 -0
  36. package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
  37. package/dist/dtos/update-role-metadata.dto.js +13 -1
  38. package/dist/dtos/update-role-metadata.dto.js.map +1 -1
  39. package/dist/entities/action-metadata.entity.d.ts.map +1 -1
  40. package/dist/entities/action-metadata.entity.js +1 -0
  41. package/dist/entities/action-metadata.entity.js.map +1 -1
  42. package/dist/entities/agent-event.entity.d.ts.map +1 -1
  43. package/dist/entities/agent-event.entity.js +1 -0
  44. package/dist/entities/agent-event.entity.js.map +1 -1
  45. package/dist/entities/agent-session.entity.d.ts.map +1 -1
  46. package/dist/entities/agent-session.entity.js +1 -0
  47. package/dist/entities/agent-session.entity.js.map +1 -1
  48. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  49. package/dist/entities/chatter-message.entity.js +2 -0
  50. package/dist/entities/chatter-message.entity.js.map +1 -1
  51. package/dist/entities/email-template.entity.d.ts.map +1 -1
  52. package/dist/entities/email-template.entity.js +1 -0
  53. package/dist/entities/email-template.entity.js.map +1 -1
  54. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  55. package/dist/entities/field-metadata.entity.js +4 -0
  56. package/dist/entities/field-metadata.entity.js.map +1 -1
  57. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  58. package/dist/entities/list-of-values.entity.js +4 -0
  59. package/dist/entities/list-of-values.entity.js.map +1 -1
  60. package/dist/entities/locale.entity.d.ts.map +1 -1
  61. package/dist/entities/locale.entity.js +1 -0
  62. package/dist/entities/locale.entity.js.map +1 -1
  63. package/dist/entities/media.entity.d.ts.map +1 -1
  64. package/dist/entities/media.entity.js +1 -0
  65. package/dist/entities/media.entity.js.map +1 -1
  66. package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
  67. package/dist/entities/menu-item-metadata.entity.js +2 -0
  68. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  69. package/dist/entities/model-metadata.entity.d.ts.map +1 -1
  70. package/dist/entities/model-metadata.entity.js +3 -0
  71. package/dist/entities/model-metadata.entity.js.map +1 -1
  72. package/dist/entities/module-metadata.entity.d.ts.map +1 -1
  73. package/dist/entities/module-metadata.entity.js +2 -0
  74. package/dist/entities/module-metadata.entity.js.map +1 -1
  75. package/dist/entities/permission-metadata.entity.d.ts.map +1 -1
  76. package/dist/entities/permission-metadata.entity.js.map +1 -1
  77. package/dist/entities/role-metadata.entity.d.ts +2 -0
  78. package/dist/entities/role-metadata.entity.d.ts.map +1 -1
  79. package/dist/entities/role-metadata.entity.js +10 -2
  80. package/dist/entities/role-metadata.entity.js.map +1 -1
  81. package/dist/entities/saved-filters.entity.d.ts.map +1 -1
  82. package/dist/entities/saved-filters.entity.js +3 -0
  83. package/dist/entities/saved-filters.entity.js.map +1 -1
  84. package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
  85. package/dist/entities/scheduled-job.entity.js +2 -0
  86. package/dist/entities/scheduled-job.entity.js.map +1 -1
  87. package/dist/entities/security-rule.entity.d.ts.map +1 -1
  88. package/dist/entities/security-rule.entity.js +1 -0
  89. package/dist/entities/security-rule.entity.js.map +1 -1
  90. package/dist/entities/sms-template.entity.d.ts.map +1 -1
  91. package/dist/entities/sms-template.entity.js +2 -0
  92. package/dist/entities/sms-template.entity.js.map +1 -1
  93. package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
  94. package/dist/entities/user-activity-history.entity.js +1 -0
  95. package/dist/entities/user-activity-history.entity.js.map +1 -1
  96. package/dist/entities/user.entity.d.ts +3 -0
  97. package/dist/entities/user.entity.d.ts.map +1 -1
  98. package/dist/entities/user.entity.js +15 -1
  99. package/dist/entities/user.entity.js.map +1 -1
  100. package/dist/entities/view-metadata.entity.d.ts.map +1 -1
  101. package/dist/entities/view-metadata.entity.js +2 -0
  102. package/dist/entities/view-metadata.entity.js.map +1 -1
  103. package/dist/helpers/microsoft-active-directory-oauth.helper.d.ts +34 -0
  104. package/dist/helpers/microsoft-active-directory-oauth.helper.d.ts.map +1 -0
  105. package/dist/helpers/microsoft-active-directory-oauth.helper.js +43 -0
  106. package/dist/helpers/microsoft-active-directory-oauth.helper.js.map +1 -0
  107. package/dist/helpers/module.helper.js +0 -5
  108. package/dist/helpers/module.helper.js.map +1 -1
  109. package/dist/helpers/user-helper.d.ts.map +1 -1
  110. package/dist/helpers/user-helper.js +4 -0
  111. package/dist/helpers/user-helper.js.map +1 -1
  112. package/dist/index.d.ts +1 -5
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +1 -5
  115. package/dist/index.js.map +1 -1
  116. package/dist/interfaces.d.ts +0 -8
  117. package/dist/interfaces.d.ts.map +1 -1
  118. package/dist/interfaces.js.map +1 -1
  119. package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.d.ts +14 -0
  120. package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.d.ts.map +1 -0
  121. package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.js +67 -0
  122. package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.js.map +1 -0
  123. package/dist/seeders/seed-data/solid-core-metadata.json +317 -814
  124. package/dist/services/authentication.service.d.ts +12 -0
  125. package/dist/services/authentication.service.d.ts.map +1 -1
  126. package/dist/services/authentication.service.js +64 -0
  127. package/dist/services/authentication.service.js.map +1 -1
  128. package/dist/services/crud-helper.service.d.ts.map +1 -1
  129. package/dist/services/crud-helper.service.js +11 -3
  130. package/dist/services/crud-helper.service.js.map +1 -1
  131. package/dist/services/import-transaction.service.d.ts.map +1 -1
  132. package/dist/services/import-transaction.service.js +6 -0
  133. package/dist/services/import-transaction.service.js.map +1 -1
  134. package/dist/services/settings/default-settings-provider.service.d.ts +100 -0
  135. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  136. package/dist/services/settings/default-settings-provider.service.js +56 -0
  137. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  138. package/dist/services/user.service.d.ts +2 -0
  139. package/dist/services/user.service.d.ts.map +1 -1
  140. package/dist/services/user.service.js +46 -0
  141. package/dist/services/user.service.js.map +1 -1
  142. package/dist/solid-core.module.d.ts.map +1 -1
  143. package/dist/solid-core.module.js +4 -29
  144. package/dist/solid-core.module.js.map +1 -1
  145. package/dist/subscribers/scheduled-job.subscriber.js +1 -1
  146. package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
  147. package/dist/subscribers/security-rule.subscriber.js +1 -1
  148. package/dist/subscribers/security-rule.subscriber.js.map +1 -1
  149. package/package.json +4 -4
  150. package/src/constants/error-messages.ts +2 -1
  151. package/src/controllers/microsoft-active-directory-authentication.controller.ts +104 -0
  152. package/src/controllers/service.controller.ts +4 -7
  153. package/src/controllers/test.controller.ts +0 -9
  154. package/src/dtos/create-permission-metadata.dto.ts +3 -0
  155. package/src/dtos/create-role-metadata.dto.ts +11 -1
  156. package/src/dtos/import-instructions.dto.ts +11 -1
  157. package/src/dtos/update-permission-metadata.dto.ts +4 -1
  158. package/src/dtos/update-role-metadata.dto.ts +21 -1
  159. package/src/entities/action-metadata.entity.ts +1 -0
  160. package/src/entities/agent-event.entity.ts +1 -0
  161. package/src/entities/agent-session.entity.ts +1 -0
  162. package/src/entities/chatter-message.entity.ts +2 -0
  163. package/src/entities/email-template.entity.ts +1 -0
  164. package/src/entities/field-metadata.entity.ts +4 -1
  165. package/src/entities/list-of-values.entity.ts +5 -1
  166. package/src/entities/locale.entity.ts +1 -0
  167. package/src/entities/media.entity.ts +1 -0
  168. package/src/entities/menu-item-metadata.entity.ts +2 -0
  169. package/src/entities/model-metadata.entity.ts +3 -0
  170. package/src/entities/module-metadata.entity.ts +2 -0
  171. package/src/entities/permission-metadata.entity.ts +2 -2
  172. package/src/entities/role-metadata.entity.ts +11 -3
  173. package/src/entities/saved-filters.entity.ts +3 -0
  174. package/src/entities/scheduled-job.entity.ts +2 -0
  175. package/src/entities/security-rule.entity.ts +1 -0
  176. package/src/entities/sms-template.entity.ts +2 -0
  177. package/src/entities/user-activity-history.entity.ts +1 -0
  178. package/src/entities/user.entity.ts +15 -1
  179. package/src/entities/view-metadata.entity.ts +2 -0
  180. package/src/helpers/microsoft-active-directory-oauth.helper.ts +83 -0
  181. package/src/helpers/module.helper.ts +5 -5
  182. package/src/helpers/user-helper.ts +5 -1
  183. package/src/index.ts +1 -5
  184. package/src/interfaces.ts +0 -8
  185. package/src/passport-strategies/microsoft-active-directory-oauth.strategy.ts +63 -0
  186. package/src/seeders/seed-data/solid-core-metadata.json +317 -814
  187. package/src/services/1.js +6 -0
  188. package/src/services/authentication.service.ts +78 -0
  189. package/src/services/crud-helper.service.ts +9 -3
  190. package/src/services/import-transaction.service.ts +11 -1
  191. package/src/services/settings/default-settings-provider.service.ts +59 -0
  192. package/src/services/user.service.ts +61 -0
  193. package/src/solid-core.module.ts +4 -31
  194. package/src/subscribers/scheduled-job.subscriber.ts +1 -1
  195. package/src/subscribers/security-rule.subscriber.ts +1 -1
  196. package/dist/commands/ingest.command.d.ts +0 -16
  197. package/dist/commands/ingest.command.d.ts.map +0 -1
  198. package/dist/commands/ingest.command.js +0 -50
  199. package/dist/commands/ingest.command.js.map +0 -1
  200. package/dist/controllers/ai-interaction.controller.d.ts +0 -29
  201. package/dist/controllers/ai-interaction.controller.d.ts.map +0 -1
  202. package/dist/controllers/ai-interaction.controller.js +0 -218
  203. package/dist/controllers/ai-interaction.controller.js.map +0 -1
  204. package/dist/dtos/create-ai-interaction.dto.d.ts +0 -23
  205. package/dist/dtos/create-ai-interaction.dto.d.ts.map +0 -1
  206. package/dist/dtos/create-ai-interaction.dto.js +0 -149
  207. package/dist/dtos/create-ai-interaction.dto.js.map +0 -1
  208. package/dist/dtos/invoke-ai-prompt.dto.d.ts +0 -5
  209. package/dist/dtos/invoke-ai-prompt.dto.d.ts.map +0 -1
  210. package/dist/dtos/invoke-ai-prompt.dto.js +0 -30
  211. package/dist/dtos/invoke-ai-prompt.dto.js.map +0 -1
  212. package/dist/dtos/update-ai-interaction.dto.d.ts +0 -24
  213. package/dist/dtos/update-ai-interaction.dto.d.ts.map +0 -1
  214. package/dist/dtos/update-ai-interaction.dto.js +0 -150
  215. package/dist/dtos/update-ai-interaction.dto.js.map +0 -1
  216. package/dist/entities/ai-interaction.entity.d.ts +0 -24
  217. package/dist/entities/ai-interaction.entity.d.ts.map +0 -1
  218. package/dist/entities/ai-interaction.entity.js +0 -116
  219. package/dist/entities/ai-interaction.entity.js.map +0 -1
  220. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +0 -11
  221. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +0 -1
  222. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +0 -39
  223. package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +0 -1
  224. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +0 -8
  225. package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +0 -1
  226. package/dist/jobs/database/trigger-mcp-client-queue-options.js +0 -10
  227. package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +0 -1
  228. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +0 -25
  229. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +0 -1
  230. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +0 -222
  231. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +0 -1
  232. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +0 -11
  233. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts.map +0 -1
  234. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js +0 -39
  235. package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js.map +0 -1
  236. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts +0 -8
  237. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts.map +0 -1
  238. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js +0 -10
  239. package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js.map +0 -1
  240. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +0 -18
  241. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts.map +0 -1
  242. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js +0 -103
  243. package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js.map +0 -1
  244. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +0 -11
  245. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts.map +0 -1
  246. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js +0 -39
  247. package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js.map +0 -1
  248. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts +0 -8
  249. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts.map +0 -1
  250. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js +0 -10
  251. package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js.map +0 -1
  252. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +0 -18
  253. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts.map +0 -1
  254. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js +0 -103
  255. package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js.map +0 -1
  256. package/dist/repository/ai-interaction.repository.d.ts +0 -12
  257. package/dist/repository/ai-interaction.repository.d.ts.map +0 -1
  258. package/dist/repository/ai-interaction.repository.js +0 -34
  259. package/dist/repository/ai-interaction.repository.js.map +0 -1
  260. package/dist/services/ai-interaction.service.d.ts +0 -23
  261. package/dist/services/ai-interaction.service.d.ts.map +0 -1
  262. package/dist/services/ai-interaction.service.js +0 -217
  263. package/dist/services/ai-interaction.service.js.map +0 -1
  264. package/dist/services/genai/ingest-metadata.service.d.ts +0 -38
  265. package/dist/services/genai/ingest-metadata.service.d.ts.map +0 -1
  266. package/dist/services/genai/ingest-metadata.service.js +0 -542
  267. package/dist/services/genai/ingest-metadata.service.js.map +0 -1
  268. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +0 -9
  269. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +0 -1
  270. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +0 -39
  271. package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +0 -1
  272. package/dist/services/genai/r2r-helper.service.d.ts +0 -9
  273. package/dist/services/genai/r2r-helper.service.d.ts.map +0 -1
  274. package/dist/services/genai/r2r-helper.service.js +0 -40
  275. package/dist/services/genai/r2r-helper.service.js.map +0 -1
  276. package/dist-tests/api/authenticate.spec.js +0 -119
  277. package/dist-tests/api/authenticate.spec.js.map +0 -1
  278. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  279. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  280. package/dist-tests/api/ping.spec.js +0 -21
  281. package/dist-tests/api/ping.spec.js.map +0 -1
  282. package/dist-tests/helpers/auth.js +0 -41
  283. package/dist-tests/helpers/auth.js.map +0 -1
  284. package/dist-tests/helpers/env.js +0 -11
  285. package/dist-tests/helpers/env.js.map +0 -1
  286. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
  287. package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
  288. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
  289. package/docs/grouping-enhancements.md +0 -89
  290. package/docs/java-spring/README.md +0 -3
  291. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  292. package/docs/module-package-import-handoff.md +0 -691
  293. package/docs/seed-changes.md +0 -65
  294. package/docs/test-data-workflow.md +0 -200
  295. package/docs/type-declaration-import-issue.md +0 -24
  296. package/src/commands/ingest.command.ts +0 -36
  297. package/src/controllers/ai-interaction.controller.ts +0 -112
  298. package/src/dtos/create-ai-interaction.dto.ts +0 -89
  299. package/src/dtos/invoke-ai-prompt.dto.ts +0 -10
  300. package/src/dtos/update-ai-interaction.dto.ts +0 -93
  301. package/src/entities/ai-interaction.entity.ts +0 -71
  302. package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +0 -22
  303. package/src/jobs/database/trigger-mcp-client-queue-options.ts +0 -9
  304. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +0 -278
  305. package/src/jobs/rabbitmq/trigger-mcp-client-publisher.service.ts +0 -22
  306. package/src/jobs/rabbitmq/trigger-mcp-client-queue-options.ts +0 -9
  307. package/src/jobs/rabbitmq/trigger-mcp-client-subscriber.service.ts +0 -104
  308. package/src/jobs/redis/trigger-mcp-client-publisher-redis.service.ts +0 -23
  309. package/src/jobs/redis/trigger-mcp-client-queue-options-redis.ts +0 -9
  310. package/src/jobs/redis/trigger-mcp-client-subscriber-redis.service.ts +0 -98
  311. package/src/repository/ai-interaction.repository.ts +0 -17
  312. package/src/services/ai-interaction.service.ts +0 -239
  313. package/src/services/genai/ingest-metadata.service.ts +0 -798
  314. package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +0 -33
  315. package/src/services/genai/r2r-helper.service.ts +0 -37
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core",
3
- "version": "0.1.10-beta.26",
3
+ "version": "0.1.10-beta.28",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -71,6 +71,7 @@
71
71
  "passport-local": "^1.0.0",
72
72
  "passport-microsoft": "^2.1.0",
73
73
  "pg": "^8.11.3",
74
+ "playwright": ">=1.0.0",
74
75
  "pluralize": "^8.0.0",
75
76
  "puppeteer": "^23.2.0",
76
77
  "qs": "^6.12.0",
@@ -80,8 +81,7 @@
80
81
  "ts-morph": "^27.0.2",
81
82
  "twilio": "^5.8.0",
82
83
  "uuid": "^9.0.1",
83
- "xlsx": "^0.18.5",
84
- "playwright": ">=1.0.0"
84
+ "xlsx": "^0.18.5"
85
85
  },
86
86
  "peerDependenciesMeta": {},
87
87
  "peerDependencies": {
@@ -130,7 +130,7 @@
130
130
  "@nestjs/testing": "^10.0.0",
131
131
  "@nestjs/typeorm": "^10.0.1",
132
132
  "@nestjs/websockets": "^10.0.0",
133
- "@solidxai/code-builder": "^0.0.2",
133
+ "@solidxai/code-builder": "^0.1.8",
134
134
  "@types/express": "^4.17.17",
135
135
  "@types/hapi__joi": "^17.1.12",
136
136
  "@types/jest": "^29.5.2",
@@ -28,6 +28,7 @@ export const ERROR_MESSAGES = {
28
28
  ACCESS_DENIED: 'Access denied',
29
29
  INVALID_USER_PROFILE: 'Invalid user profile',
30
30
  GOOGLE_OAUTH_PROFILE_FETCH_FAILED: 'Failed to fetch user profile from Google OAuth service',
31
+ MICROSOFT_ACTIVE_DIRECTORY_OAUTH_PROFILE_FETCH_FAILED: 'Failed to fetch user profile from Microsoft Active Directory OAuth service',
31
32
  LOGOUT_FAILED: 'Logout failed due to an unexpected error.',
32
33
 
33
34
  INVALID_CREDENTIALS: 'Invalid credentials',
@@ -130,4 +131,4 @@ export const ERROR_MESSAGES = {
130
131
  `You do not have permission to import ${model ?? 'these'} records.`,
131
132
  } as Record<string, (model?: string) => string>,
132
133
 
133
- };
134
+ };
@@ -0,0 +1,104 @@
1
+ import {
2
+ Controller,
3
+ Get,
4
+ InternalServerErrorException,
5
+ Query,
6
+ Req,
7
+ Res,
8
+ UseGuards,
9
+ } from "@nestjs/common";
10
+ import { ApiQuery, ApiTags } from "@nestjs/swagger";
11
+ import { Request, Response } from "express";
12
+ import {
13
+ DEFAULT_MICROSOFT_ACTIVE_DIRECTORY_OAUTH_TENANT,
14
+ MicrosoftActiveDirectoryAuthConfiguration,
15
+ isMicrosoftActiveDirectoryOAuthConfigured,
16
+ } from "../helpers/microsoft-active-directory-oauth.helper";
17
+ import { AuthenticationService } from "../services/authentication.service";
18
+ import { SettingService } from "../services/setting.service";
19
+ import { Public } from "src/decorators/public.decorator";
20
+ import { Auth } from "../decorators/auth.decorator";
21
+ import { AuthType } from "../enums/auth-type.enum";
22
+ import { MicrosoftActiveDirectoryOauthGuard } from "../passport-strategies/microsoft-active-directory-oauth.strategy";
23
+ import { UserService } from "../services/user.service";
24
+ import type { SolidCoreSetting } from "../services/settings/default-settings-provider.service";
25
+
26
+ @Auth(AuthType.None)
27
+ @ApiTags("Solid Core")
28
+ @Controller("iam/microsoft-active-directory")
29
+ export class MicrosoftActiveDirectoryAuthenticationController {
30
+ constructor(
31
+ private readonly userService: UserService,
32
+ private readonly authService: AuthenticationService,
33
+ private readonly settingService: SettingService,
34
+ ) {}
35
+
36
+ private async getConfiguration(): Promise<MicrosoftActiveDirectoryAuthConfiguration> {
37
+ return {
38
+ clientID: this.settingService.getConfigValue<SolidCoreSetting>("MICROSOFT_ACTIVE_DIRECTORY_CLIENT_ID"),
39
+ clientSecret: this.settingService.getConfigValue<SolidCoreSetting>("MICROSOFT_ACTIVE_DIRECTORY_CLIENT_SECRET"),
40
+ tenant: this.settingService.getConfigValue<SolidCoreSetting>("MICROSOFT_ACTIVE_DIRECTORY_TENANT_ID" ) ?? DEFAULT_MICROSOFT_ACTIVE_DIRECTORY_OAUTH_TENANT,
41
+ callbackURL: this.settingService.getConfigValue<SolidCoreSetting>("MICROSOFT_ACTIVE_DIRECTORY_CALLBACK_URL"),
42
+ redirectURL: this.settingService.getConfigValue<SolidCoreSetting>("MICROSOFT_ACTIVE_DIRECTORY_REDIRECT_URL"),
43
+ };
44
+ }
45
+
46
+ private buildFrontendRedirectUrl(redirectURL: string, accessCode: string) {
47
+ const separator = redirectURL.includes("?") ? "&" : "?";
48
+ return `${redirectURL}${separator}accessCode=${encodeURIComponent(accessCode)}`;
49
+ }
50
+
51
+ private async validateConfiguration() {
52
+ const config = await this.getConfiguration();
53
+ if (!isMicrosoftActiveDirectoryOAuthConfigured(config)) {
54
+ throw new InternalServerErrorException("Microsoft Active Directory OAuth is not configured");
55
+ }
56
+ return config;
57
+ }
58
+
59
+ @Public()
60
+ @UseGuards(MicrosoftActiveDirectoryOauthGuard)
61
+ @Get("connect")
62
+ async connect() {
63
+ await this.validateConfiguration();
64
+ }
65
+
66
+ @Public()
67
+ @Get("connect/callback")
68
+ @UseGuards(MicrosoftActiveDirectoryOauthGuard)
69
+ async microsoftActiveDirectoryAuthCallback(
70
+ @Req() req: Request,
71
+ @Res() res: Response,
72
+ ) {
73
+ const config = await this.validateConfiguration();
74
+ const user = req.user;
75
+ return res.redirect(
76
+ this.buildFrontendRedirectUrl(config.redirectURL, user["accessCode"]),
77
+ );
78
+ }
79
+
80
+ @Public()
81
+ @Get("dummy-redirect")
82
+ async dummyMicrosoftActiveDirectoryAuthRedirect(
83
+ @Query("accessCode") accessCode,
84
+ ) {
85
+ await this.validateConfiguration();
86
+ const user = await this.userService.findOneByAccessCode(accessCode);
87
+
88
+ if (user) {
89
+ delete user["password"];
90
+ }
91
+
92
+ return user;
93
+ }
94
+
95
+ @Public()
96
+ @Get("authenticate")
97
+ @ApiQuery({ name: "accessCode", required: true, type: String })
98
+ async microsoftActiveDirectoryAuth(
99
+ @Query("accessCode") accessCode: string,
100
+ ) {
101
+ await this.validateConfiguration();
102
+ return this.authService.signInUsingMicrosoftActiveDirectory(accessCode);
103
+ }
104
+ }
@@ -4,8 +4,6 @@ import { ActiveUser } from 'src/decorators/active-user.decorator';
4
4
  import { Public } from 'src/decorators/public.decorator';
5
5
  import { ErrorMapperService } from 'src/helpers/error-mapper.service';
6
6
  import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
7
- import { AiInteractionService } from 'src/services/ai-interaction.service';
8
- import { IngestMetadataService } from 'src/services/genai/ingest-metadata.service';
9
7
  import { MqMessageService } from 'src/services/mq-message.service';
10
8
  import { SolidRegistry } from '../helpers/solid-registry';
11
9
 
@@ -22,10 +20,8 @@ export class ServiceController {
22
20
 
23
21
  constructor(
24
22
  private readonly solidRegistry: SolidRegistry,
25
- private readonly aiInteractionService: AiInteractionService,
26
23
  private readonly mqMessageService: MqMessageService,
27
24
  private readonly errorMapper: ErrorMapperService,
28
- private readonly ingestMetadataService: IngestMetadataService,
29
25
  ) { }
30
26
 
31
27
  @Public()
@@ -94,18 +90,19 @@ export class ServiceController {
94
90
  @ApiBearerAuth("jwt")
95
91
  @Post('seed')
96
92
  async seedData(@Body() seedData: any) {
93
+ const seederName = seedData?.seeder ?? 'ModuleMetadataSeederService';
97
94
  const seeder = this.solidRegistry
98
95
  .getSeeders()
99
- .filter((seeder) => seeder.name === seedData.seeder)
96
+ .filter((seeder) => seeder.name === seederName)
100
97
  .map((seeder) => seeder.instance)
101
98
  .pop();
102
99
  if (!seeder) {
103
- this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);
100
+ this.logger.error(`Seeder service ${seederName} not found. Does your service have a seed() method?`);
104
101
  return;
105
102
  }
106
103
  this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);
107
104
  await seeder.seed();
108
- return { message: `seed data for ${seedData.seeder}` };
105
+ return { message: `seed data for ${seederName}` };
109
106
  }
110
107
 
111
108
  @ApiBearerAuth("jwt")
@@ -4,7 +4,6 @@ import { ApiBearerAuth, ApiTags } from "@nestjs/swagger";
4
4
  import { SolidRegistry } from "src/helpers/solid-registry";
5
5
  import { Auth } from "src/decorators/auth.decorator";
6
6
  import { AuthType } from "src/enums/auth-type.enum";
7
- import { IngestMetadataService } from "src/services/genai/ingest-metadata.service";
8
7
 
9
8
  export class SeedData {
10
9
  seeder: string;
@@ -16,7 +15,6 @@ export class TestController {
16
15
  private readonly logger = new Logger(TestController.name);
17
16
  constructor(
18
17
  private readonly solidRegistry: SolidRegistry,
19
- private readonly ingestMetadataService: IngestMetadataService,
20
18
  ) { }
21
19
 
22
20
  @Auth(AuthType.None)
@@ -37,11 +35,4 @@ export class TestController {
37
35
  return { filename: file.originalname };
38
36
  }
39
37
 
40
- @ApiBearerAuth("jwt")
41
- @Post('mcp/ingest')
42
- @UseInterceptors(FileInterceptor('file'))
43
- async mcpIngest(@UploadedFile() file: Express.Multer.File, @Body() body: any) {
44
- await this.ingestMetadataService.ingest();
45
- return { ok: true };
46
- }
47
38
  }
@@ -2,9 +2,12 @@ import { IsString } from 'class-validator';
2
2
  import { IsNotEmpty, ValidateNested, IsArray, IsOptional } from 'class-validator';
3
3
  import { Type } from 'class-transformer';
4
4
  import { UpdateRoleMetadataDto } from 'src/dtos/update-role-metadata.dto';
5
+ import { ApiProperty } from '@nestjs/swagger';
6
+
5
7
  export class CreatePermissionMetadataDto {
6
8
  @IsNotEmpty()
7
9
  @IsString()
10
+ @ApiProperty()
8
11
  name: string;
9
12
 
10
13
  @IsArray()
@@ -1,5 +1,5 @@
1
1
  import { IsString } from 'class-validator';
2
- import { IsNotEmpty, ValidateNested, IsArray, IsOptional } from 'class-validator';
2
+ import { IsNotEmpty, ValidateNested, IsArray, IsOptional, IsInt } from 'class-validator';
3
3
  import { Type } from 'class-transformer';
4
4
  import { UpdatePermissionMetadataDto } from 'src/dtos/update-permission-metadata.dto';
5
5
  import { UpdateUserDto } from 'src/dtos/update-user.dto';
@@ -66,4 +66,14 @@ export class CreateRoleMetadataDto {
66
66
  @IsOptional()
67
67
  @ApiProperty()
68
68
  menuItemsCommand: string;
69
+
70
+ @IsOptional()
71
+ @IsInt()
72
+ @ApiProperty()
73
+ moduleId: number;
74
+
75
+ @IsString()
76
+ @IsOptional()
77
+ @ApiProperty()
78
+ moduleUserKey: string;
69
79
  }
@@ -20,11 +20,21 @@ export class StandardImportInstructionsResponseDto {
20
20
  description: 'List of date fields for import',
21
21
  })
22
22
  dateFields: string[];
23
+ @ApiProperty({
24
+ type: String,
25
+ description: 'Expected format for date fields during import',
26
+ })
27
+ dateFieldFormat: string;
23
28
  @ApiProperty({
24
29
  type: [String],
25
30
  description: 'List of date-time fields for import',
26
31
  })
27
32
  dateTimeFields: string[];
33
+ @ApiProperty({
34
+ type: String,
35
+ description: 'Expected format for date-time fields during import',
36
+ })
37
+ dateTimeFieldFormat: string;
28
38
  @ApiProperty({
29
39
  type: [String],
30
40
  description: 'List of number fields for import',
@@ -63,4 +73,4 @@ export class RegexFieldInstructionResponseDto {
63
73
  description: 'Regex pattern for the field',
64
74
  })
65
75
  regexPattern: string;
66
- }
76
+ }
@@ -1,14 +1,17 @@
1
1
  import { IsInt, IsOptional, IsString, IsNotEmpty, ValidateNested, IsArray } from 'class-validator';
2
2
  import { Type } from 'class-transformer';
3
3
  import { UpdateRoleMetadataDto } from 'src/dtos/update-role-metadata.dto';
4
+ import { ApiProperty } from '@nestjs/swagger';
5
+
4
6
  export class UpdatePermissionMetadataDto {
5
7
  @IsOptional()
6
8
  @IsInt()
7
9
  id: number;
8
10
 
9
- @IsOptional()
10
11
  @IsNotEmpty()
12
+ @IsOptional()
11
13
  @IsString()
14
+ @ApiProperty()
12
15
  name: string;
13
16
 
14
17
  @IsArray()
@@ -1,4 +1,4 @@
1
- import { IsInt,IsOptional, IsString, IsNotEmpty, ValidateNested, IsArray } from 'class-validator';
1
+ import { IsInt, IsOptional, IsString, IsNotEmpty, ValidateNested, IsArray } from 'class-validator';
2
2
  import { Type } from 'class-transformer';
3
3
  import { UpdatePermissionMetadataDto } from 'src/dtos/update-permission-metadata.dto';
4
4
  import { UpdateUserDto } from 'src/dtos/update-user.dto';
@@ -9,51 +9,71 @@ export class UpdateRoleMetadataDto {
9
9
  @IsOptional()
10
10
  @IsInt()
11
11
  id: number;
12
+
12
13
  @IsNotEmpty()
13
14
  @IsOptional()
14
15
  @IsString()
15
16
  @ApiProperty()
16
17
  name: string;
18
+
17
19
  @IsOptional()
18
20
  @ApiProperty()
19
21
  @IsArray()
20
22
  @ValidateNested({ each: true })
21
23
  @Type(() => UpdatePermissionMetadataDto)
22
24
  permissions: UpdatePermissionMetadataDto[];
25
+
23
26
  @IsOptional()
24
27
  @IsArray()
25
28
  @ApiProperty()
26
29
  permissionsIds: number[];
30
+
27
31
  @IsString()
28
32
  @IsOptional()
29
33
  @ApiProperty()
30
34
  permissionsCommand: string;
35
+
31
36
  @IsOptional()
32
37
  @ApiProperty()
33
38
  @IsArray()
34
39
  @ValidateNested({ each: true })
35
40
  @Type(() => UpdateUserDto)
36
41
  users: UpdateUserDto[];
42
+
37
43
  @IsOptional()
38
44
  @IsArray()
39
45
  @ApiProperty()
40
46
  usersIds: number[];
47
+
41
48
  @IsString()
42
49
  @IsOptional()
43
50
  @ApiProperty()
44
51
  usersCommand: string;
52
+
45
53
  @IsOptional()
46
54
  @ApiProperty()
47
55
  @IsArray()
48
56
  @ValidateNested({ each: true })
49
57
  @Type(() => UpdateMenuItemMetadataDto)
50
58
  menuItems: UpdateMenuItemMetadataDto[];
59
+
51
60
  @IsOptional()
52
61
  @IsArray()
53
62
  @ApiProperty()
54
63
  menuItemsIds: number[];
64
+
55
65
  @IsString()
56
66
  @IsOptional()
57
67
  @ApiProperty()
58
68
  menuItemsCommand: string;
69
+
70
+ @IsOptional()
71
+ @IsInt()
72
+ @ApiProperty()
73
+ moduleId: number;
74
+
75
+ @IsString()
76
+ @IsOptional()
77
+ @ApiProperty()
78
+ moduleUserKey: string;
59
79
  }
@@ -9,6 +9,7 @@ export class ActionMetadata extends CommonEntity {
9
9
  @Column({ name: "name", type: "varchar", unique: true })
10
10
  name: string;
11
11
 
12
+ @Index()
12
13
  @Column({ name: "display_name", type: "varchar" })
13
14
  displayName: string;
14
15
 
@@ -49,6 +49,7 @@ export class AgentEvent extends CommonEntity {
49
49
  @Column({ nullable: true })
50
50
  outputTokens: number;
51
51
 
52
+ @Index()
52
53
  @Column({ nullable: true })
53
54
  modelUsed: string;
54
55
  }
@@ -15,6 +15,7 @@ export class AgentSession extends CommonEntity {
15
15
  @Column({ nullable: true, ...getColumnType('longText') })
16
16
  projectRoot: string;
17
17
 
18
+ @Index()
18
19
  @Column({ })
19
20
  modelName: string;
20
21
 
@@ -11,6 +11,7 @@ export class ChatterMessage extends CommonEntity {
11
11
  @Column({ type: "varchar" })
12
12
  messageType: string; // audit | custom
13
13
 
14
+ @Index()
14
15
  @Column({ type: "varchar" })
15
16
  messageSubType: string; // audit_update | audit_insert | audit_delete | custom | note | task
16
17
 
@@ -33,6 +34,7 @@ export class ChatterMessage extends CommonEntity {
33
34
  @OneToMany(() => ChatterMessageDetails, (chatterMessageDetails) => chatterMessageDetails.chatterMessage, { cascade: true })
34
35
  chatterMessageDetails: ChatterMessageDetails[];
35
36
 
37
+ @Index()
36
38
  @Column({ nullable: true })
37
39
  modelDisplayName: string;
38
40
 
@@ -8,6 +8,7 @@ export class EmailTemplate extends CommonEntity {
8
8
  @Index({ unique: true })
9
9
  @Column({ name: "name", type: "varchar"})
10
10
  name: string;
11
+ @Index()
11
12
  @Column({ name: "display_name", type: "varchar" })
12
13
  displayName: string;
13
14
  @Column({ name: "body", default: '', ...getColumnType('longText') })
@@ -8,10 +8,11 @@ import { ERROR_MESSAGES } from "src/constants/error-messages";
8
8
  @Entity("ss_field_metadata")
9
9
  export class FieldMetadata extends CommonEntity {
10
10
 
11
- // @Index({ unique: true })
11
+ @Index()
12
12
  @Column({ name: "name" })
13
13
  name: string;
14
14
 
15
+ @Index()
15
16
  @Column({ name: "display_name" })
16
17
  displayName: string;
17
18
 
@@ -19,6 +20,7 @@ export class FieldMetadata extends CommonEntity {
19
20
  description: string;
20
21
 
21
22
  /** int, char etc... */
23
+ @Index()
22
24
  @Column({ name: 'type' })
23
25
  type: string;
24
26
 
@@ -75,6 +77,7 @@ export class FieldMetadata extends CommonEntity {
75
77
  @Column({ name: 'media_max_size_kb', nullable: true })
76
78
  mediaMaxSizeKb: number;
77
79
 
80
+ @Index()
78
81
  @ManyToOne(() => MediaStorageProviderMetadata, { onDelete: 'SET NULL' })
79
82
  @JoinColumn({ name: 'media_storage_provider_id' })
80
83
  mediaStorageProvider: MediaStorageProviderMetadata;
@@ -1,16 +1,19 @@
1
1
  import { CommonEntity } from 'src/entities/common.entity'
2
- import { Entity, Column, ManyToOne, JoinColumn, Unique } from 'typeorm'
2
+ import { Entity, Column, Index, ManyToOne, JoinColumn, Unique } from 'typeorm'
3
3
  import { ModuleMetadata } from 'src/entities/module-metadata.entity'
4
4
 
5
5
  @Entity("ss_list_of_values")
6
6
  @Unique(['type', 'value'])
7
7
  export class ListOfValues extends CommonEntity {
8
+ @Index()
8
9
  @Column({ type: "varchar" })
9
10
  type: string;
10
11
 
12
+ @Index()
11
13
  @Column({ type: "varchar" })
12
14
  value: string;
13
15
 
16
+ @Index()
14
17
  @Column({ type: "varchar" })
15
18
  display: string;
16
19
 
@@ -23,6 +26,7 @@ export class ListOfValues extends CommonEntity {
23
26
  @Column({ type: "integer", nullable: true })
24
27
  sequence: number;
25
28
 
29
+ @Index()
26
30
  @ManyToOne(() => ModuleMetadata, { nullable: true })
27
31
  @JoinColumn()
28
32
  module: ModuleMetadata;
@@ -6,6 +6,7 @@ export class Locale extends CommonEntity {
6
6
  @Index({ unique: true })
7
7
  @Column({ type: "varchar" })
8
8
  locale: string;
9
+ @Index()
9
10
  @Column({ type: "varchar" })
10
11
  displayName: string;
11
12
  @Index()
@@ -12,6 +12,7 @@ export class Media extends CommonEntity {
12
12
  @Column({ type: "varchar", nullable: true })
13
13
  relativeUri: string;
14
14
 
15
+ @Index()
15
16
  @Column({ type: "integer", nullable: true })
16
17
  fileSize: number;
17
18
 
@@ -10,6 +10,7 @@ export class MenuItemMetadata extends CommonEntity {
10
10
  @Column({ name: "name", type: "varchar" })
11
11
  name: string;
12
12
 
13
+ @Index()
13
14
  @Column({ name: "display_name", type: "varchar" })
14
15
  displayName: string;
15
16
 
@@ -32,6 +33,7 @@ export class MenuItemMetadata extends CommonEntity {
32
33
  @JoinTable()
33
34
  roles: RoleMetadata[];
34
35
 
36
+ @Index()
35
37
  @Column({ name: "sequence_number", type: "int", nullable: true })
36
38
  sequenceNumber: number;
37
39
 
@@ -18,9 +18,11 @@ export class ModelMetadata extends CommonEntity {
18
18
  @Column({ name: "plural_name" })
19
19
  pluralName: string;
20
20
 
21
+ @Index()
21
22
  @Column({ name: "display_name" })
22
23
  displayName: string;
23
24
 
25
+ @Index()
24
26
  @Column({ name: "description", nullable: true })
25
27
  description: string;
26
28
 
@@ -55,6 +57,7 @@ export class ModelMetadata extends CommonEntity {
55
57
  // 1. Single field.
56
58
  // 2. Composite field.
57
59
  // 3. Auto generated human readable sequence.
60
+ @Index()
58
61
  @ManyToOne(() => FieldMetadata, {})
59
62
  userKeyField: FieldMetadata;
60
63
 
@@ -4,6 +4,7 @@ import { ModelMetadata } from "./model-metadata.entity";
4
4
 
5
5
  @Entity("ss_module_metadata")
6
6
  export class ModuleMetadata extends CommonEntity {
7
+ @Index()
7
8
  @Column({ name: "display_name" })
8
9
  displayName: string;
9
10
 
@@ -17,6 +18,7 @@ export class ModuleMetadata extends CommonEntity {
17
18
  @Column({ nullable: true })
18
19
  menuIconUrl: string;
19
20
 
21
+ @Index()
20
22
  @Column({ nullable: true })
21
23
  menuSequenceNumber: number;
22
24
 
@@ -1,10 +1,10 @@
1
1
  import { CommonEntity } from "src/entities/common.entity"
2
2
  import { Entity, Column, Index, ManyToMany } from "typeorm";
3
3
  import { RoleMetadata } from 'src/entities/role-metadata.entity'
4
+
4
5
  @Entity("ss_permission_metadata")
5
6
  export class PermissionMetadata extends CommonEntity {
6
-
7
- @Index({unique: true})
7
+ @Index({ unique: true })
8
8
  @Column({ name: "name", type: "varchar" })
9
9
  name: string;
10
10
 
@@ -1,11 +1,14 @@
1
1
  import { CommonEntity } from "src/entities/common.entity"
2
- import { Entity, Column, JoinTable, ManyToMany } from "typeorm";
2
+ import { Entity, Column, JoinTable, ManyToMany, Index, JoinColumn, ManyToOne } from "typeorm";
3
3
  import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
4
4
  import { User } from 'src/entities/user.entity';
5
- import { MenuItemMetadata } from 'src/entities/menu-item-metadata.entity'
5
+ import { MenuItemMetadata } from 'src/entities/menu-item-metadata.entity';
6
+ import { ModuleMetadata } from 'src/entities/module-metadata.entity'
7
+
6
8
  @Entity("ss_role_metadata")
7
9
  export class RoleMetadata extends CommonEntity {
8
- @Column({ name: "name", type: "varchar", unique: true })
10
+ @Index({ unique: true })
11
+ @Column({ name: "name", type: "varchar"})
9
12
  name: string;
10
13
 
11
14
  @ManyToMany(() => PermissionMetadata, permissionMetadata => permissionMetadata.roles, { cascade: true })
@@ -17,4 +20,9 @@ export class RoleMetadata extends CommonEntity {
17
20
 
18
21
  @ManyToMany(() => MenuItemMetadata, menuItemMetadata => menuItemMetadata.roles, { cascade: ['insert', 'update'] })
19
22
  menuItems: MenuItemMetadata[];
23
+
24
+ @Index()
25
+ @ManyToOne(() => ModuleMetadata, { onDelete: "SET NULL", nullable: true })
26
+ @JoinColumn()
27
+ module: ModuleMetadata;
20
28
  }
@@ -17,14 +17,17 @@ export class SavedFilters extends CommonEntity {
17
17
  @Column({ nullable: true, default: false })
18
18
  isPrivate: boolean = false;
19
19
 
20
+ @Index()
20
21
  @ManyToOne(() => User, { nullable: true })
21
22
  @JoinColumn()
22
23
  user: User;
23
24
 
25
+ @Index()
24
26
  @ManyToOne(() => ModelMetadata, { nullable: false })
25
27
  @JoinColumn()
26
28
  model: ModelMetadata;
27
29
 
30
+ @Index()
28
31
  @ManyToOne(() => ViewMetadata, { nullable: false })
29
32
  @JoinColumn()
30
33
  view: ViewMetadata;
@@ -11,6 +11,7 @@ export class ScheduledJob extends CommonEntity {
11
11
  @Column({ default: false })
12
12
  isActive: boolean = false;
13
13
 
14
+ @Index()
14
15
  @Column({ type: "varchar" })
15
16
  frequency: string;
16
17
 
@@ -38,6 +39,7 @@ export class ScheduledJob extends CommonEntity {
38
39
  @Column({ type: "varchar", nullable: true })
39
40
  dayOfWeek: string;
40
41
 
42
+ @Index()
41
43
  @Column({ type: "varchar" })
42
44
  job: string;
43
45
 
@@ -10,6 +10,7 @@ export class SecurityRule extends CommonEntity {
10
10
  @Column({ type: "varchar" })
11
11
  name: string;
12
12
 
13
+ @Index()
13
14
  @Column({ type: "varchar" })
14
15
  description: string;
15
16
 
@@ -7,10 +7,12 @@ export class SmsTemplate extends CommonEntity {
7
7
  @Index({ unique: true })
8
8
  @Column({ name: "name", type: "varchar" })
9
9
  name: string;
10
+ @Index()
10
11
  @Column({ name: "display_name", type: "varchar" })
11
12
  displayName: string;
12
13
  @Column({ name: "body", ...getColumnType('longText'), nullable: true })
13
14
  body: string;
15
+ @Index()
14
16
  @Column({ type: "varchar", nullable: true })
15
17
  smsProviderTemplateId: string;
16
18
  @Column({ name: "description", nullable: true })