@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
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BadRequestException, NotFoundException } from "@nestjs/common";
|
|
1
|
+
import { BadRequestException, Inject, NotFoundException } from "@nestjs/common";
|
|
2
2
|
import { ConfigService } from "@nestjs/config";
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { isArray } from "class-validator";
|
|
5
|
-
import { CommonEntity, SolidBaseRepository } from "src";
|
|
5
|
+
import { CommonEntity, SolidBaseRepository, User } from "src";
|
|
6
6
|
import { ERROR_MESSAGES } from "src/constants/error-messages";
|
|
7
7
|
import { SUCCESS_MESSAGES } from "src/constants/success-messages";
|
|
8
8
|
import { EntityManager, FindOptionsWhere, In, IsNull, Not, QueryFailedError, SelectQueryBuilder } from "typeorm";
|
|
@@ -33,13 +33,14 @@ import { SelectionStaticFieldCrudManager } from "../helpers/field-crud-managers/
|
|
|
33
33
|
import { ShortTextFieldCrudManager } from "../helpers/field-crud-managers/ShortTextFieldCrudManager";
|
|
34
34
|
import { UUIDFieldCrudManager } from "../helpers/field-crud-managers/UUIDFieldCrudManager";
|
|
35
35
|
import { FieldCrudManager, MediaWithFullUrl } from "../interfaces";
|
|
36
|
-
import { CrudHelperService } from "./crud-helper.service";
|
|
36
|
+
import { CrudHelperService, FilterCombinator, UserIdFields } from "./crud-helper.service";
|
|
37
37
|
import { FileService } from "./file.service";
|
|
38
38
|
import { HashingService } from "./hashing.service";
|
|
39
39
|
import { getMediaStorageProvider } from "./mediaStorageProviders";
|
|
40
40
|
import { ModelMetadataService } from "./model-metadata.service";
|
|
41
41
|
import { ModuleMetadataService } from "./module-metadata.service";
|
|
42
42
|
import { RequestContextService } from "./request-context.service";
|
|
43
|
+
import { BasicGroupFilterDto } from "src/dtos/basic-group-filters.dto";
|
|
43
44
|
|
|
44
45
|
export class CRUDService<T extends CommonEntity> { // Add two generic value i.e Person,CreatePersonDto, so we get the proper types in our service
|
|
45
46
|
|
|
@@ -55,6 +56,8 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
55
56
|
readonly modelName: string,
|
|
56
57
|
readonly moduleName: string,
|
|
57
58
|
readonly moduleRef: ModuleRef,
|
|
59
|
+
readonly defaultEntityManager? : EntityManager
|
|
60
|
+
|
|
58
61
|
//We can just have the Model Entity here
|
|
59
62
|
) { }
|
|
60
63
|
|
|
@@ -178,7 +181,16 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
178
181
|
throw new Error(`Entity [${this.moduleName}.${this.modelName}] with id ${id} not found`);
|
|
179
182
|
}
|
|
180
183
|
|
|
181
|
-
|
|
184
|
+
if (model.draftPublishWorkflow === true && entity.publishedAt) {
|
|
185
|
+
throw new BadRequestException(`Cannot update a published record for model ${this.modelName}. Unpublish it first.`
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// // In some instances for legacy tables sometimes id is mapped as a bigint.
|
|
190
|
+
// // in these cases the update method ends up attempting to insert records due to some type orm type mismatch issue.
|
|
191
|
+
// const idFieldMetadata = model.fields.find(f => f.name === 'id');
|
|
192
|
+
// updateDto.id = idFieldMetadata?.type === 'bigint' ? BigInt(id) : id;
|
|
193
|
+
|
|
182
194
|
// This class will be extended by the generated service class i.e PersonService
|
|
183
195
|
// The data required to identify the model and module name will be passed from the generate CrudService subclass
|
|
184
196
|
//TODO: Algorithm to create the entity
|
|
@@ -239,6 +251,10 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
239
251
|
throw new Error(`Entity [${this.moduleName}.${this.modelName}] with id ${id} not found`);
|
|
240
252
|
}
|
|
241
253
|
|
|
254
|
+
if (model.draftPublishWorkflow === true && entity.publishedAt) {
|
|
255
|
+
throw new BadRequestException(`Cannot update a published record for model ${this.modelName}, Unpublish it first.`);
|
|
256
|
+
}
|
|
257
|
+
|
|
242
258
|
// If the model has internationalisation enabled, delete children with defaultEntityLocaleId === this entity's id
|
|
243
259
|
if (model.internationalisation) {
|
|
244
260
|
// Find all child entities where defaultEntityLocaleId === this entity's id
|
|
@@ -430,6 +446,8 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
430
446
|
const alias = 'entity';
|
|
431
447
|
// Extract the required keys from the input query
|
|
432
448
|
let { limit, offset, populateMedia, populateGroup, groupFilter } = basicFilterDto;
|
|
449
|
+
const populateUserIdFields = this.crudHelperService.extractUserIdFieldsFromPopulate(basicFilterDto.populate);
|
|
450
|
+
|
|
433
451
|
const { singularName, internationalisation, draftPublishWorkflow } = await this.loadModel();
|
|
434
452
|
// Check wheather user has update permission for model
|
|
435
453
|
if (solidRequestContext.activeUser) {
|
|
@@ -445,16 +463,34 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
445
463
|
|
|
446
464
|
// Create above query on pincode table using query builder
|
|
447
465
|
var qb: SelectQueryBuilder<T> = await this.repo.createSecurityRuleAwareQueryBuilder(alias)
|
|
448
|
-
qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
|
|
449
|
-
if (internationalisation && draftPublishWorkflow) {
|
|
450
|
-
qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, internationalisation, draftPublishWorkflow, this.moduleRef);
|
|
451
|
-
}
|
|
452
466
|
|
|
453
467
|
if (basicFilterDto.groupBy) {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
468
|
+
const groupFilterQb = (internationalisation && draftPublishWorkflow)
|
|
469
|
+
? this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, internationalisation, draftPublishWorkflow, this.moduleRef, FilterCombinator.AND, false, false)
|
|
470
|
+
: this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, undefined, undefined, undefined, FilterCombinator.AND, false, false);
|
|
471
|
+
|
|
472
|
+
const groupByFields = this.crudHelperService.normalize(basicFilterDto.groupBy);
|
|
473
|
+
if (!groupByFields.length) {
|
|
474
|
+
throw new BadRequestException(ERROR_MESSAGES.INVALID_GROUP_BY_COUNT);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
if (basicFilterDto.populateGroup) {
|
|
478
|
+
const hasRelationGroup = groupByFields.some(field => field.includes('.'));
|
|
479
|
+
if (hasRelationGroup) {
|
|
480
|
+
throw new BadRequestException('populateGroup is not supported when grouping on relation fields. Fetch group metadata first and retrieve records in a separate call.');
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
const { aliasMap: groupAliasMap, formatMap: groupFormatMap, expressionMap: groupExpressionMap } = this.crudHelperService.applyGroupBySelections(groupFilterQb, groupByFields, alias);
|
|
485
|
+
const aggregateAliasMap = this.crudHelperService.applyAggregates(groupFilterQb, basicFilterDto.aggregates, alias);
|
|
486
|
+
const sortAliasMap = { ...groupAliasMap, ...aggregateAliasMap };
|
|
487
|
+
this.crudHelperService.applyGroupSortingAndPagination(groupFilterQb, basicFilterDto.sort, sortAliasMap, limit, offset);
|
|
488
|
+
|
|
489
|
+
const groupByResult = await groupFilterQb.getRawMany();
|
|
490
|
+
const totalGroups = await this.crudHelperService.countGroups(groupFilterQb);
|
|
491
|
+
|
|
492
|
+
const groupByFieldsOrdered = this.crudHelperService.normalize(basicFilterDto.groupBy || []);
|
|
493
|
+
const { groupMeta, groupRecords } = await this.handleGroupFind(groupByResult, groupFilter, populateGroup, alias, populateUserIdFields, populateMedia, basicFilterDto, groupAliasMap, aggregateAliasMap, groupByFieldsOrdered, groupFormatMap, groupExpressionMap);
|
|
458
494
|
|
|
459
495
|
return {
|
|
460
496
|
meta: {
|
|
@@ -465,8 +501,10 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
465
501
|
}
|
|
466
502
|
}
|
|
467
503
|
else {
|
|
468
|
-
|
|
469
|
-
|
|
504
|
+
qb = (internationalisation && draftPublishWorkflow)
|
|
505
|
+
? this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, internationalisation, draftPublishWorkflow, this.moduleRef)
|
|
506
|
+
: this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
|
|
507
|
+
const { meta, records } = await this.handleNonGroupFind(qb, populateUserIdFields, populateMedia, offset, limit, alias);
|
|
470
508
|
return {
|
|
471
509
|
meta,
|
|
472
510
|
records,
|
|
@@ -474,9 +512,14 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
474
512
|
}
|
|
475
513
|
}
|
|
476
514
|
|
|
477
|
-
private async handleNonGroupFind(qb: SelectQueryBuilder<T>, populateMedia: string[], offset: number, limit: number, alias: string) {
|
|
515
|
+
private async handleNonGroupFind(qb: SelectQueryBuilder<T>, populateUserIdFields: UserIdFields[], populateMedia: string[], offset: number, limit: number, alias: string) {
|
|
478
516
|
const [entities, count] = await qb.getManyAndCount();
|
|
479
517
|
|
|
518
|
+
// Populate the entity with the userId fields
|
|
519
|
+
if (populateUserIdFields && populateUserIdFields.length > 0) {
|
|
520
|
+
await this.handlePopulateUserIdFields(populateUserIdFields, entities);
|
|
521
|
+
}
|
|
522
|
+
|
|
480
523
|
// Populate the entity with the media
|
|
481
524
|
if (populateMedia && populateMedia.length > 0) {
|
|
482
525
|
await this.handlePopulateMedia(populateMedia, entities);
|
|
@@ -485,37 +528,65 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
485
528
|
return this.wrapFindResponse(offset, limit, count, entities);
|
|
486
529
|
}
|
|
487
530
|
|
|
488
|
-
private async handleGroupFind(
|
|
489
|
-
|
|
490
|
-
|
|
531
|
+
private async handleGroupFind(
|
|
532
|
+
groupByResult: any[],
|
|
533
|
+
groupFilter: BasicGroupFilterDto | undefined,
|
|
534
|
+
populateGroup: boolean,
|
|
535
|
+
alias: string,
|
|
536
|
+
populateUserIdFields: UserIdFields[],
|
|
537
|
+
populateMedia: string[],
|
|
538
|
+
baseFilterDto: BasicFilterDto,
|
|
539
|
+
groupAliasMap: Record<string, string>,
|
|
540
|
+
aggregateAliasMap: Record<string, string>,
|
|
541
|
+
groupByFieldsOrdered: string[],
|
|
542
|
+
groupFormatMap: Record<string, string | undefined>,
|
|
543
|
+
groupExpressionMap: Record<string, string>
|
|
544
|
+
) {
|
|
491
545
|
const groupMeta = [];
|
|
492
546
|
const groupRecords = [];
|
|
547
|
+
const aggregateAliasSet = new Set(Object.values(aggregateAliasMap));
|
|
493
548
|
// For each group, get the records and the count
|
|
494
549
|
for (const group of groupByResult) {
|
|
495
550
|
if (populateGroup) {
|
|
496
551
|
let groupByQb: SelectQueryBuilder<T> = await this.repo.createSecurityRuleAwareQueryBuilder(alias);
|
|
497
|
-
|
|
498
|
-
|
|
552
|
+
const groupFilterDto: BasicFilterDto = {
|
|
553
|
+
...baseFilterDto,
|
|
554
|
+
...groupFilter,
|
|
555
|
+
groupBy: undefined,
|
|
556
|
+
aggregates: undefined,
|
|
557
|
+
// Only use explicit groupFilter.sort for record ordering; group-level sorts can contain
|
|
558
|
+
// group expressions (e.g. createdAt:day) that are invalid on record queries.
|
|
559
|
+
sort: groupFilter?.sort,
|
|
560
|
+
};
|
|
561
|
+
groupByQb = this.crudHelperService.buildFilterQuery(groupByQb, groupFilterDto, alias);
|
|
562
|
+
groupByQb = this.crudHelperService.buildGroupByRecordsQuery(groupByQb, group, alias, groupAliasMap, aggregateAliasMap, groupExpressionMap);
|
|
499
563
|
const [entities, count] = await groupByQb.getManyAndCount();
|
|
500
564
|
|
|
565
|
+
// Populate the entity with the userId fields
|
|
566
|
+
if (populateUserIdFields && populateUserIdFields.length > 0) {
|
|
567
|
+
await this.handlePopulateUserIdFields(populateUserIdFields, entities);
|
|
568
|
+
}
|
|
569
|
+
|
|
501
570
|
// Populate the entity with the media
|
|
502
571
|
if (populateMedia && populateMedia.length > 0) {
|
|
503
572
|
await this.handlePopulateMedia(populateMedia, entities);
|
|
504
573
|
}
|
|
505
|
-
const groupData = this.wrapFindResponse(groupFilter
|
|
506
|
-
groupRecords.push(this.crudHelperService.createGroupRecords(group,
|
|
574
|
+
const groupData = this.wrapFindResponse(groupFilter?.offset, groupFilter?.limit, count, entities);
|
|
575
|
+
groupRecords.push(this.crudHelperService.createGroupRecords(group, aggregateAliasSet, groupData, groupByFieldsOrdered, groupAliasMap, groupFormatMap));
|
|
507
576
|
}
|
|
508
|
-
groupMeta.push(this.crudHelperService.createGroupMeta(group,
|
|
577
|
+
groupMeta.push(this.crudHelperService.createGroupMeta(group, aggregateAliasSet, groupByFieldsOrdered, groupAliasMap, groupFormatMap));
|
|
509
578
|
}
|
|
510
579
|
return { groupMeta, groupRecords };
|
|
511
580
|
}
|
|
512
581
|
|
|
513
|
-
private wrapFindResponse(offset: number, limit: number, count: number, entities: T[]) {
|
|
514
|
-
const
|
|
515
|
-
const
|
|
582
|
+
private wrapFindResponse(offset: number | undefined, limit: number | undefined, count: number, entities: T[]) {
|
|
583
|
+
const safeLimit = limit ?? count ?? 0;
|
|
584
|
+
const safeOffset = offset ?? 0;
|
|
585
|
+
const currentPage = safeLimit ? Math.floor(safeOffset / safeLimit) + 1 : 1;
|
|
586
|
+
const totalPages = safeLimit ? Math.ceil(count / safeLimit) : 1;
|
|
516
587
|
|
|
517
|
-
const nextPage = currentPage < totalPages ? currentPage + 1 : null;
|
|
518
|
-
const prevPage = currentPage > 1 ? currentPage - 1 : null;
|
|
588
|
+
const nextPage = safeLimit && currentPage < totalPages ? currentPage + 1 : null;
|
|
589
|
+
const prevPage = safeLimit && currentPage > 1 ? currentPage - 1 : null;
|
|
519
590
|
|
|
520
591
|
const r = {
|
|
521
592
|
meta: {
|
|
@@ -524,15 +595,34 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
524
595
|
nextPage: nextPage,
|
|
525
596
|
prevPage: prevPage,
|
|
526
597
|
totalPages: totalPages,
|
|
527
|
-
perPage: +
|
|
598
|
+
perPage: safeLimit ? +safeLimit : 0,
|
|
528
599
|
},
|
|
529
600
|
records: entities
|
|
530
601
|
};
|
|
531
602
|
return r;
|
|
532
603
|
}
|
|
533
604
|
|
|
605
|
+
// entities is an array of T
|
|
606
|
+
// T can contain createdBy and updatedBy fields
|
|
607
|
+
// We need to populate the createdBy and updatedBy fields with the User entity
|
|
608
|
+
private async handlePopulateUserIdFields(userIdFields: UserIdFields[], entities: T[]) {
|
|
609
|
+
const userRepository = this.entityManager.getRepository(User);
|
|
610
|
+
for (const entity of entities) {
|
|
611
|
+
for (const userFieldPath of userIdFields) {
|
|
612
|
+
const userId = entity[userFieldPath as keyof T] as unknown as number;
|
|
613
|
+
if (userId) {
|
|
614
|
+
const user = await userRepository.findOne({
|
|
615
|
+
where: { id: userId },
|
|
616
|
+
});
|
|
617
|
+
// @ts-ignore
|
|
618
|
+
entity[userFieldPath] = user;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
534
624
|
private async handlePopulateMedia(populateMedia: string[], entities: T[]) {
|
|
535
|
-
const model = await this.
|
|
625
|
+
const model = await this.getDefaultEntityManager().getRepository(ModelMetadata).findOne({
|
|
536
626
|
where: {
|
|
537
627
|
singularName: this.modelName,
|
|
538
628
|
},
|
|
@@ -615,7 +705,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
615
705
|
return mediaDetails as MediaWithFullUrl[];
|
|
616
706
|
}
|
|
617
707
|
|
|
618
|
-
async findOne(id: number, query: any, solidRequestContext: any = {}) {
|
|
708
|
+
async findOne(id: number, query: any={}, solidRequestContext: any = {}) {
|
|
619
709
|
const { populate = [], fields = [], populateMedia = [] } = query;
|
|
620
710
|
|
|
621
711
|
// const normalizedFields = this.crudHelperService.normalize(fields);
|
|
@@ -731,8 +821,30 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
731
821
|
id: id,
|
|
732
822
|
} as unknown as FindOptionsWhere<T>,
|
|
733
823
|
});
|
|
824
|
+
|
|
734
825
|
removedEntities.push(entity);
|
|
735
826
|
}
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
// entity-level flag
|
|
830
|
+
const isDraftPublishEnabled = model?.draftPublishWorkflow === true;
|
|
831
|
+
|
|
832
|
+
let publishedEntitiesExists: T[] = [];
|
|
833
|
+
|
|
834
|
+
if (isDraftPublishEnabled) {
|
|
835
|
+
publishedEntitiesExists = removedEntities.filter(
|
|
836
|
+
(x) => !!x?.publishedAt
|
|
837
|
+
);
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
if (publishedEntitiesExists.length > 0) {
|
|
841
|
+
const publishedEntitiesExistsID = publishedEntitiesExists.map(x => x.id);
|
|
842
|
+
|
|
843
|
+
throw new BadRequestException(
|
|
844
|
+
`Cannot delete published record(s) for model ${this.modelName} with Ids ${publishedEntitiesExistsID.join(', ')}. Unpublish them first.`
|
|
845
|
+
);
|
|
846
|
+
}
|
|
847
|
+
|
|
736
848
|
if (model.enableSoftDelete === true) {
|
|
737
849
|
await this.repo.softRemove(removedEntities);
|
|
738
850
|
return this.repo.save(removedEntities);
|
|
@@ -767,7 +879,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
767
879
|
await this.repo.update(id, {
|
|
768
880
|
deletedAt: null, deletedTracker: "not-deleted"
|
|
769
881
|
} as unknown as QueryDeepPartialEntity<T>
|
|
770
|
-
|
|
882
|
+
);
|
|
771
883
|
|
|
772
884
|
return { message: SUCCESS_MESSAGES.RECORD_RECOVERED, data: softDeletedRows };
|
|
773
885
|
} catch (error) {
|
|
@@ -849,7 +961,7 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
849
961
|
throw new BadRequestException(`Field ${field.name} does not define a relationCoModelSingularName`);
|
|
850
962
|
}
|
|
851
963
|
|
|
852
|
-
const relationCoModel = await this.
|
|
964
|
+
const relationCoModel = await this.getDefaultEntityManager().getRepository(ModelMetadata).findOne({
|
|
853
965
|
where: { singularName: field.relationCoModelSingularName },
|
|
854
966
|
relations: ['fields', 'fields.mediaStorageProvider', 'fields.model'],
|
|
855
967
|
});
|
|
@@ -868,5 +980,92 @@ export class CRUDService<T extends CommonEntity> { // Add two generic value i.e
|
|
|
868
980
|
}
|
|
869
981
|
return model.userKeyField?.name || '';
|
|
870
982
|
}
|
|
871
|
-
}
|
|
872
983
|
|
|
984
|
+
/* Publish a record - sets publishedAt timestamp */
|
|
985
|
+
async publishRecord(id: number, solidRequestContext: any = {}): Promise<T> {
|
|
986
|
+
|
|
987
|
+
const model = await this.loadModel();
|
|
988
|
+
|
|
989
|
+
// Check if publish workflow is enabled for this model
|
|
990
|
+
if (!model.draftPublishWorkflow) {
|
|
991
|
+
throw new BadRequestException(
|
|
992
|
+
`Publish workflow is not enabled for ${this.modelName}`
|
|
993
|
+
);
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
// Check user permissions
|
|
997
|
+
if (solidRequestContext.activeUser) {
|
|
998
|
+
const hasPermission = this.crudHelperService.hasPublishPermissionOnModel(
|
|
999
|
+
solidRequestContext.activeUser,
|
|
1000
|
+
model.singularName
|
|
1001
|
+
);
|
|
1002
|
+
if (!hasPermission) {
|
|
1003
|
+
throw new BadRequestException(ERROR_MESSAGES.FORBIDDEN);
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
// Find the entity
|
|
1008
|
+
const entity = await this.repo.findOne({ where: { id } as any });
|
|
1009
|
+
if (!entity) {
|
|
1010
|
+
throw new NotFoundException(`${this.modelName} with id ${id} not found`);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
// Check if already published
|
|
1014
|
+
if (entity.publishedAt) {
|
|
1015
|
+
throw new BadRequestException(
|
|
1016
|
+
`${this.modelName} with id ${id} is already published`
|
|
1017
|
+
);
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
// Update publish status
|
|
1021
|
+
const updatedEntity = await this.repo.save({ ...entity, publishedAt: new Date() });
|
|
1022
|
+
|
|
1023
|
+
return updatedEntity
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
/* Unpublish a record - clears publishedAt timestamp */
|
|
1027
|
+
async unpublishRecord(id: number, solidRequestContext: any = {}): Promise<T> {
|
|
1028
|
+
|
|
1029
|
+
const model = await this.loadModel();
|
|
1030
|
+
|
|
1031
|
+
// Check if publish workflow is enabled for this model
|
|
1032
|
+
if (!model.draftPublishWorkflow) {
|
|
1033
|
+
throw new BadRequestException(
|
|
1034
|
+
`Publish workflow is not enabled for ${this.modelName}`
|
|
1035
|
+
);
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
// Check user permissions
|
|
1039
|
+
if (solidRequestContext.activeUser) {
|
|
1040
|
+
const hasPermission = this.crudHelperService.hasUnpublishPermissionOnModel(
|
|
1041
|
+
solidRequestContext.activeUser,
|
|
1042
|
+
model.singularName
|
|
1043
|
+
);
|
|
1044
|
+
if (!hasPermission) {
|
|
1045
|
+
throw new BadRequestException(ERROR_MESSAGES.FORBIDDEN);
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
// Find the entity
|
|
1050
|
+
const entity = await this.repo.findOne({ where: { id } as any });
|
|
1051
|
+
if (!entity) {
|
|
1052
|
+
throw new NotFoundException(`${this.modelName} with id ${id} not found`);
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
// Check if already unpublished
|
|
1056
|
+
if (!entity.publishedAt) {
|
|
1057
|
+
throw new BadRequestException(
|
|
1058
|
+
`${this.modelName} with id ${id} is already unpublished`
|
|
1059
|
+
);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
// Update unpublish status
|
|
1063
|
+
const updatedEntity = await this.repo.save({ ...entity, publishedAt: null });
|
|
1064
|
+
|
|
1065
|
+
return updatedEntity
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
private getDefaultEntityManager(){
|
|
1069
|
+
return this.defaultEntityManager ?? this.entityManager;
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { DataSource } from 'typeorm';
|
|
3
|
+
import { readdir, readFile } from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { InjectDataSource } from '@nestjs/typeorm';
|
|
6
|
+
|
|
7
|
+
@Injectable()
|
|
8
|
+
export class DatabaseBootstrapService implements OnModuleInit {
|
|
9
|
+
private readonly logger = new Logger(DatabaseBootstrapService.name);
|
|
10
|
+
|
|
11
|
+
constructor(
|
|
12
|
+
@InjectDataSource()
|
|
13
|
+
private readonly dataSource: DataSource,
|
|
14
|
+
) { }
|
|
15
|
+
|
|
16
|
+
async onModuleInit() {
|
|
17
|
+
if (!this.dataSource.isInitialized) {
|
|
18
|
+
this.logger.warn(`[${this.dataSource.name}] DataSource not initialized. Skipping SQL bootstrap.`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
this.logger.debug(`[${this.dataSource.name}] Bootstrapping stored procedures...`);
|
|
23
|
+
|
|
24
|
+
await this.applyAllSqlFiles();
|
|
25
|
+
|
|
26
|
+
this.logger.debug(`[${this.dataSource.name}] SQL bootstrap completed`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private resolveSqlDirectory(): string {
|
|
30
|
+
const datasourceName = this.dataSource.name || 'default';
|
|
31
|
+
const dbType = this.dataSource.options.type;
|
|
32
|
+
|
|
33
|
+
const sqlFilePath = path.resolve(__dirname, `../../../sql/${datasourceName}/${dbType}`);
|
|
34
|
+
|
|
35
|
+
return sqlFilePath
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private async applyAllSqlFiles() {
|
|
39
|
+
const sqlDir = this.resolveSqlDirectory();
|
|
40
|
+
|
|
41
|
+
this.logger.debug(`[${this.dataSource.name}] SQL directory: ${sqlDir}`);
|
|
42
|
+
|
|
43
|
+
let files: string[];
|
|
44
|
+
try {
|
|
45
|
+
files = await readdir(sqlDir);
|
|
46
|
+
} catch {
|
|
47
|
+
this.logger.warn(
|
|
48
|
+
`[${this.dataSource.name}] No SQL directory found. Skipping.`,
|
|
49
|
+
);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const sqlFiles = files
|
|
54
|
+
.filter(file => file.endsWith('.sql'))
|
|
55
|
+
.sort();
|
|
56
|
+
|
|
57
|
+
if (!sqlFiles.length) {
|
|
58
|
+
this.logger.warn(
|
|
59
|
+
`[${this.dataSource.name}] No SQL files found`,
|
|
60
|
+
);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
for (const file of sqlFiles) {
|
|
65
|
+
await this.applySqlFileSafely(
|
|
66
|
+
path.join(sqlDir, file),
|
|
67
|
+
file,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private async applySqlFileSafely(
|
|
73
|
+
filePath: string,
|
|
74
|
+
fileName: string,
|
|
75
|
+
) {
|
|
76
|
+
this.logger.debug(`[${this.dataSource.name}] Applying ${fileName}`);
|
|
77
|
+
|
|
78
|
+
try {
|
|
79
|
+
const sql = await readFile(filePath, 'utf8');
|
|
80
|
+
await this.dataSource.query(sql);
|
|
81
|
+
|
|
82
|
+
this.logger.debug(`[${this.dataSource.name}] Applied ${fileName}`);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
// DO NOT THROW — continue with next file
|
|
85
|
+
this.logger.error(
|
|
86
|
+
`[${this.dataSource.name}] Failed ${fileName}`,
|
|
87
|
+
error instanceof Error ? error.stack : String(error),
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { ConfigService } from '@nestjs/config';
|
|
4
|
+
import { DiscoveryService, ModuleRef } from '@nestjs/core';
|
|
5
|
+
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
6
|
+
import { EmailTemplateRepository } from 'src/repository/email-template.repository';
|
|
7
|
+
import { EntityManager } from 'typeorm';
|
|
6
8
|
import { EmailTemplate } from '../entities/email-template.entity';
|
|
7
|
-
import {
|
|
8
|
-
import { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';
|
|
9
|
+
import { CrudHelperService } from './crud-helper.service';
|
|
9
10
|
import { CRUDService } from './crud.service';
|
|
10
|
-
import { ModelMetadataService } from './model-metadata.service';
|
|
11
|
-
import { ModuleMetadataService } from './module-metadata.service';
|
|
12
|
-
import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
|
|
13
|
-
import { ConfigService } from '@nestjs/config';
|
|
14
11
|
import { FileService } from './file.service';
|
|
12
|
+
import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
|
|
15
13
|
import { MediaService } from './media.service';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { EmailTemplateRepository } from 'src/repository/email-template.repository';
|
|
14
|
+
import { ModelMetadataService } from './model-metadata.service';
|
|
15
|
+
import { ModuleMetadataService } from './module-metadata.service';
|
|
19
16
|
|
|
20
17
|
@Injectable()
|
|
21
18
|
export class EmailTemplateService extends CRUDService<EmailTemplate>{
|
|
22
19
|
constructor(
|
|
20
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
23
21
|
readonly modelMetadataService: ModelMetadataService,
|
|
24
22
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
25
23
|
readonly mediaStorageProviderService: MediaStorageProviderMetadataService,
|