@solidstarters/solid-core 1.2.193 → 1.2.201
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/dist/commands/fixtures/fixtures-setup.command.d.ts +15 -0
- package/dist/commands/fixtures/fixtures-setup.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-setup.command.js +58 -0
- package/dist/commands/fixtures/fixtures-setup.command.js.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +16 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js +59 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js.map +1 -0
- package/dist/commands/mcp.command.d.ts +20 -0
- package/dist/commands/mcp.command.d.ts.map +1 -0
- package/dist/commands/mcp.command.js +208 -0
- package/dist/commands/mcp.command.js.map +1 -0
- package/dist/commands/refresh-model.command.d.ts +8 -5
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +36 -0
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/remove-fields.command.js +1 -1
- package/dist/commands/remove-fields.command.js.map +1 -1
- package/dist/commands/seed.command.d.ts +2 -0
- package/dist/commands/seed.command.d.ts.map +1 -1
- package/dist/commands/seed.command.js +28 -1
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/constants/error-messages.d.ts +2 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +4 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/authentication.controller.js +1 -1
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/email-template.controller.js +1 -1
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/field-metadata.controller.d.ts +136 -4
- package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/field-metadata.controller.js +14 -1
- package/dist/controllers/field-metadata.controller.js.map +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
- package/dist/controllers/model-metadata.controller.js +1 -1
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/model-sequence.controller.d.ts +43 -0
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -0
- package/dist/controllers/model-sequence.controller.js +179 -0
- package/dist/controllers/model-sequence.controller.js.map +1 -0
- package/dist/controllers/module-metadata.controller.js +1 -1
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/otp-authentication.controller.js +1 -1
- package/dist/controllers/otp-authentication.controller.js.map +1 -1
- package/dist/controllers/service.controller.js +1 -1
- package/dist/controllers/service.controller.js.map +1 -1
- package/dist/controllers/setting.controller.d.ts +1 -0
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +15 -0
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/controllers/sms-template.controller.js +1 -1
- package/dist/controllers/sms-template.controller.js.map +1 -1
- package/dist/controllers/test-queue.controller.js +1 -1
- package/dist/controllers/test-queue.controller.js.map +1 -1
- package/dist/controllers/test.controller.js +1 -1
- package/dist/controllers/test.controller.js.map +1 -1
- package/dist/dtos/basic-filters.dto.d.ts +3 -1
- package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.js +8 -2
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/basic-group-filters.dto.d.ts +6 -0
- package/dist/dtos/basic-group-filters.dto.d.ts.map +1 -0
- package/dist/dtos/basic-group-filters.dto.js +46 -0
- package/dist/dtos/basic-group-filters.dto.js.map +1 -0
- package/dist/dtos/create-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-ai-interaction.dto.js +14 -1
- package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +34 -8
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-import-transaction.dto.js +1 -7
- package/dist/dtos/create-import-transaction.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
- package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js +13 -1
- package/dist/dtos/create-model-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-sequence.dto.d.ts +14 -0
- package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/create-model-sequence.dto.js +90 -0
- package/dist/dtos/create-model-sequence.dto.js.map +1 -0
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +6 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/get-mcp-url.dto.d.ts +5 -0
- package/dist/dtos/get-mcp-url.dto.d.ts.map +1 -0
- package/dist/dtos/get-mcp-url.dto.js +31 -0
- package/dist/dtos/get-mcp-url.dto.js.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts +10 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.js +49 -0
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-ai-interaction.dto.js +13 -1
- package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-field-metadata.dto.js.map +1 -1
- package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-import-transaction.dto.js +1 -7
- package/dist/dtos/update-import-transaction.dto.js.map +1 -1
- package/dist/dtos/update-model-sequence.dto.d.ts +15 -0
- package/dist/dtos/update-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/update-model-sequence.dto.js +94 -0
- package/dist/dtos/update-model-sequence.dto.js.map +1 -0
- package/dist/entities/action-metadata.entity.js +4 -4
- package/dist/entities/action-metadata.entity.js.map +1 -1
- package/dist/entities/ai-interaction.entity.d.ts +2 -0
- package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
- package/dist/entities/ai-interaction.entity.js +15 -6
- package/dist/entities/ai-interaction.entity.js.map +1 -1
- package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message-details.entity.js +1 -1
- package/dist/entities/chatter-message-details.entity.js.map +1 -1
- package/dist/entities/chatter-message.entity.js +1 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/common.entity.d.ts +2 -3
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +10 -11
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
- package/dist/entities/dashboard-question.entity.js +3 -3
- package/dist/entities/dashboard-question.entity.js.map +1 -1
- package/dist/entities/dashboard-variable.entity.js +3 -3
- package/dist/entities/dashboard-variable.entity.js.map +1 -1
- package/dist/entities/dashboard.entity.js +1 -1
- package/dist/entities/dashboard.entity.js.map +1 -1
- package/dist/entities/email-template.entity.d.ts.map +1 -1
- package/dist/entities/email-template.entity.js +4 -3
- package/dist/entities/email-template.entity.js.map +1 -1
- package/dist/entities/export-template.entity.js +2 -2
- package/dist/entities/export-template.entity.js.map +1 -1
- package/dist/entities/export-transaction.entity.js +2 -2
- package/dist/entities/export-transaction.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts +1 -0
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +8 -4
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/import-transaction-error-log.entity.js +1 -1
- package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
- package/dist/entities/import-transaction.entity.d.ts +0 -1
- package/dist/entities/import-transaction.entity.d.ts.map +1 -1
- package/dist/entities/import-transaction.entity.js +2 -7
- package/dist/entities/import-transaction.entity.js.map +1 -1
- package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
- package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common-with-id.entity.js +32 -0
- package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
- package/dist/entities/legacy-common.entity.d.ts +13 -0
- package/dist/entities/legacy-common.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common.entity.js +68 -0
- package/dist/entities/legacy-common.entity.js.map +1 -0
- package/dist/entities/list-of-values.entity.js +2 -2
- package/dist/entities/list-of-values.entity.js.map +1 -1
- package/dist/entities/locale.entity.js +1 -1
- 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 +3 -3
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js +4 -4
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts +2 -0
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +11 -3
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/model-sequence.entity.d.ts +15 -0
- package/dist/entities/model-sequence.entity.d.ts.map +1 -0
- package/dist/entities/model-sequence.entity.js +67 -0
- package/dist/entities/model-sequence.entity.js.map +1 -0
- package/dist/entities/mq-message-queue.entity.js +1 -1
- package/dist/entities/mq-message-queue.entity.js.map +1 -1
- package/dist/entities/mq-message.entity.d.ts +3 -3
- package/dist/entities/mq-message.entity.d.ts.map +1 -1
- package/dist/entities/mq-message.entity.js +10 -10
- package/dist/entities/mq-message.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.js +4 -4
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/scheduled-job.entity.js +4 -4
- package/dist/entities/scheduled-job.entity.js.map +1 -1
- package/dist/entities/security-rule.entity.js +2 -2
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/entities/setting.entity.js +2 -2
- package/dist/entities/setting.entity.js.map +1 -1
- package/dist/entities/sms-template.entity.js +2 -2
- 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 -1
- package/dist/entities/user-activity-history.entity.js.map +1 -1
- package/dist/entities/user-view-metadata.entity.js +2 -2
- package/dist/entities/user-view-metadata.entity.js.map +1 -1
- package/dist/entities/user.entity.js +13 -15
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.js +3 -3
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/helpers/date.helper.d.ts +1 -1
- package/dist/helpers/date.helper.d.ts.map +1 -1
- package/dist/helpers/date.helper.js +24 -2
- package/dist/helpers/date.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +13 -2
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +7 -8
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts +4 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +52 -30
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +9 -0
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts +1 -0
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +26 -2
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts +9 -3
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +49 -32
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +14 -2
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +10 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/typeorm-db-helper.d.ts +3 -0
- package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
- package/dist/helpers/typeorm-db-helper.js +24 -0
- package/dist/helpers/typeorm-db-helper.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +3 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts +1 -0
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.js +16 -4
- package/dist/jobs/computed-field-evaluation-subscriber.service.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/repository/media.repository.d.ts.map +1 -1
- package/dist/repository/media.repository.js +4 -0
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/repository/model-sequence.repository.d.ts +14 -0
- package/dist/repository/model-sequence.repository.d.ts.map +1 -0
- package/dist/repository/model-sequence.repository.js +103 -0
- package/dist/repository/model-sequence.repository.js.map +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts +8 -13
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +103 -43
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +553 -652
- package/dist/seeders/system-fields-seeder.service.d.ts +1 -0
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +12 -3
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +1 -0
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +2 -1
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +22 -14
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.d.ts.map +1 -1
- package/dist/services/chatter-message-details.service.js +1 -0
- package/dist/services/chatter-message-details.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +7 -3
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +10 -6
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +15 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +72 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -0
- package/dist/services/crud-helper.service.d.ts +31 -6
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +285 -50
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +7 -2
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +135 -26
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/database/database-bootstrap.service.d.ts +12 -0
- package/dist/services/database/database-bootstrap.service.d.ts.map +1 -0
- package/dist/services/database/database-bootstrap.service.js +115 -0
- package/dist/services/database/database-bootstrap.service.js.map +1 -0
- package/dist/services/email-template.service.d.ts +7 -7
- package/dist/services/email-template.service.d.ts.map +1 -1
- package/dist/services/email-template.service.js +8 -7
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/excel.service.d.ts +10 -0
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +100 -0
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +146 -6
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +218 -58
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts +1 -0
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +9 -0
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/fixtures.service.d.ts +13 -0
- package/dist/services/fixtures.service.d.ts.map +1 -0
- package/dist/services/fixtures.service.js +95 -0
- package/dist/services/fixtures.service.js.map +1 -0
- package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
- package/dist/services/genai/ingest-metadata.service.js +1 -1
- package/dist/services/genai/ingest-metadata.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
- package/dist/services/import-transaction-error-log.service.js +1 -0
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +7 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +2 -2
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +2 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +1 -0
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.js +0 -1
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/media.service.d.ts +3 -3
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +6 -4
- package/dist/services/media.service.js.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 +17 -6
- 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 +0 -13
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts +3 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +35 -11
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +16 -45
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/model-sequence.service.d.ts +23 -0
- package/dist/services/model-sequence.service.d.ts.map +1 -0
- package/dist/services/model-sequence.service.js +55 -0
- package/dist/services/model-sequence.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +1 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +35 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +3 -4
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/permission-metadata.service.d.ts +5 -5
- package/dist/services/permission-metadata.service.d.ts.map +1 -1
- package/dist/services/permission-metadata.service.js +6 -5
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +2 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +4 -0
- package/dist/services/queues/publisher-factory.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +2 -2
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +1 -0
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +6 -6
- package/dist/services/scheduled-job.service.d.ts.map +1 -1
- package/dist/services/scheduled-job.service.js +8 -8
- package/dist/services/scheduled-job.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +4 -0
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +1 -0
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js +4 -0
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
- package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
- package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
- package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
- package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
- package/dist/services/setting.service.d.ts +7 -5
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +28 -5
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/sms-template.service.d.ts +7 -7
- package/dist/services/sms-template.service.d.ts.map +1 -1
- package/dist/services/sms-template.service.js +8 -7
- package/dist/services/sms-template.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +10 -3
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +66 -12
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/solid-ts-morph.service.js +2 -2
- package/dist/services/solid-ts-morph.service.js.map +1 -1
- package/dist/services/user-activity-history.service.d.ts.map +1 -1
- package/dist/services/user-activity-history.service.js +1 -0
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.d.ts.map +1 -1
- package/dist/services/user-view-metadata.service.js +3 -2
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +1 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +3 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +33 -5
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core-cli-db.module.d.ts.map +1 -1
- package/dist/solid-core-cli-db.module.js +5 -2
- package/dist/solid-core-cli-db.module.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +23 -1
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +3 -2
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +8 -10
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +7 -4
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +60 -21
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
- package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.js +0 -1
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.js +3 -2
- package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
- package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts +5 -0
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js +26 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/grouping-enhancements.md +89 -0
- package/package.json +1 -1
- package/sql/default/mssql/proc_CleanupModelMetadata.sql +175 -0
- package/sql/default/mssql/proc_CleanupModuleMetadata.sql +78 -0
- package/sql/default/mssql/scratchpad.sql.txt +10 -0
- package/sql/default/postgres/proc_CleanupModelMetadata.sql +148 -0
- package/sql/default/postgres/proc_CleanupModuleMetadata.sql +50 -0
- package/sql/default/postgres/scratchpad.sql.txt +12 -0
- package/sql-server-changes.txt +88 -0
- package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
- package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
- package/src/commands/mcp.command.ts +215 -0
- package/src/commands/refresh-model.command.ts +39 -5
- package/src/commands/remove-fields.command.ts +1 -1
- package/src/commands/seed.command.ts +34 -15
- package/src/constants/error-messages.ts +7 -1
- package/src/controllers/authentication.controller.ts +1 -1
- package/src/controllers/email-template.controller.ts +1 -1
- package/src/controllers/field-metadata.controller.ts +7 -1
- package/src/controllers/media-storage-provider-metadata.controller.ts +1 -1
- package/src/controllers/model-metadata.controller.ts +1 -1
- package/src/controllers/model-sequence.controller.ts +93 -0
- package/src/controllers/module-metadata.controller.ts +1 -1
- package/src/controllers/otp-authentication.controller.ts +1 -1
- package/src/controllers/service.controller.ts +1 -1
- package/src/controllers/setting.controller.ts +33 -21
- package/src/controllers/sms-template.controller.ts +1 -1
- package/src/controllers/test-queue.controller.ts +1 -1
- package/src/controllers/test.controller.ts +1 -1
- package/src/dtos/basic-filters.dto.ts +6 -1
- package/src/dtos/basic-group-filters.dto.ts +23 -0
- package/src/dtos/create-ai-interaction.dto.ts +16 -9
- package/src/dtos/create-field-metadata.dto.ts +43 -13
- package/src/dtos/create-import-transaction.dto.ts +0 -4
- package/src/dtos/create-model-metadata.dto.ts +10 -0
- package/src/dtos/create-model-sequence.dto.ts +51 -0
- package/src/dtos/create-role-metadata.dto.ts +23 -4
- package/src/dtos/get-mcp-url.dto.ts +13 -0
- package/src/dtos/resolve-s3-url.dto.ts +31 -0
- package/src/dtos/update-ai-interaction.dto.ts +16 -9
- package/src/dtos/update-field-metadata.dto.ts +1 -2
- package/src/dtos/update-import-transaction.dto.ts +0 -4
- package/src/dtos/update-model-sequence.dto.ts +53 -0
- package/src/entities/action-metadata.entity.ts +4 -4
- package/src/entities/ai-interaction.entity.ts +16 -12
- package/src/entities/chatter-message-details.entity.ts +18 -18
- package/src/entities/chatter-message.entity.ts +2 -2
- package/src/entities/common.entity.ts +20 -11
- package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
- package/src/entities/dashboard-question.entity.ts +3 -3
- package/src/entities/dashboard-variable.entity.ts +3 -3
- package/src/entities/dashboard.entity.ts +1 -1
- package/src/entities/email-template.entity.ts +4 -3
- package/src/entities/export-template.entity.ts +2 -2
- package/src/entities/export-transaction.entity.ts +2 -2
- package/src/entities/field-metadata.entity.ts +6 -3
- package/src/entities/import-transaction-error-log.entity.ts +2 -2
- package/src/entities/import-transaction.entity.ts +2 -5
- package/src/entities/legacy-common-with-id.entity.ts +11 -0
- package/src/entities/legacy-common.entity.ts +58 -0
- package/src/entities/list-of-values.entity.ts +2 -2
- package/src/entities/locale.entity.ts +1 -1
- package/src/entities/media.entity.ts +25 -25
- package/src/entities/menu-item-metadata.entity.ts +4 -4
- package/src/entities/model-metadata.entity.ts +9 -2
- package/src/entities/model-sequence.entity.ts +32 -0
- package/src/entities/mq-message-queue.entity.ts +1 -1
- package/src/entities/mq-message.entity.ts +34 -34
- package/src/entities/saved-filters.entity.ts +5 -5
- package/src/entities/scheduled-job.entity.ts +4 -4
- package/src/entities/security-rule.entity.ts +2 -2
- package/src/entities/setting.entity.ts +2 -2
- package/src/entities/sms-template.entity.ts +2 -2
- package/src/entities/user-activity-history.entity.ts +14 -14
- package/src/entities/user-view-metadata.entity.ts +2 -2
- package/src/entities/user.entity.ts +15 -15
- package/src/entities/view-metadata.entity.ts +3 -3
- package/src/helpers/date.helper.ts +31 -10
- package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +18 -5
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +16 -8
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/model-metadata-helper.service.ts +67 -34
- package/src/helpers/module-metadata-helper.service.ts +18 -1
- package/src/helpers/module.helper.ts +37 -1
- package/src/helpers/schematic.service.ts +72 -46
- package/src/helpers/solid-registry.ts +28 -2
- package/src/helpers/typeorm-db-helper.ts +26 -0
- package/src/index.ts +7 -2
- package/src/interfaces.ts +3 -0
- package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
- package/src/repository/media.repository.ts +3 -2
- package/src/repository/model-sequence.repository.ts +97 -0
- package/src/seeders/module-metadata-seeder.service.ts +176 -58
- package/src/seeders/seed-data/solid-core-metadata.json +555 -654
- package/src/seeders/system-fields-seeder.service.ts +39 -36
- package/src/services/action-metadata.service.ts +3 -2
- package/src/services/ai-interaction.service.ts +3 -2
- package/src/services/authentication.service.ts +46 -14
- package/src/services/chatter-message-details.service.ts +2 -1
- package/src/services/chatter-message.service.ts +10 -4
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +17 -12
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
- package/src/services/crud-helper.service.ts +319 -53
- package/src/services/crud.service.ts +233 -34
- package/src/services/database/database-bootstrap.service.ts +91 -0
- package/src/services/email-template.service.ts +11 -13
- package/src/services/excel.service.ts +146 -3
- package/src/services/field-metadata.service.ts +322 -70
- package/src/services/file.service.ts +9 -0
- package/src/services/fixtures.service.ts +108 -0
- package/src/services/genai/ingest-metadata.service.ts +4 -3
- package/src/services/import-transaction-error-log.service.ts +2 -1
- package/src/services/import-transaction.service.ts +8 -4
- package/src/services/list-of-values.service.ts +4 -4
- package/src/services/locale.service.ts +2 -1
- package/src/services/mail/smtp-email.service.ts +1 -1
- package/src/services/media.service.ts +10 -11
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +22 -7
- package/src/services/mediaStorageProviders/file-storage-provider.ts +18 -13
- package/src/services/menu-item-metadata.service.ts +87 -52
- package/src/services/model-metadata.service.ts +68 -47
- package/src/services/model-sequence.service.ts +33 -0
- package/src/services/module-metadata.service.ts +49 -2
- package/src/services/mq-message.service.ts +16 -15
- package/src/services/permission-metadata.service.ts +8 -9
- package/src/services/queues/database-subscriber.service.ts +3 -1
- package/src/services/queues/publisher-factory.service.ts +2 -1
- package/src/services/queues/rabbitmq-subscriber.service.ts +4 -2
- package/src/services/role-metadata.service.ts +1 -0
- package/src/services/scheduled-job.service.ts +9 -9
- package/src/services/scheduled-jobs/scheduler.service.ts +5 -0
- package/src/services/security-rule.service.ts +1 -0
- package/src/services/selection-providers/list-of-models-selection-provider.service.ts +5 -2
- package/src/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
- package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
- package/src/services/setting.service.ts +46 -16
- package/src/services/sms-template.service.ts +11 -13
- package/src/services/solid-introspect.service.ts +97 -10
- package/src/services/solid-ts-morph.service.ts +2 -2
- package/src/services/user-activity-history.service.ts +3 -2
- package/src/services/user-view-metadata.service.ts +4 -3
- package/src/services/user.service.ts +2 -1
- package/src/services/view-metadata.service.ts +52 -21
- package/src/solid-core-cli-db.module.ts +5 -4
- package/src/solid-core.module.ts +23 -1
- package/src/subscribers/audit.subscriber.ts +14 -9
- package/src/subscribers/computed-entity-field.subscriber.ts +71 -22
- package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
- package/src/subscribers/field-metadata.subscriber.ts +1 -1
- package/src/subscribers/model-metadata.subscriber.ts +4 -2
- package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
- package/src/transformers/typeorm/local-date-time-transformer.ts +30 -0
- package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
- package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
- package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
- package/src/entities/user.entity.ts.bkp +0 -144
- package/src/services/docker exec -it mssql //" +0 -8
|
@@ -7,21 +7,30 @@ import { ComputedFieldMetadata, SolidRegistry } from 'src/helpers/solid-registry
|
|
|
7
7
|
import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
|
|
8
8
|
import { DataSource, Repository, SelectQueryBuilder } from 'typeorm';
|
|
9
9
|
import { BasicFilterDto } from '../dtos/basic-filters.dto';
|
|
10
|
-
import { CascadeType, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';
|
|
10
|
+
import { CascadeType, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, MSSQLType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';
|
|
11
11
|
import { SelectionDynamicQueryDto } from '../dtos/selection-dynamic-query.dto';
|
|
12
12
|
import { UpdateFieldMetaDataDto } from '../dtos/update-field-metadata.dto';
|
|
13
13
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
14
14
|
import { ModelMetadata } from '../entities/model-metadata.entity';
|
|
15
|
-
import { ISelectionProviderValues } from '../interfaces';
|
|
15
|
+
import { ISelectionProviderValues, MediaStorageProvider } from '../interfaces';
|
|
16
16
|
import { CrudHelperService } from './crud-helper.service';
|
|
17
17
|
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
18
18
|
import qs from 'qs';
|
|
19
|
+
import { ResolveS3UrlDto } from 'src/dtos/resolve-s3-url.dto';
|
|
20
|
+
import { MediaStorageProviderMetadataRepository } from 'src/repository/media-storage-provider-metadata.repository';
|
|
21
|
+
import { ConfigService } from '@nestjs/config';
|
|
22
|
+
import { FileService } from './file.service';
|
|
23
|
+
import { MediaStorageProviderMetadata } from 'src/entities/media-storage-provider-metadata.entity';
|
|
19
24
|
|
|
20
25
|
|
|
21
26
|
@Injectable()
|
|
22
27
|
export class FieldMetadataService implements OnApplicationBootstrap {
|
|
23
28
|
constructor(
|
|
24
29
|
private readonly fieldMetadataRepo: FieldMetadataRepository,
|
|
30
|
+
private readonly configService: ConfigService,
|
|
31
|
+
private readonly fileService: FileService,
|
|
32
|
+
private readonly mediaStorageProviderMetadataRepository: MediaStorageProviderMetadataRepository,
|
|
33
|
+
|
|
25
34
|
@InjectDataSource()
|
|
26
35
|
private readonly dataSource: DataSource,
|
|
27
36
|
private readonly solidRegistry: SolidRegistry,
|
|
@@ -35,9 +44,9 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
35
44
|
this.loadAndRegisterComputedFieldsDetails();
|
|
36
45
|
}
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
async loadAndRegisterComputedFieldsDetails() {
|
|
39
48
|
// Load all the modules and models and within that load all the computed fields
|
|
40
|
-
const computedFieldsWithModelAndModule =
|
|
49
|
+
const computedFieldsWithModelAndModule = await this.fieldMetadataRepo.findComputedFieldsPopulatedWithModelAndModule();
|
|
41
50
|
|
|
42
51
|
// Convert the computed fields object above to the ComputedFieldMetadata type
|
|
43
52
|
const computedFieldMetadata: ComputedFieldMetadata[] = computedFieldsWithModelAndModule.map((field) => {
|
|
@@ -54,6 +63,7 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
54
63
|
computedFieldTriggerConfig: field.computedFieldTriggerConfig ?? [], // Ensure it's an array, default to empty if not provided
|
|
55
64
|
computedFieldValueProviderName: field.computedFieldValueProvider,
|
|
56
65
|
computedFieldValueProviderCtxt: field.computedFieldValueProviderCtxt ? JSON.parse(field.computedFieldValueProviderCtxt) : {}, // Parse the context if it exists, default to empty object
|
|
66
|
+
eventContext: {}
|
|
57
67
|
};
|
|
58
68
|
});
|
|
59
69
|
|
|
@@ -354,7 +364,71 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
354
364
|
};
|
|
355
365
|
|
|
356
366
|
// Orm Data type and Solid Dat Type Mapping
|
|
357
|
-
const ormFieldTypeForSolid =
|
|
367
|
+
const ormFieldTypeForSolid = this.getOrmFieldTypes();
|
|
368
|
+
|
|
369
|
+
// Fetch Data Source Type
|
|
370
|
+
const dataSourceTypes = Object.keys(ormFieldTypeForSolid); // ["psql"]
|
|
371
|
+
|
|
372
|
+
const fieldTypes = Object.entries(ormFieldTypeForSolid.postgres).map(([key, value]) => ({
|
|
373
|
+
type: key,
|
|
374
|
+
label: key,
|
|
375
|
+
value: key,
|
|
376
|
+
fieldType: key,
|
|
377
|
+
ormTypes: value.ormTypes,
|
|
378
|
+
fields: this.fetchCurrentFields(key)
|
|
379
|
+
}));
|
|
380
|
+
|
|
381
|
+
const dataSource = this.solidRegistry.getSolidDatabaseModules().map((solidDatabaseModule) => {
|
|
382
|
+
return {
|
|
383
|
+
'name': solidDatabaseModule.instance.name(),
|
|
384
|
+
'type': solidDatabaseModule.instance.type()
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// Creating response arrays for each enum
|
|
389
|
+
// Get all selection providers.
|
|
390
|
+
const sps = [];
|
|
391
|
+
const selectionProviders = this.solidRegistry.getSelectionProviders();
|
|
392
|
+
for (let i = 0; i < selectionProviders.length; i++) {
|
|
393
|
+
const selectionProvider = selectionProviders[i];
|
|
394
|
+
sps.push({
|
|
395
|
+
provider: selectionProvider.instance.name(),
|
|
396
|
+
help: selectionProvider.instance.help(),
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
const cps = [];
|
|
401
|
+
const computedProviders = this.solidRegistry.getComputedFieldProviders();
|
|
402
|
+
for (let i = 0; i < computedProviders.length; i++) {
|
|
403
|
+
const computedProvider = computedProviders[i];
|
|
404
|
+
cps.push({
|
|
405
|
+
provider: computedProvider.instance.name(),
|
|
406
|
+
help: computedProvider.instance.help(),
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
const r = {
|
|
411
|
+
// Field Types with ormtypes, available fields
|
|
412
|
+
fieldTypes: fieldTypes,
|
|
413
|
+
encryptionTypes: enumToResponseArray(EncryptionType),
|
|
414
|
+
ormType: ormFieldTypeForSolid,
|
|
415
|
+
decryptWhenTypes: enumToResponseArray(DecryptWhenType),
|
|
416
|
+
mediaTypes: enumToResponseArray(MediaType),
|
|
417
|
+
relationTypes: enumToResponseArray(RelationType),
|
|
418
|
+
selectionDynamicProviders: sps,
|
|
419
|
+
computedProviders: cps,
|
|
420
|
+
cascadeTypes: enumToResponseArray(CascadeType),
|
|
421
|
+
selectionValueTypes: enumToResponseArray(SelectionValueType),
|
|
422
|
+
computedFieldValueTypes: enumToResponseArray(ComputedFieldValueType),
|
|
423
|
+
dataSourceType: dataSourceTypes,
|
|
424
|
+
dataSource: dataSource,
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
return r
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
private getOrmFieldTypes() {
|
|
431
|
+
return {
|
|
358
432
|
"postgres": {
|
|
359
433
|
// Numeric types
|
|
360
434
|
"int": {
|
|
@@ -379,6 +453,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
379
453
|
},
|
|
380
454
|
"json": {
|
|
381
455
|
"ormTypes": [
|
|
456
|
+
// { label: PSQLType.simplejson, description: "Creates DB agnostic column for storing json style data." },
|
|
457
|
+
{ label: MSSQLType.simplejson, description: "Creates DB agnostic column for storing json style data." },
|
|
382
458
|
{ label: PSQLType.json, description: "Stores JSON data without indexing." },
|
|
383
459
|
{ label: PSQLType.jsonb, description: "Stores JSON data with indexing for faster queries." }
|
|
384
460
|
]
|
|
@@ -443,69 +519,131 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
443
519
|
"uuid": {
|
|
444
520
|
"ormTypes": [{ label: PSQLType.varchar, description: "Stores universally unique identifiers (UUIDs)." }]
|
|
445
521
|
}
|
|
446
|
-
}
|
|
447
|
-
|
|
522
|
+
},
|
|
523
|
+
"mssql": {
|
|
524
|
+
// Numeric types
|
|
525
|
+
"int": {
|
|
526
|
+
ormTypes: [
|
|
527
|
+
{ label: MSSQLType.int, description: "A 4-byte integer for general numeric data." }
|
|
528
|
+
]
|
|
529
|
+
},
|
|
530
|
+
"bigint": {
|
|
531
|
+
ormTypes: [
|
|
532
|
+
{ label: MSSQLType.bigint, description: "An 8-byte integer for large numeric values." }
|
|
533
|
+
]
|
|
534
|
+
},
|
|
535
|
+
"decimal": {
|
|
536
|
+
ormTypes: [
|
|
537
|
+
{ label: MSSQLType.numeric, description: "A high-precision numeric type for financial or exact values." },
|
|
538
|
+
{ label: MSSQLType.decimal, description: "A high-precision decimal type for financial or exact values." }
|
|
539
|
+
]
|
|
540
|
+
},
|
|
448
541
|
|
|
542
|
+
// Text types
|
|
543
|
+
"shortText": {
|
|
544
|
+
ormTypes: [
|
|
545
|
+
{ label: MSSQLType.varchar, description: "A variable-length string for short text." },
|
|
546
|
+
{ label: MSSQLType.nvarchar, description: "A unicode supported variable-length string for short text." }
|
|
547
|
+
]
|
|
548
|
+
},
|
|
549
|
+
"longText": {
|
|
550
|
+
ormTypes: [
|
|
551
|
+
{ label: MSSQLType.nvarchar, description: "A large or unbounded string type." }
|
|
552
|
+
]
|
|
553
|
+
},
|
|
554
|
+
"richText": {
|
|
555
|
+
ormTypes: [
|
|
556
|
+
{ label: MSSQLType.nvarchar, description: "A large text field for formatted or long content." }
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
"json": {
|
|
560
|
+
ormTypes: [
|
|
561
|
+
{ label: MSSQLType.simplejson, description: "Creates DB agnostic column for storing json style data." },
|
|
562
|
+
{ label: MSSQLType.nvarchar, description: "Stores JSON data as string (MSSQL doesn't have native JSON type)." }
|
|
563
|
+
]
|
|
564
|
+
},
|
|
449
565
|
|
|
450
|
-
|
|
451
|
-
|
|
566
|
+
// Boolean types
|
|
567
|
+
"boolean": {
|
|
568
|
+
ormTypes: [
|
|
569
|
+
{ label: MSSQLType.bit, description: "Stores true or false values as 0 or 1." }
|
|
570
|
+
]
|
|
571
|
+
},
|
|
452
572
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
573
|
+
// Date and time types
|
|
574
|
+
"date": {
|
|
575
|
+
ormTypes: [
|
|
576
|
+
{ label: MSSQLType.date, description: "Stores calendar dates (YYYY-MM-DD)." }
|
|
577
|
+
]
|
|
578
|
+
},
|
|
579
|
+
"datetime": {
|
|
580
|
+
ormTypes: [
|
|
581
|
+
{ label: MSSQLType.datetime, description: "Stores date and time without timezone." },
|
|
582
|
+
{ label: MSSQLType.datetime2, description: "High-precision date and time type." }
|
|
583
|
+
]
|
|
584
|
+
},
|
|
585
|
+
"time": {
|
|
586
|
+
ormTypes: [
|
|
587
|
+
{ label: MSSQLType.time, description: "Stores time values (HH:MM:SS)." }
|
|
588
|
+
]
|
|
589
|
+
},
|
|
461
590
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
591
|
+
// Relation
|
|
592
|
+
"relation": {
|
|
593
|
+
ormTypes: [
|
|
594
|
+
{ label: MSSQLType.int, description: "Used for foreign keys referencing other entities." }
|
|
595
|
+
]
|
|
596
|
+
},
|
|
468
597
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
598
|
+
// Media types
|
|
599
|
+
"mediaSingle": {
|
|
600
|
+
ormTypes: [
|
|
601
|
+
{ label: MSSQLType.varchar, description: "Stores file paths or URLs for single media files." }
|
|
602
|
+
]
|
|
603
|
+
},
|
|
604
|
+
"mediaMultiple": {
|
|
605
|
+
ormTypes: [
|
|
606
|
+
{ label: MSSQLType.varchar, description: "Stores file paths or URLs for multiple media files." }
|
|
607
|
+
]
|
|
608
|
+
},
|
|
480
609
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
610
|
+
// Email and password
|
|
611
|
+
"email": {
|
|
612
|
+
ormTypes: [
|
|
613
|
+
{ label: MSSQLType.nvarchar, description: "Stores email addresses." }
|
|
614
|
+
]
|
|
615
|
+
},
|
|
616
|
+
"password": {
|
|
617
|
+
ormTypes: [
|
|
618
|
+
{ label: MSSQLType.nvarchar, description: "Stores hashed or plain-text passwords." }
|
|
619
|
+
]
|
|
620
|
+
},
|
|
490
621
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
selectionValueTypes: enumToResponseArray(SelectionValueType),
|
|
503
|
-
computedFieldValueTypes: enumToResponseArray(ComputedFieldValueType),
|
|
504
|
-
dataSourceType: dataSourceTypes,
|
|
505
|
-
dataSource: dataSource,
|
|
506
|
-
};
|
|
622
|
+
// Selection types
|
|
623
|
+
"selectionStatic": {
|
|
624
|
+
ormTypes: [
|
|
625
|
+
{ label: MSSQLType.nvarchar, description: "Used for predefined selection options." }
|
|
626
|
+
]
|
|
627
|
+
},
|
|
628
|
+
"selectionDynamic": {
|
|
629
|
+
ormTypes: [
|
|
630
|
+
{ label: MSSQLType.nvarchar, description: "Used for dynamic selection options." }
|
|
631
|
+
]
|
|
632
|
+
},
|
|
507
633
|
|
|
508
|
-
|
|
634
|
+
// Computed and external ID
|
|
635
|
+
"computed": {
|
|
636
|
+
ormTypes: [
|
|
637
|
+
{ label: MSSQLType.nvarchar, description: "Represents computed or derived fields." }
|
|
638
|
+
]
|
|
639
|
+
},
|
|
640
|
+
"uuid": {
|
|
641
|
+
ormTypes: [
|
|
642
|
+
{ label: MSSQLType.uniqueidentifier, description: "Stores universally unique identifiers (UUIDs)." }
|
|
643
|
+
]
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
};
|
|
509
647
|
}
|
|
510
648
|
|
|
511
649
|
async fetchCurrentFieldsBasedOnType(type: string) {
|
|
@@ -533,7 +671,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
533
671
|
"encryptionType",
|
|
534
672
|
"decryptWhen",
|
|
535
673
|
"columnName",
|
|
536
|
-
"enableAuditTracking"
|
|
674
|
+
"enableAuditTracking",
|
|
675
|
+
"isPrimaryKey"
|
|
537
676
|
];
|
|
538
677
|
|
|
539
678
|
case SolidFieldType.bigint:
|
|
@@ -553,7 +692,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
553
692
|
"encryptionType",
|
|
554
693
|
"decryptWhen",
|
|
555
694
|
"columnName",
|
|
556
|
-
"enableAuditTracking"
|
|
695
|
+
"enableAuditTracking",
|
|
696
|
+
"isPrimaryKey"
|
|
557
697
|
];
|
|
558
698
|
|
|
559
699
|
// case SolidFieldType.float:
|
|
@@ -616,7 +756,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
616
756
|
"decryptWhen",
|
|
617
757
|
"columnName",
|
|
618
758
|
"isUserKey",
|
|
619
|
-
"enableAuditTracking"
|
|
759
|
+
"enableAuditTracking",
|
|
760
|
+
"isPrimaryKey"
|
|
620
761
|
];
|
|
621
762
|
|
|
622
763
|
case SolidFieldType.longtext:
|
|
@@ -639,7 +780,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
639
780
|
"encrypt",
|
|
640
781
|
"encryptionType",
|
|
641
782
|
"decryptWhen",
|
|
642
|
-
"columnName"
|
|
783
|
+
"columnName",
|
|
784
|
+
"enableAuditTracking"
|
|
643
785
|
];
|
|
644
786
|
|
|
645
787
|
case SolidFieldType.richText:
|
|
@@ -852,7 +994,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
852
994
|
"encryptionType",
|
|
853
995
|
"decryptWhen",
|
|
854
996
|
"columnName",
|
|
855
|
-
"enableAuditTracking"
|
|
997
|
+
"enableAuditTracking",
|
|
998
|
+
"isPrimaryKey"
|
|
856
999
|
];
|
|
857
1000
|
|
|
858
1001
|
case SolidFieldType.password:
|
|
@@ -943,7 +1086,8 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
943
1086
|
"encryptionType",
|
|
944
1087
|
"decryptWhen",
|
|
945
1088
|
"columnName",
|
|
946
|
-
"isUserKey"
|
|
1089
|
+
"isUserKey",
|
|
1090
|
+
"enableAuditTracking"
|
|
947
1091
|
];
|
|
948
1092
|
|
|
949
1093
|
case SolidFieldType.uuid:
|
|
@@ -964,10 +1108,6 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
964
1108
|
"decryptWhen",
|
|
965
1109
|
"columnName"
|
|
966
1110
|
];
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
1111
|
default:
|
|
972
1112
|
return [
|
|
973
1113
|
"name",
|
|
@@ -1145,6 +1285,118 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
1145
1285
|
|
|
1146
1286
|
return fieldObject;
|
|
1147
1287
|
}
|
|
1288
|
+
|
|
1289
|
+
// async resolveS3Url(resolveS3UrlDto: ResolveS3UrlDto) {
|
|
1290
|
+
|
|
1291
|
+
// const { modelName, fieldName, fieldValue, s3KeyFieldName } = resolveS3UrlDto;
|
|
1292
|
+
|
|
1293
|
+
// // ------------------------------------------------
|
|
1294
|
+
// // 1. Load model metadata
|
|
1295
|
+
// // ------------------------------------------------
|
|
1296
|
+
// const modelRepo = this.dataSource.getRepository(ModelMetadata);
|
|
1297
|
+
// const model = await modelRepo.findOne({
|
|
1298
|
+
// where: { singularName: modelName },
|
|
1299
|
+
// relations: ['fields']
|
|
1300
|
+
// });
|
|
1301
|
+
|
|
1302
|
+
// if (!model) {
|
|
1303
|
+
// throw new NotFoundException(`Model ${modelName} not found`);
|
|
1304
|
+
// }
|
|
1305
|
+
|
|
1306
|
+
// // ------------------------------------------------
|
|
1307
|
+
// // 2. Validate the field we are filtering by
|
|
1308
|
+
// // ------------------------------------------------
|
|
1309
|
+
// const filterFieldMeta = model.fields.find(f => f.name === fieldName);
|
|
1310
|
+
// if (!filterFieldMeta) {
|
|
1311
|
+
// throw new NotFoundException(
|
|
1312
|
+
// `Field ${fieldName} not found in model ${modelName}`
|
|
1313
|
+
// );
|
|
1314
|
+
// }
|
|
1315
|
+
|
|
1316
|
+
// // ------------------------------------------------
|
|
1317
|
+
// // 3. Load the actual entity repository
|
|
1318
|
+
// // ------------------------------------------------
|
|
1319
|
+
// const entityRepo = this.dataSource.getRepository(model.singularName);
|
|
1320
|
+
|
|
1321
|
+
// // ------------------------------------------------
|
|
1322
|
+
// // 4. Query using fieldName = fieldValue
|
|
1323
|
+
// // ------------------------------------------------
|
|
1324
|
+
// const record = await entityRepo.findOne({
|
|
1325
|
+
// where: { [fieldName]: fieldValue }
|
|
1326
|
+
// });
|
|
1327
|
+
|
|
1328
|
+
// if (!record) {
|
|
1329
|
+
// throw new NotFoundException(
|
|
1330
|
+
// `${modelName} record not found for ${fieldName}="${fieldValue}"`
|
|
1331
|
+
// );
|
|
1332
|
+
// }
|
|
1333
|
+
|
|
1334
|
+
// // ------------------------------------------------
|
|
1335
|
+
// // 5. Extract S3 key from s3KeyFieldName
|
|
1336
|
+
// // ------------------------------------------------
|
|
1337
|
+
// const s3Key = record[s3KeyFieldName];
|
|
1338
|
+
|
|
1339
|
+
// if (!s3Key) {
|
|
1340
|
+
// throw new NotFoundException(
|
|
1341
|
+
// `Field "${s3KeyFieldName}" has no value in ${modelName}.${fieldName}="${fieldValue}"`
|
|
1342
|
+
// );
|
|
1343
|
+
// }
|
|
1344
|
+
|
|
1345
|
+
// // ------------------------------------------------
|
|
1346
|
+
// // 6. Generate signed or public URL
|
|
1347
|
+
// // ------------------------------------------------
|
|
1348
|
+
// let url = "";
|
|
1349
|
+
|
|
1350
|
+
// // TODO - get
|
|
1351
|
+
// if (resolveS3UrlDto.isPrivate == "true") {
|
|
1352
|
+
// const expiryInSeconds = 60 * 60;
|
|
1353
|
+
// url = await this.fileService.getSignedUrl(s3Key, expiryInSeconds, resolveS3UrlDto.bucketName);
|
|
1354
|
+
// } else {
|
|
1355
|
+
// url = `https://${resolveS3UrlDto.bucketName}.s3.${this.configService.get('S3_AWS_REGION_NAME')}.amazonaws.com/${s3Key}`;
|
|
1356
|
+
// }
|
|
1357
|
+
// return { url: url }
|
|
1358
|
+
// }
|
|
1359
|
+
|
|
1360
|
+
async resolveS3Url(resolveS3UrlDto: ResolveS3UrlDto) {
|
|
1361
|
+
let url = "";
|
|
1362
|
+
const normalizedKey = this.normalizeS3Key(resolveS3UrlDto.s3Key);
|
|
1363
|
+
|
|
1364
|
+
let resolvedBucketName = resolveS3UrlDto.bucketName;
|
|
1365
|
+
if (resolveS3UrlDto.mediaStorageProviderUserKey) {
|
|
1366
|
+
const mediaStorageProvider = await this.mediaStorageProviderMetadataRepository.findOne({
|
|
1367
|
+
where: {
|
|
1368
|
+
name: resolveS3UrlDto.mediaStorageProviderUserKey
|
|
1369
|
+
}
|
|
1370
|
+
});
|
|
1371
|
+
if (!mediaStorageProvider) {
|
|
1372
|
+
throw new NotFoundException(`MediaStorageProviderMetadata with user key ${resolveS3UrlDto.mediaStorageProviderUserKey} not found`);
|
|
1373
|
+
}
|
|
1374
|
+
resolvedBucketName = mediaStorageProvider.bucketName;
|
|
1375
|
+
}
|
|
1376
|
+
this.logger.debug(`INSIDE::resolveS3Url:: resolvedBucketName: ${resolvedBucketName}`)
|
|
1377
|
+
|
|
1378
|
+
if (resolveS3UrlDto.isPrivate == "true") {
|
|
1379
|
+
const expiryInSeconds = 60 * 60;
|
|
1380
|
+
url = await this.fileService.getSignedUrl(normalizedKey, expiryInSeconds, resolvedBucketName);
|
|
1381
|
+
} else {
|
|
1382
|
+
url = `https://${resolvedBucketName}.s3.${this.configService.get(
|
|
1383
|
+
'S3_AWS_REGION_NAME',
|
|
1384
|
+
)}.amazonaws.com/${normalizedKey}`;
|
|
1385
|
+
}
|
|
1386
|
+
return { url: url }
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
private normalizeS3Key(input: string): string {
|
|
1390
|
+
try {
|
|
1391
|
+
const url = new URL(input);
|
|
1392
|
+
|
|
1393
|
+
// remove leading slash from pathname
|
|
1394
|
+
return decodeURIComponent(url.pathname.replace(/^\/+/, ""));
|
|
1395
|
+
} catch {
|
|
1396
|
+
// not a valid URL → treat as raw S3 key
|
|
1397
|
+
return input;
|
|
1398
|
+
}
|
|
1399
|
+
}
|
|
1148
1400
|
}
|
|
1149
1401
|
|
|
1150
1402
|
|
|
@@ -175,6 +175,15 @@ export class FileService {
|
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
+
public async pathExists(targetPath: string): Promise<boolean> {
|
|
179
|
+
try {
|
|
180
|
+
await fs.promises.access(targetPath, fs.constants.F_OK);
|
|
181
|
+
return true;
|
|
182
|
+
} catch {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
178
187
|
public async getSignedUrl(key: string, expiresIn: number, bucketName: string): Promise<string> {
|
|
179
188
|
const command = new GetObjectCommand({
|
|
180
189
|
Bucket: bucketName,
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
2
|
+
import { SolidIntrospectService } from "./solid-introspect.service";
|
|
3
|
+
import { ModuleMetadataHelperService } from "src/helpers/module-metadata-helper.service";
|
|
4
|
+
import { classify } from "@angular-devkit/core/src/utils/strings";
|
|
5
|
+
|
|
6
|
+
interface ScenarioFixture {
|
|
7
|
+
name: string;
|
|
8
|
+
models: {
|
|
9
|
+
singularName: string;
|
|
10
|
+
data: any;
|
|
11
|
+
}[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// This service can contain common logic for fixtures setup and tear down
|
|
15
|
+
@Injectable()
|
|
16
|
+
export class FixturesService {
|
|
17
|
+
private readonly logger = new Logger(this.constructor.name);
|
|
18
|
+
|
|
19
|
+
constructor(
|
|
20
|
+
private readonly introspectService: SolidIntrospectService,
|
|
21
|
+
private readonly moduleMetadataHelper: ModuleMetadataHelperService,
|
|
22
|
+
) { }
|
|
23
|
+
|
|
24
|
+
async setupFixtures(moduleName: string, scenarioName: string) {
|
|
25
|
+
const scenarioFixture = await this.loadScenario(moduleName, scenarioName);
|
|
26
|
+
if (!scenarioFixture?.models || scenarioFixture.models.length === 0) {
|
|
27
|
+
this.logger.warn(`No models found to setup for scenario: ${scenarioName} in module: ${moduleName}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// For each model in the fixtures, use introspectService to get model service
|
|
32
|
+
for (const modelFixture of scenarioFixture.models) {
|
|
33
|
+
const modelServiceInstance = await this.loadModelService(modelFixture.singularName);
|
|
34
|
+
try {
|
|
35
|
+
// Create the model instance in the database
|
|
36
|
+
const createdInstance = await modelServiceInstance.create(modelFixture.data);
|
|
37
|
+
this.logger.log(`Successfully created fixture for model: ${modelFixture.singularName} with ID: ${createdInstance.id}`);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
this.logger.error(`Error creating fixture for model: ${modelFixture.singularName} - ${error.message}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async tearDownFixtures(moduleName: string, scenarioName: string) {
|
|
45
|
+
// Call delete on the modelService to remove the created fixtures, in reverse order
|
|
46
|
+
const scenarioFixture = await this.loadScenario(moduleName, scenarioName);
|
|
47
|
+
if (!scenarioFixture?.models || scenarioFixture.models.length === 0) {
|
|
48
|
+
this.logger.warn(`No models found to tear down for scenario: ${scenarioName} in module: ${moduleName}`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// For each model in reverse order
|
|
53
|
+
for (const modelFixture of scenarioFixture.models.reverse()) {
|
|
54
|
+
const modelServiceInstance = await this.loadModelService(modelFixture.singularName);
|
|
55
|
+
|
|
56
|
+
// Get the user key field for the model to identify the created instances
|
|
57
|
+
try {
|
|
58
|
+
// Assuming we have some way to identify the created instances, e.g., by a unique field in data
|
|
59
|
+
const deleteCriteria = modelFixture.data; // This should be adjusted based on actual criteria
|
|
60
|
+
await modelServiceInstance.delete(deleteCriteria);
|
|
61
|
+
this.logger.log(`Successfully deleted fixture for model: ${modelFixture.singularName}`);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
this.logger.error(`Error deleting fixture for model: ${modelFixture.singularName} - ${error.message}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private async loadScenario(moduleName: string, scenarioName: string): Promise<ScenarioFixture | undefined> {
|
|
70
|
+
// Read the module metadata file based on module name
|
|
71
|
+
const moduleMetadataConfiguration = await this.moduleMetadataHelper.getModuleMetadataConfiguration(
|
|
72
|
+
await this.moduleMetadataHelper.getModuleMetadataFilePath(moduleName)
|
|
73
|
+
);
|
|
74
|
+
if (!moduleMetadataConfiguration) {
|
|
75
|
+
this.logger.error(`No module metadata configuration found for module: ${moduleName}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.logger.debug(`Module Metadata Configuration loaded for module: ${moduleName}`);
|
|
79
|
+
|
|
80
|
+
// Read the fixtures json from above file
|
|
81
|
+
const allFixtures = moduleMetadataConfiguration?.fixtures;
|
|
82
|
+
this.logger.debug(`All Fixtures: ${JSON.stringify(allFixtures)}`);
|
|
83
|
+
// Check if scenarios exists
|
|
84
|
+
if (!allFixtures?.scenarios.length || allFixtures?.scenarios.length === 0) {
|
|
85
|
+
this.logger.error(`No scenarios defined in the module metadata configuration for module: ${moduleName}`);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Find the fixtures for the given scenario
|
|
90
|
+
const scenarioFixture = allFixtures.scenarios.find((scenario: ScenarioFixture) => scenario.name === scenarioName);
|
|
91
|
+
if (!scenarioFixture) {
|
|
92
|
+
this.logger.error(`Scenario: ${scenarioName} not found in module metadata configuration for module: ${moduleName}`);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.logger.log(`Scenario: ${scenarioName} found with fixtures to setup.`);
|
|
96
|
+
return scenarioFixture;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private async loadModelService(singularName: string): Promise<any> {
|
|
100
|
+
const modelServiceProvider = this.introspectService.getProvider(`${classify(singularName)}Service`);
|
|
101
|
+
if (!modelServiceProvider) {
|
|
102
|
+
this.logger.error(`Model service provider not found for model: ${singularName}`);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
this.logger.debug(`Model service provider found for model: ${singularName}`);
|
|
106
|
+
return modelServiceProvider.instance;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -3,10 +3,10 @@ import * as crypto from 'crypto';
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
|
|
6
|
-
import { getDynamicModuleNames } from 'src/helpers/module.helper';
|
|
6
|
+
import { getDynamicModuleNames, getDynamicModuleNamesBasedOnMetadata } from 'src/helpers/module.helper';
|
|
7
7
|
import { CreateModuleMetadataDto } from 'src/dtos/create-module-metadata.dto';
|
|
8
8
|
import { R2RHelperService } from './r2r-helper.service';
|
|
9
|
-
import {
|
|
9
|
+
import { r2rClient } from 'r2r-js';
|
|
10
10
|
import { CreateModelMetadataDto } from 'src/dtos/create-model-metadata.dto';
|
|
11
11
|
import { CreateFieldMetadataDto } from 'src/dtos/create-field-metadata.dto';
|
|
12
12
|
|
|
@@ -90,7 +90,8 @@ export class IngestMetadataService {
|
|
|
90
90
|
|
|
91
91
|
// const allModuleMetadataJson = [];
|
|
92
92
|
this.logger.debug(`getting dynamics modules`);
|
|
93
|
-
const enabledModules = getDynamicModuleNames();
|
|
93
|
+
// const enabledModules = getDynamicModuleNames();
|
|
94
|
+
const enabledModules = getDynamicModuleNamesBasedOnMetadata();
|
|
94
95
|
this.logger.log(`ingesting metadata`);
|
|
95
96
|
|
|
96
97
|
for (let i = 0; i < enabledModules.length; i++) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { EntityManager, Repository } from 'typeorm';
|
|
@@ -17,6 +17,7 @@ import { ImportTransactionErrorLogRepository } from 'src/repository/import-trans
|
|
|
17
17
|
@Injectable()
|
|
18
18
|
export class ImportTransactionErrorLogService extends CRUDService<ImportTransactionErrorLog>{
|
|
19
19
|
constructor(
|
|
20
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
20
21
|
readonly modelMetadataService: ModelMetadataService,
|
|
21
22
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
22
23
|
readonly configService: ConfigService,
|