@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.
- package/.claude/settings.local.json +15 -0
- package/CLAUDE.md +26 -0
- package/MICROSOFT_ACTIVE_DIRECTORY_OAUTH_FLOW.md +616 -0
- package/ai-interaction-cleanup.sql +53 -0
- package/dist/constants/error-messages.d.ts +1 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +1 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/microsoft-active-directory-authentication.controller.d.ts +28 -0
- package/dist/controllers/microsoft-active-directory-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/microsoft-active-directory-authentication.controller.js +122 -0
- package/dist/controllers/microsoft-active-directory-authentication.controller.js.map +1 -0
- package/dist/controllers/service.controller.d.ts +1 -5
- package/dist/controllers/service.controller.d.ts.map +1 -1
- package/dist/controllers/service.controller.js +6 -11
- package/dist/controllers/service.controller.js.map +1 -1
- package/dist/controllers/test.controller.d.ts +1 -6
- package/dist/controllers/test.controller.d.ts.map +1 -1
- package/dist/controllers/test.controller.js +2 -20
- package/dist/controllers/test.controller.js.map +1 -1
- package/dist/dtos/create-permission-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-permission-metadata.dto.js +2 -0
- package/dist/dtos/create-permission-metadata.dto.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts +2 -0
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +13 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/import-instructions.dto.d.ts +2 -0
- package/dist/dtos/import-instructions.dto.d.ts.map +1 -1
- package/dist/dtos/import-instructions.dto.js +15 -1
- package/dist/dtos/import-instructions.dto.js.map +1 -1
- package/dist/dtos/update-permission-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-permission-metadata.dto.js +3 -1
- package/dist/dtos/update-permission-metadata.dto.js.map +1 -1
- package/dist/dtos/update-role-metadata.dto.d.ts +2 -0
- package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-role-metadata.dto.js +13 -1
- package/dist/dtos/update-role-metadata.dto.js.map +1 -1
- package/dist/entities/action-metadata.entity.d.ts.map +1 -1
- package/dist/entities/action-metadata.entity.js +1 -0
- package/dist/entities/action-metadata.entity.js.map +1 -1
- package/dist/entities/agent-event.entity.d.ts.map +1 -1
- package/dist/entities/agent-event.entity.js +1 -0
- package/dist/entities/agent-event.entity.js.map +1 -1
- package/dist/entities/agent-session.entity.d.ts.map +1 -1
- package/dist/entities/agent-session.entity.js +1 -0
- package/dist/entities/agent-session.entity.js.map +1 -1
- package/dist/entities/chatter-message.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message.entity.js +2 -0
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/email-template.entity.d.ts.map +1 -1
- package/dist/entities/email-template.entity.js +1 -0
- package/dist/entities/email-template.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +4 -0
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/list-of-values.entity.d.ts.map +1 -1
- package/dist/entities/list-of-values.entity.js +4 -0
- package/dist/entities/list-of-values.entity.js.map +1 -1
- package/dist/entities/locale.entity.d.ts.map +1 -1
- package/dist/entities/locale.entity.js +1 -0
- package/dist/entities/locale.entity.js.map +1 -1
- package/dist/entities/media.entity.d.ts.map +1 -1
- package/dist/entities/media.entity.js +1 -0
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js +2 -0
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +3 -0
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/module-metadata.entity.d.ts.map +1 -1
- package/dist/entities/module-metadata.entity.js +2 -0
- package/dist/entities/module-metadata.entity.js.map +1 -1
- package/dist/entities/permission-metadata.entity.d.ts.map +1 -1
- package/dist/entities/permission-metadata.entity.js.map +1 -1
- package/dist/entities/role-metadata.entity.d.ts +2 -0
- package/dist/entities/role-metadata.entity.d.ts.map +1 -1
- package/dist/entities/role-metadata.entity.js +10 -2
- package/dist/entities/role-metadata.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.d.ts.map +1 -1
- package/dist/entities/saved-filters.entity.js +3 -0
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
- package/dist/entities/scheduled-job.entity.js +2 -0
- package/dist/entities/scheduled-job.entity.js.map +1 -1
- package/dist/entities/security-rule.entity.d.ts.map +1 -1
- package/dist/entities/security-rule.entity.js +1 -0
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/entities/sms-template.entity.d.ts.map +1 -1
- package/dist/entities/sms-template.entity.js +2 -0
- package/dist/entities/sms-template.entity.js.map +1 -1
- package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
- package/dist/entities/user-activity-history.entity.js +1 -0
- package/dist/entities/user-activity-history.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +3 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +15 -1
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.d.ts.map +1 -1
- package/dist/entities/view-metadata.entity.js +2 -0
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/helpers/microsoft-active-directory-oauth.helper.d.ts +34 -0
- package/dist/helpers/microsoft-active-directory-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/microsoft-active-directory-oauth.helper.js +43 -0
- package/dist/helpers/microsoft-active-directory-oauth.helper.js.map +1 -0
- package/dist/helpers/module.helper.js +0 -5
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/user-helper.d.ts.map +1 -1
- package/dist/helpers/user-helper.js +4 -0
- package/dist/helpers/user-helper.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +0 -8
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.d.ts +14 -0
- package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.js +67 -0
- package/dist/passport-strategies/microsoft-active-directory-oauth.strategy.js.map +1 -0
- package/dist/seeders/seed-data/solid-core-metadata.json +317 -814
- package/dist/services/authentication.service.d.ts +12 -0
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +64 -0
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +11 -3
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +6 -0
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +100 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +56 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/user.service.d.ts +2 -0
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +46 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +4 -29
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
- package/dist/subscribers/security-rule.subscriber.js +1 -1
- package/dist/subscribers/security-rule.subscriber.js.map +1 -1
- package/package.json +4 -4
- package/src/constants/error-messages.ts +2 -1
- package/src/controllers/microsoft-active-directory-authentication.controller.ts +104 -0
- package/src/controllers/service.controller.ts +4 -7
- package/src/controllers/test.controller.ts +0 -9
- package/src/dtos/create-permission-metadata.dto.ts +3 -0
- package/src/dtos/create-role-metadata.dto.ts +11 -1
- package/src/dtos/import-instructions.dto.ts +11 -1
- package/src/dtos/update-permission-metadata.dto.ts +4 -1
- package/src/dtos/update-role-metadata.dto.ts +21 -1
- package/src/entities/action-metadata.entity.ts +1 -0
- package/src/entities/agent-event.entity.ts +1 -0
- package/src/entities/agent-session.entity.ts +1 -0
- package/src/entities/chatter-message.entity.ts +2 -0
- package/src/entities/email-template.entity.ts +1 -0
- package/src/entities/field-metadata.entity.ts +4 -1
- package/src/entities/list-of-values.entity.ts +5 -1
- package/src/entities/locale.entity.ts +1 -0
- package/src/entities/media.entity.ts +1 -0
- package/src/entities/menu-item-metadata.entity.ts +2 -0
- package/src/entities/model-metadata.entity.ts +3 -0
- package/src/entities/module-metadata.entity.ts +2 -0
- package/src/entities/permission-metadata.entity.ts +2 -2
- package/src/entities/role-metadata.entity.ts +11 -3
- package/src/entities/saved-filters.entity.ts +3 -0
- package/src/entities/scheduled-job.entity.ts +2 -0
- package/src/entities/security-rule.entity.ts +1 -0
- package/src/entities/sms-template.entity.ts +2 -0
- package/src/entities/user-activity-history.entity.ts +1 -0
- package/src/entities/user.entity.ts +15 -1
- package/src/entities/view-metadata.entity.ts +2 -0
- package/src/helpers/microsoft-active-directory-oauth.helper.ts +83 -0
- package/src/helpers/module.helper.ts +5 -5
- package/src/helpers/user-helper.ts +5 -1
- package/src/index.ts +1 -5
- package/src/interfaces.ts +0 -8
- package/src/passport-strategies/microsoft-active-directory-oauth.strategy.ts +63 -0
- package/src/seeders/seed-data/solid-core-metadata.json +317 -814
- package/src/services/1.js +6 -0
- package/src/services/authentication.service.ts +78 -0
- package/src/services/crud-helper.service.ts +9 -3
- package/src/services/import-transaction.service.ts +11 -1
- package/src/services/settings/default-settings-provider.service.ts +59 -0
- package/src/services/user.service.ts +61 -0
- package/src/solid-core.module.ts +4 -31
- package/src/subscribers/scheduled-job.subscriber.ts +1 -1
- package/src/subscribers/security-rule.subscriber.ts +1 -1
- package/dist/commands/ingest.command.d.ts +0 -16
- package/dist/commands/ingest.command.d.ts.map +0 -1
- package/dist/commands/ingest.command.js +0 -50
- package/dist/commands/ingest.command.js.map +0 -1
- package/dist/controllers/ai-interaction.controller.d.ts +0 -29
- package/dist/controllers/ai-interaction.controller.d.ts.map +0 -1
- package/dist/controllers/ai-interaction.controller.js +0 -218
- package/dist/controllers/ai-interaction.controller.js.map +0 -1
- package/dist/dtos/create-ai-interaction.dto.d.ts +0 -23
- package/dist/dtos/create-ai-interaction.dto.d.ts.map +0 -1
- package/dist/dtos/create-ai-interaction.dto.js +0 -149
- package/dist/dtos/create-ai-interaction.dto.js.map +0 -1
- package/dist/dtos/invoke-ai-prompt.dto.d.ts +0 -5
- package/dist/dtos/invoke-ai-prompt.dto.d.ts.map +0 -1
- package/dist/dtos/invoke-ai-prompt.dto.js +0 -30
- package/dist/dtos/invoke-ai-prompt.dto.js.map +0 -1
- package/dist/dtos/update-ai-interaction.dto.d.ts +0 -24
- package/dist/dtos/update-ai-interaction.dto.d.ts.map +0 -1
- package/dist/dtos/update-ai-interaction.dto.js +0 -150
- package/dist/dtos/update-ai-interaction.dto.js.map +0 -1
- package/dist/entities/ai-interaction.entity.d.ts +0 -24
- package/dist/entities/ai-interaction.entity.d.ts.map +0 -1
- package/dist/entities/ai-interaction.entity.js +0 -116
- package/dist/entities/ai-interaction.entity.js.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +0 -11
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +0 -39
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +0 -8
- package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-queue-options.js +0 -10
- package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +0 -25
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +0 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +0 -222
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +0 -11
- package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js +0 -39
- package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.js.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts +0 -8
- package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.d.ts.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js +0 -10
- package/dist/jobs/rabbitmq/trigger-mcp-client-queue-options.js.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +0 -18
- package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js +0 -103
- package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.js.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +0 -11
- package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js +0 -39
- package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.js.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts +0 -8
- package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.d.ts.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js +0 -10
- package/dist/jobs/redis/trigger-mcp-client-queue-options-redis.js.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +0 -18
- package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts.map +0 -1
- package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js +0 -103
- package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.js.map +0 -1
- package/dist/repository/ai-interaction.repository.d.ts +0 -12
- package/dist/repository/ai-interaction.repository.d.ts.map +0 -1
- package/dist/repository/ai-interaction.repository.js +0 -34
- package/dist/repository/ai-interaction.repository.js.map +0 -1
- package/dist/services/ai-interaction.service.d.ts +0 -23
- package/dist/services/ai-interaction.service.d.ts.map +0 -1
- package/dist/services/ai-interaction.service.js +0 -217
- package/dist/services/ai-interaction.service.js.map +0 -1
- package/dist/services/genai/ingest-metadata.service.d.ts +0 -38
- package/dist/services/genai/ingest-metadata.service.d.ts.map +0 -1
- package/dist/services/genai/ingest-metadata.service.js +0 -542
- package/dist/services/genai/ingest-metadata.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +0 -9
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +0 -39
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +0 -1
- package/dist/services/genai/r2r-helper.service.d.ts +0 -9
- package/dist/services/genai/r2r-helper.service.d.ts.map +0 -1
- package/dist/services/genai/r2r-helper.service.js +0 -40
- package/dist/services/genai/r2r-helper.service.js.map +0 -1
- package/dist-tests/api/authenticate.spec.js +0 -119
- package/dist-tests/api/authenticate.spec.js.map +0 -1
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
- package/dist-tests/api/ping.spec.js +0 -21
- package/dist-tests/api/ping.spec.js.map +0 -1
- package/dist-tests/helpers/auth.js +0 -41
- package/dist-tests/helpers/auth.js.map +0 -1
- package/dist-tests/helpers/env.js +0 -11
- package/dist-tests/helpers/env.js.map +0 -1
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
- package/docs/grouping-enhancements.md +0 -89
- package/docs/java-spring/README.md +0 -3
- package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
- package/docs/module-package-import-handoff.md +0 -691
- package/docs/seed-changes.md +0 -65
- package/docs/test-data-workflow.md +0 -200
- package/docs/type-declaration-import-issue.md +0 -24
- package/src/commands/ingest.command.ts +0 -36
- package/src/controllers/ai-interaction.controller.ts +0 -112
- package/src/dtos/create-ai-interaction.dto.ts +0 -89
- package/src/dtos/invoke-ai-prompt.dto.ts +0 -10
- package/src/dtos/update-ai-interaction.dto.ts +0 -93
- package/src/entities/ai-interaction.entity.ts +0 -71
- package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +0 -22
- package/src/jobs/database/trigger-mcp-client-queue-options.ts +0 -9
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +0 -278
- package/src/jobs/rabbitmq/trigger-mcp-client-publisher.service.ts +0 -22
- package/src/jobs/rabbitmq/trigger-mcp-client-queue-options.ts +0 -9
- package/src/jobs/rabbitmq/trigger-mcp-client-subscriber.service.ts +0 -104
- package/src/jobs/redis/trigger-mcp-client-publisher-redis.service.ts +0 -23
- package/src/jobs/redis/trigger-mcp-client-queue-options-redis.ts +0 -9
- package/src/jobs/redis/trigger-mcp-client-subscriber-redis.service.ts +0 -98
- package/src/repository/ai-interaction.repository.ts +0 -17
- package/src/services/ai-interaction.service.ts +0 -239
- package/src/services/genai/ingest-metadata.service.ts +0 -798
- package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +0 -33
- 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.
|
|
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.
|
|
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 ===
|
|
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 ${
|
|
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 ${
|
|
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
|
}
|
|
@@ -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
|
-
|
|
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;
|
|
@@ -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
|
-
@
|
|
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
|
|
|
@@ -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 })
|