@solidxai/core 0.1.10-beta.25 → 0.1.10-beta.27
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/ai-interaction-cleanup.sql +53 -0
- package/dist/controllers/action-metadata.controller.d.ts +1 -20
- package/dist/controllers/action-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/agent-event.controller.d.ts +1 -20
- package/dist/controllers/agent-event.controller.d.ts.map +1 -1
- package/dist/controllers/agent-session.controller.d.ts +1 -20
- package/dist/controllers/agent-session.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message-details.controller.d.ts +1 -20
- package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +1 -20
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -20
- package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
- package/dist/controllers/email-template.controller.d.ts +1 -20
- package/dist/controllers/email-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-template.controller.d.ts +1 -20
- package/dist/controllers/export-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-transaction.controller.d.ts +1 -20
- package/dist/controllers/export-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -20
- package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +1 -20
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/list-of-values.controller.d.ts +1 -20
- package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
- package/dist/controllers/locale.controller.d.ts +1 -20
- package/dist/controllers/locale.controller.d.ts.map +1 -1
- package/dist/controllers/mcp-audit-log.controller.d.ts +1 -20
- package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -1
- package/dist/controllers/media.controller.d.ts +1 -20
- package/dist/controllers/media.controller.d.ts.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.d.ts +1 -20
- package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +10 -30
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +2 -2
- package/dist/controllers/model-sequence.controller.d.ts +1 -20
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata-explorer.controller.d.ts +171 -0
- package/dist/controllers/module-metadata-explorer.controller.d.ts.map +1 -0
- package/dist/controllers/module-metadata-explorer.controller.js +143 -0
- package/dist/controllers/module-metadata-explorer.controller.js.map +1 -0
- package/dist/controllers/module-metadata.controller.d.ts +5 -0
- package/dist/controllers/module-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata.controller.js +12 -0
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/module-package.controller.d.ts +622 -0
- package/dist/controllers/module-package.controller.d.ts.map +1 -0
- package/dist/controllers/module-package.controller.js +150 -0
- package/dist/controllers/module-package.controller.js.map +1 -0
- package/dist/controllers/mq-message-queue.controller.d.ts +1 -20
- package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -1
- package/dist/controllers/mq-message.controller.d.ts +1 -20
- package/dist/controllers/mq-message.controller.d.ts.map +1 -1
- package/dist/controllers/permission-metadata.controller.d.ts +1 -20
- package/dist/controllers/permission-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -20
- package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/saved-filters.controller.d.ts +1 -20
- package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +1 -20
- package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
- package/dist/controllers/security-rule.controller.d.ts +1 -20
- package/dist/controllers/security-rule.controller.d.ts.map +1 -1
- 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/sms-template.controller.d.ts +1 -20
- package/dist/controllers/sms-template.controller.d.ts.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/controllers/user-activity-history.controller.d.ts +1 -20
- package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
- package/dist/controllers/user-view-metadata.controller.d.ts +1 -20
- package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/user.controller.d.ts +1 -20
- package/dist/controllers/user.controller.d.ts.map +1 -1
- package/dist/controllers/view-metadata.controller.d.ts +1 -20
- package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
- package/dist/dtos/confirm-module-package-import.dto.d.ts +4 -0
- package/dist/dtos/confirm-module-package-import.dto.d.ts.map +1 -0
- package/dist/dtos/confirm-module-package-import.dto.js +34 -0
- package/dist/dtos/confirm-module-package-import.dto.js.map +1 -0
- 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/metadata-explorer-references-query.dto.d.ts +10 -0
- package/dist/dtos/metadata-explorer-references-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js +69 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts +8 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js +55 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts +4 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts.map +1 -0
- package/dist/dtos/{invoke-ai-prompt.dto.js → metadata-explorer-write.dto.js} +12 -12
- package/dist/dtos/metadata-explorer-write.dto.js.map +1 -0
- package/dist/dtos/run-module-package-build.dto.d.ts +5 -0
- package/dist/dtos/run-module-package-build.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-build.dto.js +38 -0
- package/dist/dtos/run-module-package-build.dto.js.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts +4 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.js +34 -0
- package/dist/dtos/run-module-package-seed.dto.js.map +1 -0
- 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.map +1 -1
- package/dist/entities/user.entity.js +2 -0
- 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/command.service.js +1 -1
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +2 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +14 -12
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +6 -6
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/typeorm-migration-helpers.d.ts +12 -0
- package/dist/helpers/typeorm-migration-helpers.d.ts.map +1 -0
- package/dist/helpers/typeorm-migration-helpers.js +119 -0
- package/dist/helpers/typeorm-migration-helpers.js.map +1 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -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/seeders/module-metadata-seeder.service.d.ts +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +57 -38
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.js +1 -1
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +2674 -1913
- package/dist/services/crud-helper.service.d.ts +18 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +70 -3
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -21
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +9 -75
- package/dist/services/crud.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/media.service.d.ts +1 -20
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +31 -2
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +5 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +15 -30
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +249 -29
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata-explorer.service.d.ts +161 -0
- package/dist/services/module-metadata-explorer.service.d.ts.map +1 -0
- package/dist/services/module-metadata-explorer.service.js +485 -0
- package/dist/services/module-metadata-explorer.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +7 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +121 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/module-package.service.d.ts +266 -0
- package/dist/services/module-package.service.d.ts.map +1 -0
- package/dist/services/module-package.service.js +980 -0
- package/dist/services/module-package.service.js.map +1 -0
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +10 -31
- 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 +5 -4
- package/src/controllers/module-metadata-explorer.controller.ts +83 -0
- package/src/controllers/module-metadata.controller.ts +6 -0
- package/src/controllers/module-package.controller.ts +102 -0
- package/src/controllers/service.controller.ts +4 -7
- package/src/controllers/test.controller.ts +0 -9
- package/src/dtos/confirm-module-package-import.dto.ts +12 -0
- 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/metadata-explorer-references-query.dto.ts +39 -0
- package/src/dtos/metadata-explorer-search-query.dto.ts +28 -0
- package/src/dtos/metadata-explorer-write.dto.ts +11 -0
- package/src/dtos/run-module-package-build.dto.ts +14 -0
- package/src/dtos/run-module-package-seed.dto.ts +12 -0
- 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 +2 -0
- package/src/entities/view-metadata.entity.ts +2 -0
- package/src/helpers/command.service.ts +1 -1
- package/src/helpers/module-metadata-helper.service.ts +19 -21
- package/src/helpers/module.helper.ts +12 -9
- package/src/helpers/typeorm-migration-helpers.ts +163 -0
- package/src/index.ts +8 -5
- package/src/interfaces.ts +0 -8
- package/src/seeders/module-metadata-seeder.service.ts +63 -38
- package/src/seeders/module-test-data.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +2675 -1914
- package/src/services/crud-helper.service.ts +81 -3
- package/src/services/crud.service.ts +11 -104
- package/src/services/dashboard-providers/README.md +1 -1
- package/src/services/import-transaction.service.ts +11 -1
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +37 -2
- package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -1
- package/src/services/model-metadata.service.ts +302 -98
- package/src/services/module-metadata-explorer.service.ts +670 -0
- package/src/services/module-metadata.service.ts +136 -10
- package/src/services/module-package.service.ts +1171 -0
- package/src/solid-core.module.ts +10 -33
- 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 -48
- 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.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/database/database-bootstrap.service.d.ts +0 -12
- package/dist/services/database/database-bootstrap.service.d.ts.map +0 -1
- package/dist/services/database/database-bootstrap.service.js +0 -115
- package/dist/services/database/database-bootstrap.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/sql/default/mariadb/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/mssql/proc_CleanupModuleMetadata.sql +0 -78
- package/sql/default/mysql/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mysql/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/postgres/proc_CleanupModelMetadata.sql +0 -148
- package/sql/default/postgres/proc_CleanupModuleMetadata.sql +0 -50
- package/sql/default/postgres/scratchpad.sql.txt +0 -12
- 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/database/database-bootstrap.service.ts +0 -91
- 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
|
@@ -284,8 +284,10 @@ export class CrudHelperService {
|
|
|
284
284
|
const value = orderOptions[key] as 'ASC' | 'DESC';
|
|
285
285
|
const field = String(key);
|
|
286
286
|
if (field.includes('.')) {
|
|
287
|
-
const { alias, property } = this.ensureRelationPathJoined(qb, entityAlias, field.split('.'));
|
|
288
|
-
|
|
287
|
+
const { alias, property, created } = this.ensureRelationPathJoined(qb, entityAlias, field.split('.'));
|
|
288
|
+
const orderColumn = `${alias}.${property}`;
|
|
289
|
+
qb.addOrderBy(orderColumn, value);
|
|
290
|
+
if (created) qb.addSelect(orderColumn);
|
|
289
291
|
} else {
|
|
290
292
|
qb.addOrderBy(`${entityAlias}.${field}`, value);
|
|
291
293
|
}
|
|
@@ -347,6 +349,7 @@ export class CrudHelperService {
|
|
|
347
349
|
qb.expressionMap?.aliases?.find(a => a.metadata)?.name ||
|
|
348
350
|
qb.expressionMap?.aliases?.[0]?.name;
|
|
349
351
|
let parentAlias = mainAlias || rootAlias;
|
|
352
|
+
let leafJoinCreated = false;
|
|
350
353
|
for (let i = 0; i < pathParts.length - 1; i++) {
|
|
351
354
|
const part = pathParts[i];
|
|
352
355
|
const joinProperty = `${parentAlias}.${part}`;
|
|
@@ -354,10 +357,13 @@ export class CrudHelperService {
|
|
|
354
357
|
const joinAlias = existingAlias ?? this.sanitizeAlias(`${parentAlias}_${part}`);
|
|
355
358
|
if (!existingAlias && !this.isRelationJoined(qb, joinProperty) && !this.isAliasJoined(qb, joinAlias)) {
|
|
356
359
|
qb.leftJoin(joinProperty, joinAlias);
|
|
360
|
+
leafJoinCreated = true;
|
|
361
|
+
} else {
|
|
362
|
+
leafJoinCreated = false;
|
|
357
363
|
}
|
|
358
364
|
parentAlias = joinAlias;
|
|
359
365
|
}
|
|
360
|
-
return { alias: parentAlias, property: pathParts[pathParts.length - 1] };
|
|
366
|
+
return { alias: parentAlias, property: pathParts[pathParts.length - 1], created: leafJoinCreated };
|
|
361
367
|
}
|
|
362
368
|
|
|
363
369
|
private getDriver(qb: SelectQueryBuilder<any>) {
|
|
@@ -749,4 +755,76 @@ export class CrudHelperService {
|
|
|
749
755
|
return matchingPermssions.length > 0
|
|
750
756
|
}
|
|
751
757
|
|
|
758
|
+
pagedResponse<T>(offset: number | undefined, limit: number | undefined, count: number, entities: T[]) {
|
|
759
|
+
const safeLimit = limit ?? count ?? 0;
|
|
760
|
+
const safeOffset = offset ?? 0;
|
|
761
|
+
const currentPage = safeLimit ? Math.floor(safeOffset / safeLimit) + 1 : 1;
|
|
762
|
+
const totalPages = safeLimit ? Math.ceil(count / safeLimit) : 1;
|
|
763
|
+
const nextPage = safeLimit && currentPage < totalPages ? currentPage + 1 : null;
|
|
764
|
+
const prevPage = safeLimit && currentPage > 1 ? currentPage - 1 : null;
|
|
765
|
+
return {
|
|
766
|
+
meta: {
|
|
767
|
+
totalRecords: count,
|
|
768
|
+
currentPage,
|
|
769
|
+
nextPage,
|
|
770
|
+
prevPage,
|
|
771
|
+
totalPages,
|
|
772
|
+
perPage: safeLimit ? +safeLimit : 0,
|
|
773
|
+
},
|
|
774
|
+
records: entities,
|
|
775
|
+
};
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
async executeGroupPipeline<T>(
|
|
779
|
+
filterQb: SelectQueryBuilder<T>,
|
|
780
|
+
basicFilterDto: BasicFilterDto,
|
|
781
|
+
alias: string,
|
|
782
|
+
createQbFn: () => Promise<SelectQueryBuilder<T>>,
|
|
783
|
+
postProcessEntities?: (entities: T[]) => Promise<void>
|
|
784
|
+
): Promise<{ meta: { totalRecords: number }; groupMeta: any[]; groupRecords: any[] }> {
|
|
785
|
+
const groupByFields = this.normalize(basicFilterDto.groupBy);
|
|
786
|
+
if (!groupByFields.length) throw new BadRequestException(ERROR_MESSAGES.INVALID_GROUP_BY_COUNT);
|
|
787
|
+
|
|
788
|
+
if (basicFilterDto.populateGroup) {
|
|
789
|
+
const hasRelationGroup = groupByFields.some(f => f.includes('.'));
|
|
790
|
+
if (hasRelationGroup) throw new BadRequestException('populateGroup is not supported when grouping on relation fields. Fetch group metadata first and retrieve records in a separate call.');
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
const { aliasMap: groupAliasMap, formatMap: groupFormatMap, expressionMap: groupExpressionMap } =
|
|
794
|
+
this.applyGroupBySelections(filterQb, groupByFields, alias);
|
|
795
|
+
const aggregateAliasMap = this.applyAggregates(filterQb, basicFilterDto.aggregates, alias);
|
|
796
|
+
this.applyGroupSortingAndPagination(filterQb, basicFilterDto.sort, { ...groupAliasMap, ...aggregateAliasMap }, basicFilterDto.limit, basicFilterDto.offset);
|
|
797
|
+
|
|
798
|
+
const groupByResult = await filterQb.getRawMany();
|
|
799
|
+
const totalGroups = await this.countGroups(filterQb);
|
|
800
|
+
const aggregateAliasSet = new Set(Object.values(aggregateAliasMap));
|
|
801
|
+
|
|
802
|
+
const groupMeta = [];
|
|
803
|
+
const groupRecords = [];
|
|
804
|
+
|
|
805
|
+
for (const group of groupByResult) {
|
|
806
|
+
groupMeta.push(this.createGroupMeta(group, aggregateAliasSet, groupByFields, groupAliasMap, groupFormatMap));
|
|
807
|
+
|
|
808
|
+
if (basicFilterDto.populateGroup) {
|
|
809
|
+
let groupQb = await createQbFn();
|
|
810
|
+
const { groupBy: _gb, aggregates: _agg, ...rest } = basicFilterDto;
|
|
811
|
+
const groupFilterDto: BasicFilterDto = {
|
|
812
|
+
...rest,
|
|
813
|
+
...basicFilterDto.groupFilter,
|
|
814
|
+
groupBy: undefined,
|
|
815
|
+
aggregates: undefined,
|
|
816
|
+
sort: basicFilterDto.groupFilter?.sort,
|
|
817
|
+
};
|
|
818
|
+
groupQb = this.buildFilterQuery(groupQb, groupFilterDto, alias);
|
|
819
|
+
groupQb = this.buildGroupByRecordsQuery(groupQb, group, alias, groupAliasMap, aggregateAliasMap, groupExpressionMap);
|
|
820
|
+
const [entities, count] = await groupQb.getManyAndCount();
|
|
821
|
+
if (postProcessEntities) await postProcessEntities(entities);
|
|
822
|
+
const groupData = this.pagedResponse(basicFilterDto.groupFilter?.offset, basicFilterDto.groupFilter?.limit, count, entities);
|
|
823
|
+
groupRecords.push(this.createGroupRecords(group, aggregateAliasSet, groupData, groupByFields, groupAliasMap, groupFormatMap));
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
return { meta: { totalRecords: totalGroups }, groupMeta, groupRecords };
|
|
828
|
+
}
|
|
829
|
+
|
|
752
830
|
}
|
|
@@ -41,7 +41,6 @@ import { SolidRegistry } from "src/helpers/solid-registry";
|
|
|
41
41
|
import { getMediaStorageProvider } from "./mediaStorageProviders";
|
|
42
42
|
import { ModelMetadataService } from "./model-metadata.service";
|
|
43
43
|
import { RequestContextService } from "./request-context.service";
|
|
44
|
-
import { BasicGroupFilterDto } from "src/dtos/basic-group-filters.dto";
|
|
45
44
|
|
|
46
45
|
|
|
47
46
|
export class CRUDService<T extends CommonEntity> { // Add two generic value i.e Person,CreatePersonDto, so we get the proper types in our service
|
|
@@ -480,10 +479,10 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
480
479
|
return false; // If it is not a partial update, then do not skip computation
|
|
481
480
|
}
|
|
482
481
|
|
|
483
|
-
async find(basicFilterDto: BasicFilterDto, solidRequestContext: any = {}) {
|
|
482
|
+
async find(basicFilterDto: BasicFilterDto, solidRequestContext: any = {}): Promise<any> {
|
|
484
483
|
const alias = 'entity';
|
|
485
484
|
// Extract the required keys from the input query
|
|
486
|
-
let { limit, offset, populateMedia
|
|
485
|
+
let { limit, offset, populateMedia } = basicFilterDto;
|
|
487
486
|
const populateUserIdFields = this.crudHelperService.extractUserIdFieldsFromPopulate(basicFilterDto.populate);
|
|
488
487
|
|
|
489
488
|
const { singularName, internationalisation, draftPublishWorkflow } = await this.loadModel();
|
|
@@ -502,41 +501,19 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
502
501
|
// Create above query on pincode table using query builder
|
|
503
502
|
var qb: SelectQueryBuilder<T> = await this.repo.createSecurityRuleAwareQueryBuilder(alias)
|
|
504
503
|
|
|
505
|
-
if (basicFilterDto.groupBy) {
|
|
504
|
+
if (basicFilterDto.groupBy?.length) {
|
|
506
505
|
const groupFilterQb = (internationalisation && draftPublishWorkflow)
|
|
507
506
|
? this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, internationalisation, draftPublishWorkflow, this.moduleRef, FilterCombinator.AND, false, false)
|
|
508
507
|
: this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, undefined, undefined, undefined, FilterCombinator.AND, false, false);
|
|
509
508
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
const hasRelationGroup = groupByFields.some(field => field.includes('.'));
|
|
517
|
-
if (hasRelationGroup) {
|
|
518
|
-
throw new BadRequestException('populateGroup is not supported when grouping on relation fields. Fetch group metadata first and retrieve records in a separate call.');
|
|
509
|
+
return this.crudHelperService.executeGroupPipeline(
|
|
510
|
+
groupFilterQb, basicFilterDto, alias,
|
|
511
|
+
() => this.repo.createSecurityRuleAwareQueryBuilder(alias),
|
|
512
|
+
async (entities) => {
|
|
513
|
+
if (populateUserIdFields?.length) await this.handlePopulateUserIdFields(populateUserIdFields, entities);
|
|
514
|
+
if (populateMedia?.length) await this.handlePopulateMedia(populateMedia, entities);
|
|
519
515
|
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
const { aliasMap: groupAliasMap, formatMap: groupFormatMap, expressionMap: groupExpressionMap } = this.crudHelperService.applyGroupBySelections(groupFilterQb, groupByFields, alias);
|
|
523
|
-
const aggregateAliasMap = this.crudHelperService.applyAggregates(groupFilterQb, basicFilterDto.aggregates, alias);
|
|
524
|
-
const sortAliasMap = { ...groupAliasMap, ...aggregateAliasMap };
|
|
525
|
-
this.crudHelperService.applyGroupSortingAndPagination(groupFilterQb, basicFilterDto.sort, sortAliasMap, limit, offset);
|
|
526
|
-
|
|
527
|
-
const groupByResult = await groupFilterQb.getRawMany();
|
|
528
|
-
const totalGroups = await this.crudHelperService.countGroups(groupFilterQb);
|
|
529
|
-
|
|
530
|
-
const groupByFieldsOrdered = this.crudHelperService.normalize(basicFilterDto.groupBy || []);
|
|
531
|
-
const { groupMeta, groupRecords } = await this.handleGroupFind(groupByResult, groupFilter, populateGroup, alias, populateUserIdFields, populateMedia, basicFilterDto, groupAliasMap, aggregateAliasMap, groupByFieldsOrdered, groupFormatMap, groupExpressionMap);
|
|
532
|
-
|
|
533
|
-
return {
|
|
534
|
-
meta: {
|
|
535
|
-
"totalRecords": totalGroups
|
|
536
|
-
},
|
|
537
|
-
groupMeta,
|
|
538
|
-
groupRecords,
|
|
539
|
-
}
|
|
516
|
+
);
|
|
540
517
|
}
|
|
541
518
|
else {
|
|
542
519
|
qb = (internationalisation && draftPublishWorkflow)
|
|
@@ -566,78 +543,8 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
566
543
|
return this.wrapFindResponse(offset, limit, count, entities);
|
|
567
544
|
}
|
|
568
545
|
|
|
569
|
-
private async handleGroupFind(
|
|
570
|
-
groupByResult: any[],
|
|
571
|
-
groupFilter: BasicGroupFilterDto | undefined,
|
|
572
|
-
populateGroup: boolean,
|
|
573
|
-
alias: string,
|
|
574
|
-
populateUserIdFields: UserIdFields[],
|
|
575
|
-
populateMedia: string[],
|
|
576
|
-
baseFilterDto: BasicFilterDto,
|
|
577
|
-
groupAliasMap: Record<string, string>,
|
|
578
|
-
aggregateAliasMap: Record<string, string>,
|
|
579
|
-
groupByFieldsOrdered: string[],
|
|
580
|
-
groupFormatMap: Record<string, string | undefined>,
|
|
581
|
-
groupExpressionMap: Record<string, string>
|
|
582
|
-
) {
|
|
583
|
-
const groupMeta = [];
|
|
584
|
-
const groupRecords = [];
|
|
585
|
-
const aggregateAliasSet = new Set(Object.values(aggregateAliasMap));
|
|
586
|
-
// For each group, get the records and the count
|
|
587
|
-
for (const group of groupByResult) {
|
|
588
|
-
if (populateGroup) {
|
|
589
|
-
let groupByQb: SelectQueryBuilder<T> = await this.repo.createSecurityRuleAwareQueryBuilder(alias);
|
|
590
|
-
const groupFilterDto: BasicFilterDto = {
|
|
591
|
-
...baseFilterDto,
|
|
592
|
-
...groupFilter,
|
|
593
|
-
groupBy: undefined,
|
|
594
|
-
aggregates: undefined,
|
|
595
|
-
// Only use explicit groupFilter.sort for record ordering; group-level sorts can contain
|
|
596
|
-
// group expressions (e.g. createdAt:day) that are invalid on record queries.
|
|
597
|
-
sort: groupFilter?.sort,
|
|
598
|
-
};
|
|
599
|
-
groupByQb = this.crudHelperService.buildFilterQuery(groupByQb, groupFilterDto, alias);
|
|
600
|
-
groupByQb = this.crudHelperService.buildGroupByRecordsQuery(groupByQb, group, alias, groupAliasMap, aggregateAliasMap, groupExpressionMap);
|
|
601
|
-
const [entities, count] = await groupByQb.getManyAndCount();
|
|
602
|
-
|
|
603
|
-
// Populate the entity with the userId fields
|
|
604
|
-
if (populateUserIdFields && populateUserIdFields.length > 0) {
|
|
605
|
-
await this.handlePopulateUserIdFields(populateUserIdFields, entities);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
// Populate the entity with the media
|
|
609
|
-
if (populateMedia && populateMedia.length > 0) {
|
|
610
|
-
await this.handlePopulateMedia(populateMedia, entities);
|
|
611
|
-
}
|
|
612
|
-
const groupData = this.wrapFindResponse(groupFilter?.offset, groupFilter?.limit, count, entities);
|
|
613
|
-
groupRecords.push(this.crudHelperService.createGroupRecords(group, aggregateAliasSet, groupData, groupByFieldsOrdered, groupAliasMap, groupFormatMap));
|
|
614
|
-
}
|
|
615
|
-
groupMeta.push(this.crudHelperService.createGroupMeta(group, aggregateAliasSet, groupByFieldsOrdered, groupAliasMap, groupFormatMap));
|
|
616
|
-
}
|
|
617
|
-
return { groupMeta, groupRecords };
|
|
618
|
-
}
|
|
619
|
-
|
|
620
546
|
private wrapFindResponse(offset: number | undefined, limit: number | undefined, count: number, entities: T[]) {
|
|
621
|
-
|
|
622
|
-
const safeOffset = offset ?? 0;
|
|
623
|
-
const currentPage = safeLimit ? Math.floor(safeOffset / safeLimit) + 1 : 1;
|
|
624
|
-
const totalPages = safeLimit ? Math.ceil(count / safeLimit) : 1;
|
|
625
|
-
|
|
626
|
-
const nextPage = safeLimit && currentPage < totalPages ? currentPage + 1 : null;
|
|
627
|
-
const prevPage = safeLimit && currentPage > 1 ? currentPage - 1 : null;
|
|
628
|
-
|
|
629
|
-
const r = {
|
|
630
|
-
meta: {
|
|
631
|
-
totalRecords: count,
|
|
632
|
-
currentPage: currentPage,
|
|
633
|
-
nextPage: nextPage,
|
|
634
|
-
prevPage: prevPage,
|
|
635
|
-
totalPages: totalPages,
|
|
636
|
-
perPage: safeLimit ? +safeLimit : 0,
|
|
637
|
-
},
|
|
638
|
-
records: entities
|
|
639
|
-
};
|
|
640
|
-
return r;
|
|
547
|
+
return this.crudHelperService.pagedResponse(offset, limit, count, entities);
|
|
641
548
|
}
|
|
642
549
|
|
|
643
550
|
// entities is an array of T
|
|
@@ -38,7 +38,7 @@ Not persisted:
|
|
|
38
38
|
|
|
39
39
|
At runtime, metadata is read from file paths resolved by `ModuleMetadataHelperService`:
|
|
40
40
|
|
|
41
|
-
1. `module-metadata/<module-name
|
|
41
|
+
1. `src/<module-name>/metadata/<module-name>-metadata.json`
|
|
42
42
|
2. fallback (solid-core local run): `src/seeders/seed-data/solid-core-metadata.json`
|
|
43
43
|
3. fallback (consuming project): `node_modules/@solidxai/core/src/seeders/seed-data/solid-core-metadata.json`
|
|
44
44
|
|
|
@@ -27,6 +27,7 @@ import { getUserExcludedFields } from 'src/helpers/user-helper';
|
|
|
27
27
|
import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
|
|
28
28
|
import { upperFirst, camelCase } from 'lodash';
|
|
29
29
|
import { classify } from '../helpers/string.helper';
|
|
30
|
+
import type { SolidCoreSetting } from './settings/default-settings-provider.service';
|
|
30
31
|
|
|
31
32
|
interface ImportTemplateFileInfo {
|
|
32
33
|
stream: NodeJS.ReadableStream;
|
|
@@ -180,11 +181,20 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
|
|
|
180
181
|
// Replace modelMetadata.fields with combined (child + parent) fields
|
|
181
182
|
// modelMetadata.fields = allFields;
|
|
182
183
|
|
|
184
|
+
const dateFieldFormat =
|
|
185
|
+
(this.settingService.getConfigValue<SolidCoreSetting>('dateFormat') as string | null) ??
|
|
186
|
+
'YYYY-MM-DD';
|
|
187
|
+
const dateTimeFieldFormat =
|
|
188
|
+
(this.settingService.getConfigValue<SolidCoreSetting>('dateTimeFormat') as string | null) ??
|
|
189
|
+
'YYYY-MM-DD HH:mm:ss';
|
|
190
|
+
|
|
183
191
|
// Create the standard import instructions
|
|
184
192
|
const standardInstructions: StandardImportInstructionsResponseDto = {
|
|
185
193
|
requiredFields: [],
|
|
186
194
|
dateFields: [],
|
|
195
|
+
dateFieldFormat,
|
|
187
196
|
dateTimeFields: [],
|
|
197
|
+
dateTimeFieldFormat,
|
|
188
198
|
numberFields: [],
|
|
189
199
|
emailFields: [],
|
|
190
200
|
regexFields: [],
|
|
@@ -792,4 +802,4 @@ export class ImportTransactionService extends CRUDService<ImportTransaction> {
|
|
|
792
802
|
const relatedRecordsIds = relatedRecordsResult.records.map(record => record.id);
|
|
793
803
|
return relatedRecordsIds;
|
|
794
804
|
}
|
|
795
|
-
}
|
|
805
|
+
}
|
|
@@ -21,8 +21,43 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
21
21
|
readonly mediaRepository: MediaRepository,
|
|
22
22
|
) { }
|
|
23
23
|
|
|
24
|
-
storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
25
|
-
|
|
24
|
+
async storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
25
|
+
const isSupportedEntity = entity instanceof CommonEntity
|
|
26
|
+
|| entity instanceof LegacyCommonEntityWithExistingId
|
|
27
|
+
|| entity instanceof LegacyCommonEntityWithGeneratedId;
|
|
28
|
+
if (!isSupportedEntity) {
|
|
29
|
+
throw new Error("Entity must be an instance of CommonEntity, LegacyCommonEntityWithExistingId or LegacyCommonEntityWithGeneratedId");
|
|
30
|
+
}
|
|
31
|
+
const result: Media[] = [];
|
|
32
|
+
const storageProvider = mediaFieldMetadata.mediaStorageProvider;
|
|
33
|
+
const region = this.getEffectiveRegion(storageProvider.region);
|
|
34
|
+
|
|
35
|
+
for (const [stream, fileName] of streamPairs) {
|
|
36
|
+
const bucketName = storageProvider.bucketName;
|
|
37
|
+
|
|
38
|
+
// Buffer the stream so we can get the byte count and upload in one pass
|
|
39
|
+
const chunks: Buffer[] = [];
|
|
40
|
+
for await (const chunk of stream) {
|
|
41
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
42
|
+
}
|
|
43
|
+
const fileData = Buffer.concat(chunks);
|
|
44
|
+
const fileSize = fileData.length;
|
|
45
|
+
|
|
46
|
+
await this.s3FileService.write(`${bucketName}:${fileName}`, fileData, { region });
|
|
47
|
+
|
|
48
|
+
const mediaEntity = await this.mediaRepository.createMedia({
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
entityId: entity.id,
|
|
51
|
+
modelMetadataId: mediaFieldMetadata.model.id,
|
|
52
|
+
relativeUri: fileName,
|
|
53
|
+
fileSize,
|
|
54
|
+
mediaStorageProviderMetadataId: mediaFieldMetadata.mediaStorageProvider.id,
|
|
55
|
+
fieldMetadataId: mediaFieldMetadata.id
|
|
56
|
+
}) as unknown as Media;
|
|
57
|
+
result.push(mediaEntity);
|
|
58
|
+
this.logger.debug(`Stored media with`, mediaEntity);
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
26
61
|
}
|
|
27
62
|
|
|
28
63
|
async retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
@@ -8,6 +8,7 @@ import { MediaRepository } from "src/repository/media.repository";
|
|
|
8
8
|
import { DiskFileService } from "src/services/file";
|
|
9
9
|
import { Readable } from "stream";
|
|
10
10
|
import * as path from "path";
|
|
11
|
+
import * as fs from "fs";
|
|
11
12
|
import { SettingService } from "../setting.service";
|
|
12
13
|
import { DEFAULT_MEDIA_FILE_STORAGE_DIR } from "src/services/settings/default-settings-provider.service";
|
|
13
14
|
import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
|
|
@@ -80,12 +81,15 @@ export class FileStorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
80
81
|
for (const pair of streamPairs) {
|
|
81
82
|
const stream = pair[0];
|
|
82
83
|
const fileName = pair[1];
|
|
83
|
-
|
|
84
|
+
const fullPath = this.getFullFilePath(fileName);
|
|
85
|
+
await this.fileService.writeStream(fullPath, stream);
|
|
86
|
+
const { size: fileSize } = await fs.promises.stat(fullPath);
|
|
84
87
|
const mediaEntity = await this.mediaRepository.createMedia({
|
|
85
88
|
//@ts-ignore
|
|
86
89
|
entityId: entity.id,
|
|
87
90
|
modelMetadataId: mediaFieldMetadata.model.id,
|
|
88
91
|
relativeUri: fileName,
|
|
92
|
+
fileSize,
|
|
89
93
|
mediaStorageProviderMetadataId: mediaFieldMetadata.mediaStorageProvider.id,
|
|
90
94
|
fieldMetadataId: mediaFieldMetadata.id
|
|
91
95
|
}) as unknown as Media;
|