@solidstarters/solid-core 1.2.124 → 1.2.127
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/cli.js.map +1 -1
- package/dist/commands/helper.js.map +1 -1
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/refresh-module.command.js.map +1 -1
- package/dist/commands/remove-fields.command.js.map +1 -1
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/config/app-builder.config.js.map +1 -1
- package/dist/config/cache.options.js.map +1 -1
- package/dist/config/common.config.js.map +1 -1
- package/dist/config/iam.config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/controllers/action-metadata.controller.js.map +1 -1
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/chatter-message-details.controller.js.map +1 -1
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/export-template.controller.js.map +1 -1
- package/dist/controllers/export-transaction.controller.js.map +1 -1
- package/dist/controllers/field-metadata.controller.js.map +1 -1
- package/dist/controllers/google-authentication.controller.js.map +1 -1
- package/dist/controllers/import-transaction-error-log.controller.js.map +1 -1
- package/dist/controllers/import-transaction.controller.js.map +1 -1
- package/dist/controllers/list-of-values.controller.js.map +1 -1
- package/dist/controllers/locale.controller.js.map +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js +3 -0
- package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
- package/dist/controllers/media.controller.js.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/mq-message-queue.controller.js.map +1 -1
- package/dist/controllers/mq-message.controller.js.map +1 -1
- package/dist/controllers/otp-authentication.controller.js.map +1 -1
- package/dist/controllers/permission-metadata.controller.js.map +1 -1
- package/dist/controllers/role-metadata.controller.js.map +1 -1
- package/dist/controllers/saved-filters.controller.js.map +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +43 -0
- package/dist/controllers/scheduled-job.controller.d.ts.map +1 -0
- package/dist/controllers/scheduled-job.controller.js +179 -0
- package/dist/controllers/scheduled-job.controller.js.map +1 -0
- package/dist/controllers/security-rule.controller.js.map +1 -1
- package/dist/controllers/service.controller.js.map +1 -1
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/controllers/sms-template.controller.js.map +1 -1
- package/dist/controllers/test-queue.controller.d.ts +7 -0
- package/dist/controllers/test-queue.controller.d.ts.map +1 -0
- package/dist/controllers/{queues-test.controller.js → test-queue.controller.js} +12 -20
- package/dist/controllers/test-queue.controller.js.map +1 -0
- package/dist/controllers/test.controller.js.map +1 -1
- package/dist/controllers/user-activity-history.controller.js.map +1 -1
- package/dist/controllers/user-view-metadata.controller.js.map +1 -1
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/view-metadata.controller.js.map +1 -1
- package/dist/decorators/active-user.decorator.js.map +1 -1
- package/dist/decorators/auth.decorator.js.map +1 -1
- package/dist/decorators/computed-field-provider.decorator.js.map +1 -1
- package/dist/decorators/disallow-in-production.decorator.js.map +1 -1
- package/dist/decorators/is-not-in-enum.decorator.js.map +1 -1
- package/dist/decorators/protocol.decorator.js.map +1 -1
- package/dist/decorators/public.decorator.js.map +1 -1
- package/dist/decorators/roles.decorator.js.map +1 -1
- package/dist/decorators/scheduled-job-provider.decorator.d.ts +3 -0
- package/dist/decorators/scheduled-job-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/scheduled-job-provider.decorator.js +11 -0
- package/dist/decorators/scheduled-job-provider.decorator.js.map +1 -0
- package/dist/decorators/selection-provider.decorator.js.map +1 -1
- package/dist/decorators/solid-database-module.decorator.js.map +1 -1
- package/dist/decorators/solid-request-context.decorator.js.map +1 -1
- package/dist/decorators/solid-service.decorator.js.map +1 -1
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/change-password.dto.js.map +1 -1
- package/dist/dtos/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dtos/create-action-metadata.dto.js.map +1 -1
- package/dist/dtos/create-chatter-message-details.dto.js.map +1 -1
- package/dist/dtos/create-chatter-message.dto.js.map +1 -1
- package/dist/dtos/create-email-attachment.dto.js.map +1 -1
- package/dist/dtos/create-email-template.dto.js.map +1 -1
- package/dist/dtos/create-export-template.dto.js.map +1 -1
- package/dist/dtos/create-export-transaction.dto.js.map +1 -1
- package/dist/dtos/create-field-metadata.dto.d.ts +14 -0
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +15 -2
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction-error-log.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction.dto.js.map +1 -1
- package/dist/dtos/create-list-of-values.dto.js.map +1 -1
- package/dist/dtos/create-locale.dto.js.map +1 -1
- package/dist/dtos/create-media-storage-provider-metadata.dto.d.ts +1 -0
- package/dist/dtos/create-media-storage-provider-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-media-storage-provider-metadata.dto.js +6 -1
- package/dist/dtos/create-media-storage-provider-metadata.dto.js.map +1 -1
- package/dist/dtos/create-media.dto.js.map +1 -1
- package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/create-message.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js.map +1 -1
- package/dist/dtos/create-module-metadata.dto.js.map +1 -1
- package/dist/dtos/create-mq-message-queue.dto.js.map +1 -1
- package/dist/dtos/create-mq-message.dto.js.map +1 -1
- package/dist/dtos/create-permission-metadata.dto.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/create-saved-filters.dto.js.map +1 -1
- package/dist/dtos/create-scheduled-job.dto.d.ts +15 -0
- package/dist/dtos/create-scheduled-job.dto.d.ts.map +1 -0
- package/dist/dtos/create-scheduled-job.dto.js +98 -0
- package/dist/dtos/create-scheduled-job.dto.js.map +1 -0
- package/dist/dtos/create-security-rule.dto.js.map +1 -1
- package/dist/dtos/create-setting.dto.js.map +1 -1
- package/dist/dtos/create-short-url.dto.js.map +1 -1
- package/dist/dtos/create-sms-template.dto.js.map +1 -1
- package/dist/dtos/create-user-activity-history.dto.js.map +1 -1
- package/dist/dtos/create-user-view-metadata.dto.js.map +1 -1
- package/dist/dtos/create-user.dto.js.map +1 -1
- package/dist/dtos/create-view-metadata.dto.js.map +1 -1
- package/dist/dtos/export.dto.js.map +1 -1
- package/dist/dtos/fetch-roles.dto.js.map +1 -1
- package/dist/dtos/import-instructions.dto.js.map +1 -1
- package/dist/dtos/initiate-forgot-password.dto.js.map +1 -1
- package/dist/dtos/mutate-role-permissions.dto.js.map +1 -1
- package/dist/dtos/mutate-user-roles-list.dto.js.map +1 -1
- package/dist/dtos/mutate-user-roles.dto.js.map +1 -1
- package/dist/dtos/oauth-user-dto.js.map +1 -1
- package/dist/dtos/otp-confirm-otp.dto.js.map +1 -1
- package/dist/dtos/otp-sign-in.dto.js.map +1 -1
- package/dist/dtos/otp-sign-up.dto.js.map +1 -1
- package/dist/dtos/pagination-query.dto.js.map +1 -1
- package/dist/dtos/post-chatter-message.dto.js.map +1 -1
- package/dist/dtos/query.dto.js.map +1 -1
- package/dist/dtos/refresh-token.dto.js.map +1 -1
- package/dist/dtos/register-private.dto.js.map +1 -1
- package/dist/dtos/security-rule-config.dto.js.map +1 -1
- package/dist/dtos/selection-dynamic-query.dto.js.map +1 -1
- package/dist/dtos/sign-in.dto.js.map +1 -1
- package/dist/dtos/sign-up.dto.js.map +1 -1
- package/dist/dtos/solid-request-context.dto.js.map +1 -1
- package/dist/dtos/sort-filter.dto.js.map +1 -1
- package/dist/dtos/update-action-metadata.dto.js.map +1 -1
- package/dist/dtos/update-chatter-message-details.dto.js.map +1 -1
- package/dist/dtos/update-chatter-message.dto.js.map +1 -1
- package/dist/dtos/update-email-attachment.dto.js.map +1 -1
- package/dist/dtos/update-email-template.dto.js.map +1 -1
- package/dist/dtos/update-export-template.dto.js.map +1 -1
- package/dist/dtos/update-export-transaction.dto.js.map +1 -1
- package/dist/dtos/update-field-metadata.dto.js.map +1 -1
- package/dist/dtos/update-import-transaction-error-log.dto.js.map +1 -1
- package/dist/dtos/update-import-transaction.dto.js.map +1 -1
- package/dist/dtos/update-list-of-values.dto.js.map +1 -1
- package/dist/dtos/update-locale.dto.js.map +1 -1
- package/dist/dtos/update-media-storage-provider.dto.js.map +1 -1
- package/dist/dtos/update-media.dto.js.map +1 -1
- package/dist/dtos/update-menu-item-metadata.dto.js.map +1 -1
- package/dist/dtos/update-message.dto.js.map +1 -1
- package/dist/dtos/update-model-metadata.dto.js.map +1 -1
- package/dist/dtos/update-module-metadata.dto.js.map +1 -1
- package/dist/dtos/update-mq-message-queue.dto.js.map +1 -1
- package/dist/dtos/update-mq-message.dto.js.map +1 -1
- package/dist/dtos/update-permission-metadata.dto.js.map +1 -1
- package/dist/dtos/update-role-metadata.dto.js.map +1 -1
- package/dist/dtos/update-saved-filters.dto.js.map +1 -1
- package/dist/dtos/update-scheduled-job.dto.d.ts +16 -0
- package/dist/dtos/update-scheduled-job.dto.d.ts.map +1 -0
- package/dist/dtos/update-scheduled-job.dto.js +103 -0
- package/dist/dtos/update-scheduled-job.dto.js.map +1 -0
- package/dist/dtos/update-security-rule.dto.js.map +1 -1
- package/dist/dtos/update-setting.dto.js.map +1 -1
- package/dist/dtos/update-settings.dto.js.map +1 -1
- package/dist/dtos/update-sms-template.dto.js.map +1 -1
- package/dist/dtos/update-user-activity-history.dto.js.map +1 -1
- package/dist/dtos/update-user-profile.dto.js.map +1 -1
- package/dist/dtos/update-user-view-metadata.dto.js.map +1 -1
- package/dist/dtos/update-user.dto.js.map +1 -1
- package/dist/dtos/update-view-metadata.dto.js.map +1 -1
- package/dist/dtos/upsert-user-view-metadata.dto.js.map +1 -1
- package/dist/entities/action-metadata.entity.js.map +1 -1
- package/dist/entities/chatter-message-details.entity.js.map +1 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/email-attachment.entity.js.map +1 -1
- package/dist/entities/email-template.entity.js.map +1 -1
- package/dist/entities/export-template.entity.js.map +1 -1
- package/dist/entities/export-transaction.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts +2 -0
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +5 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
- package/dist/entities/import-transaction.entity.js.map +1 -1
- package/dist/entities/list-of-values.entity.js.map +1 -1
- package/dist/entities/locale.entity.js.map +1 -1
- package/dist/entities/media-storage-provider-metadata.entity.d.ts +1 -0
- package/dist/entities/media-storage-provider-metadata.entity.d.ts.map +1 -1
- package/dist/entities/media-storage-provider-metadata.entity.js +5 -1
- package/dist/entities/media-storage-provider-metadata.entity.js.map +1 -1
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/module-metadata.entity.js.map +1 -1
- package/dist/entities/mq-message-queue.entity.js.map +1 -1
- package/dist/entities/mq-message.entity.js.map +1 -1
- package/dist/entities/permission-metadata.entity.js.map +1 -1
- package/dist/entities/role-metadata.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/scheduled-job.entity.d.ts +16 -0
- package/dist/entities/scheduled-job.entity.d.ts.map +1 -0
- package/dist/entities/scheduled-job.entity.js +77 -0
- package/dist/entities/scheduled-job.entity.js.map +1 -0
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/entities/setting.entity.js.map +1 -1
- package/dist/entities/sms-template.entity.js.map +1 -1
- package/dist/entities/user-activity-history.entity.js.map +1 -1
- package/dist/entities/user-password-history.entity.js.map +1 -1
- package/dist/entities/user-view-metadata.entity.js.map +1 -1
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/enums/auth-type.enum.js.map +1 -1
- package/dist/filters/http-exception.filter.js.map +1 -1
- package/dist/guards/access-token.guard.js.map +1 -1
- package/dist/guards/authentication.guard.js.map +1 -1
- package/dist/guards/permissions.guard.js.map +1 -1
- package/dist/guards/roles.guard.js.map +1 -1
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/DateFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/EmailFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/IntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/JsonFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.js.map +1 -1
- package/dist/helpers/google-oauth.helper.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +20 -3
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +30 -5
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/interceptors/logging.interceptor.js.map +1 -1
- package/dist/interceptors/wrap-response.interceptor.js.map +1 -1
- package/dist/interfaces/active-user-data.interface.js.map +1 -1
- package/dist/interfaces/mq.js.map +1 -1
- package/dist/interfaces.d.ts +11 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/api-email-publisher.service.js.map +1 -1
- package/dist/jobs/api-email-queue-options.js.map +1 -1
- package/dist/jobs/api-email-subscriber.service.js.map +1 -1
- package/dist/jobs/database/api-email-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/api-email-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/api-email-publisher-database.service.js +39 -0
- package/dist/jobs/database/api-email-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/api-email-queue-options-database.d.ts +8 -0
- package/dist/jobs/database/api-email-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/api-email-queue-options-database.js +10 -0
- package/dist/jobs/database/api-email-queue-options-database.js.map +1 -0
- package/dist/jobs/database/api-email-subscriber-database.service.d.ts +15 -0
- package/dist/jobs/database/api-email-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/api-email-subscriber-database.service.js +45 -0
- package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-publisher.service.d.ts +12 -0
- package/dist/jobs/database/computed-field-evaluation-publisher.service.d.ts.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-publisher.service.js +39 -0
- package/dist/jobs/database/computed-field-evaluation-publisher.service.js.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-queue-options.d.ts +8 -0
- package/dist/jobs/database/computed-field-evaluation-queue-options.d.ts.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-queue-options.js +10 -0
- package/dist/jobs/database/computed-field-evaluation-queue-options.js.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts +16 -0
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.js +48 -0
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.js.map +1 -0
- package/dist/jobs/database/email-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/email-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/email-publisher-database.service.js +39 -0
- package/dist/jobs/database/email-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/email-queue-options-database.d.ts +8 -0
- package/dist/jobs/database/email-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/email-queue-options-database.js +10 -0
- package/dist/jobs/database/email-queue-options-database.js.map +1 -0
- package/dist/jobs/database/email-subscriber-database.service.d.ts +15 -0
- package/dist/jobs/database/email-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/email-subscriber-database.service.js +45 -0
- package/dist/jobs/database/email-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/{generate-code-publisher.service.d.ts → generate-code-publisher-database.service.d.ts} +2 -2
- package/dist/jobs/database/generate-code-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/generate-code-publisher-database.service.js +39 -0
- package/dist/jobs/database/generate-code-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/{test-queue-db-options.d.ts → generate-code-queue-options-database.d.ts} +1 -1
- package/dist/jobs/database/generate-code-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/{generate-code-queue-options.js → generate-code-queue-options-database.js} +1 -1
- package/dist/jobs/database/generate-code-queue-options-database.js.map +1 -0
- package/dist/jobs/database/{generate-code-subscriber.service.d.ts → generate-code-subscriber-database.service.d.ts} +2 -2
- package/dist/jobs/database/generate-code-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{generate-code-subscriber.service.js → generate-code-subscriber-database.service.js} +10 -10
- package/dist/jobs/database/generate-code-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/otp-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/otp-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{generate-code-publisher.service.js → otp-publisher-database.service.js} +8 -8
- package/dist/jobs/database/otp-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/otp-queue-options-database.d.ts +8 -0
- package/dist/jobs/database/otp-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/otp-queue-options-database.js +10 -0
- package/dist/jobs/database/otp-queue-options-database.js.map +1 -0
- package/dist/jobs/database/otp-subscriber-database.service.d.ts +15 -0
- package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/otp-subscriber-database.service.js +45 -0
- package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/sms-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/sms-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{queue-test-db-publisher.service.js → sms-publisher-database.service.js} +8 -8
- package/dist/jobs/database/sms-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/sms-queue-database-options.d.ts +8 -0
- package/dist/jobs/database/sms-queue-database-options.d.ts.map +1 -0
- package/dist/jobs/database/sms-queue-database-options.js +10 -0
- package/dist/jobs/database/sms-queue-database-options.js.map +1 -0
- package/dist/jobs/database/sms-subscriber-database.service.d.ts +15 -0
- package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/sms-subscriber-database.service.js +45 -0
- package/dist/jobs/database/sms-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/{generate-code-queue-options.d.ts → test-queue-options-database.d.ts} +1 -1
- package/dist/jobs/database/test-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/{test-queue-db-options.js → test-queue-options-database.js} +1 -1
- package/dist/jobs/database/test-queue-options-database.js.map +1 -0
- package/dist/jobs/database/{queue-test-db-publisher.service.d.ts → test-queue-publisher-database.service.d.ts} +2 -2
- package/dist/jobs/database/test-queue-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/test-queue-publisher-database.service.js +39 -0
- package/dist/jobs/database/test-queue-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/{queue-test-db-subscriber.service.d.ts → test-queue-subscriber-database.service.d.ts} +2 -2
- package/dist/jobs/database/test-queue-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{queue-test-db-subscriber.service.js → test-queue-subscriber-database.service.js} +10 -10
- package/dist/jobs/database/test-queue-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/whatsapp-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/whatsapp-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/whatsapp-publisher-database.service.js +39 -0
- package/dist/jobs/database/whatsapp-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/whatsapp-queue-options-database.d.ts +8 -0
- package/dist/jobs/database/whatsapp-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/whatsapp-queue-options-database.js +10 -0
- package/dist/jobs/database/whatsapp-queue-options-database.js.map +1 -0
- package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts +15 -0
- package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/whatsapp-subscriber-database.service.js +45 -0
- package/dist/jobs/database/whatsapp-subscriber-database.service.js.map +1 -0
- package/dist/jobs/email-publisher.service.js.map +1 -1
- package/dist/jobs/email-queue-options.js.map +1 -1
- package/dist/jobs/email-subscriber.service.js.map +1 -1
- package/dist/jobs/otp-publisher.service.js.map +1 -1
- package/dist/jobs/otp-queue-options.js.map +1 -1
- package/dist/jobs/otp-subscriber.service.js.map +1 -1
- package/dist/jobs/sms-publisher.service.js.map +1 -1
- package/dist/jobs/sms-queue-options.js.map +1 -1
- package/dist/jobs/sms-subscriber.service.js.map +1 -1
- package/dist/jobs/test-queue-options.d.ts.map +1 -1
- package/dist/jobs/test-queue-options.js.map +1 -1
- package/dist/jobs/{queue-test-publisher.service.d.ts → test-queue-publisher.service.d.ts} +1 -1
- package/dist/jobs/{queue-test-publisher.service.d.ts.map → test-queue-publisher.service.d.ts.map} +1 -1
- package/dist/jobs/{queue-test-publisher.service.js → test-queue-publisher.service.js} +1 -1
- package/dist/jobs/test-queue-publisher.service.js.map +1 -0
- package/dist/jobs/{queue-test-subscriber.service.d.ts → test-queue-subscriber.service.d.ts} +1 -1
- package/dist/jobs/{queue-test-subscriber.service.d.ts.map → test-queue-subscriber.service.d.ts.map} +1 -1
- package/dist/jobs/{queue-test-subscriber.service.js → test-queue-subscriber.service.js} +1 -1
- package/dist/jobs/test-queue-subscriber.service.js.map +1 -0
- package/dist/jobs/whatsapp-publisher.service.js.map +1 -1
- package/dist/jobs/whatsapp-queue-options.js.map +1 -1
- package/dist/jobs/whatsapp-subscriber.service.js.map +1 -1
- package/dist/listeners/user-registration.listener.js.map +1 -1
- package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
- package/dist/passport-strategies/local.strategy.js.map +1 -1
- package/dist/providers/list-of-values-selection-providers.service.js.map +1 -1
- package/dist/repository/field-metadata.repository.d.ts +8 -0
- package/dist/repository/field-metadata.repository.d.ts.map +1 -0
- package/dist/repository/field-metadata.repository.js +38 -0
- package/dist/repository/field-metadata.repository.js.map +1 -0
- package/dist/repository/field.repository.d.ts +1 -1
- package/dist/repository/field.repository.d.ts.map +1 -1
- package/dist/repository/field.repository.js +6 -6
- package/dist/repository/field.repository.js.map +1 -1
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/repository/solid-base.repository.js.map +1 -1
- package/dist/seeders/email-template-seeder.service.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +20 -2
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +559 -1
- package/dist/seeders/sms-template-seeder.service.js.map +1 -1
- package/dist/seeders/system-fields-seeder.service.d.ts +3 -3
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +5 -6
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/seeders/user-seeder.service.js.map +1 -1
- package/dist/services/access-token-storage.service.js.map +1 -1
- package/dist/services/action-metadata.service.js +1 -1
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/bcrypt.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.js.map +1 -1
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/concat-computed-field-provider.service.js.map +1 -1
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +14 -0
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts.map +1 -0
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js +45 -0
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js.map +1 -0
- package/dist/services/computed-fields/uuid-external-id-computed-field-provider.service.js.map +1 -1
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -0
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +9 -1
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/csv.service.js.map +1 -1
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/export-template.service.js.map +1 -1
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +6 -2
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +21 -4
- 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 +8 -0
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/hashing.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/ElasticEmailService.d.ts +3 -3
- package/dist/services/mail/ElasticEmailService.d.ts.map +1 -1
- package/dist/services/mail/ElasticEmailService.js +5 -5
- package/dist/services/mail/ElasticEmailService.js.map +1 -1
- package/dist/services/mail/SMTPEmailService.d.ts +3 -3
- package/dist/services/mail/SMTPEmailService.d.ts.map +1 -1
- package/dist/services/mail/SMTPEmailService.js +5 -5
- package/dist/services/mail/SMTPEmailService.js.map +1 -1
- package/dist/services/media-storage-provider-metadata-seeder.service.js.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +4 -2
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +23 -7
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/index.js.map +1 -1
- package/dist/services/menu-item-metadata.service.js +1 -1
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +1 -3
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +13 -15
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mq-message-queue.service.js +1 -1
- package/dist/services/mq-message-queue.service.js.map +1 -1
- package/dist/services/mq-message.service.js +1 -1
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/pdf.service.js.map +1 -1
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/queues/database-publisher.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 +1 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts +9 -0
- package/dist/services/queues/publisher-factory.service.d.ts.map +1 -0
- package/dist/services/queues/publisher-factory.service.js +45 -0
- package/dist/services/queues/publisher-factory.service.js.map +1 -0
- package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/queues/redis-publisher.service.js.map +1 -1
- package/dist/services/queues/redis-subscriber.service.js.map +1 -1
- package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
- package/dist/services/request-context.service.js.map +1 -1
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/saved-filters.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +23 -0
- package/dist/services/scheduled-job.service.d.ts.map +1 -0
- package/dist/services/scheduled-job.service.js +59 -0
- package/dist/services/scheduled-job.service.js.map +1 -0
- package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts +5 -0
- package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts.map +1 -0
- package/dist/services/scheduled-jobs/scheduled-job.interface.js +3 -0
- package/dist/services/scheduled-jobs/scheduled-job.interface.js.map +1 -0
- package/dist/services/scheduled-jobs/scheduler.interface.d.ts +4 -0
- package/dist/services/scheduled-jobs/scheduler.interface.d.ts.map +1 -0
- package/dist/services/scheduled-jobs/scheduler.interface.js +3 -0
- package/dist/services/scheduled-jobs/scheduler.interface.js.map +1 -0
- package/dist/services/scheduled-jobs/scheduler.service.d.ts +14 -0
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -0
- package/dist/services/scheduled-jobs/scheduler.service.js +124 -0
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -0
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.d.ts +11 -0
- package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.d.ts.map +1 -0
- package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.js +46 -0
- package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.js.map +1 -0
- package/dist/services/selection-providers/locale-list-selection-provider.service.js.map +1 -1
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/short-url/tiny-url.service.js.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.d.ts +4 -3
- package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.js +3 -2
- package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts +2 -2
- package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
- package/dist/services/sms/Msg91OTPService.js +4 -4
- package/dist/services/sms/Msg91OTPService.js.map +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts +2 -2
- package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91SMSService.js +4 -4
- package/dist/services/sms/Msg91SMSService.js.map +1 -1
- package/dist/services/sms-template.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +1 -0
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +14 -0
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +8 -10
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/services/whatsapp/Msg91WhatsappService.d.ts +2 -2
- package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
- package/dist/services/whatsapp/Msg91WhatsappService.js +4 -4
- package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
- package/dist/solid-core-cli-db.module.js.map +1 -1
- package/dist/solid-core-cli.module.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +108 -65
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +23 -0
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -0
- package/dist/subscribers/computed-entity-field.subscriber.js +95 -0
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -0
- package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/security-rule.subscriber.js.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -1
- package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
- package/dist/transformers/array-transformer.js.map +1 -1
- package/dist/transformers/boolean-transformer.js.map +1 -1
- package/dist/transformers/datetime-transformer.js.map +1 -1
- package/dist/transformers/integer-transformer.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/validators/is-parsable-int.js.map +1 -1
- package/dist/winston.logger.js.map +1 -1
- package/package.json +3 -1
- package/src/# computed field pending issues.md +3 -0
- package/src/controllers/media-storage-provider-metadata.controller.ts +4 -1
- package/src/controllers/scheduled-job.controller.ts +93 -0
- package/src/controllers/{queues-test.controller.ts → test-queue.controller.ts} +12 -11
- package/src/decorators/scheduled-job-provider.decorator.ts +7 -0
- package/src/dtos/create-field-metadata.dto.ts +18 -0
- package/src/dtos/create-media-storage-provider-metadata.dto.ts +12 -7
- package/src/dtos/create-scheduled-job.dto.ts +65 -0
- package/src/dtos/update-scheduled-job.dto.ts +72 -0
- package/src/entities/field-metadata.entity.ts +4 -0
- package/src/entities/media-storage-provider-metadata.entity.ts +5 -1
- package/src/entities/scheduled-job.entity.ts +30 -0
- package/src/helpers/solid-registry.ts +67 -14
- package/src/index.ts +8 -0
- package/src/interfaces.ts +18 -0
- package/src/jobs/database/api-email-publisher-database.service.ts +24 -0
- package/src/jobs/database/api-email-queue-options-database.ts +9 -0
- package/src/jobs/database/api-email-subscriber-database.service.ts +30 -0
- package/src/jobs/database/computed-field-evaluation-publisher.service.ts +23 -0
- package/src/jobs/database/computed-field-evaluation-queue-options.ts +9 -0
- package/src/jobs/database/computed-field-evaluation-subscriber.service.ts +36 -0
- package/src/jobs/database/email-publisher-database.service.ts +23 -0
- package/src/jobs/database/email-queue-options-database.ts +10 -0
- package/src/jobs/database/email-subscriber-database.service.ts +30 -0
- package/src/jobs/database/{generate-code-publisher.service.ts → generate-code-publisher-database.service.ts} +2 -2
- package/src/jobs/database/{generate-code-subscriber.service.ts → generate-code-subscriber-database.service.ts} +3 -3
- package/src/jobs/database/otp-publisher-database.service.ts +23 -0
- package/src/jobs/database/otp-queue-options-database.ts +8 -0
- package/src/jobs/database/otp-subscriber-database.service.ts +30 -0
- package/src/jobs/database/sms-publisher-database.service.ts +23 -0
- package/src/jobs/database/sms-queue-database-options.ts +8 -0
- package/src/jobs/database/sms-subscriber-database.service.ts +30 -0
- package/src/jobs/database/test-queue-options-database.ts +9 -0
- package/src/jobs/database/{queue-test-db-publisher.service.ts → test-queue-publisher-database.service.ts} +2 -2
- package/src/jobs/database/{queue-test-db-subscriber.service.ts → test-queue-subscriber-database.service.ts} +3 -3
- package/src/jobs/database/whatsapp-publisher-database.service.ts +23 -0
- package/src/jobs/database/whatsapp-queue-options-database.ts +9 -0
- package/src/jobs/database/whatsapp-subscriber-database.service.ts +31 -0
- package/src/jobs/test-queue-options.ts +0 -1
- package/src/repository/field-metadata.repository.ts +26 -0
- package/src/repository/field.repository.ts +5 -2
- package/src/seeders/module-metadata-seeder.service.ts +30 -3
- package/src/seeders/seed-data/solid-core-metadata.json +559 -1
- package/src/seeders/system-fields-seeder.service.ts +3 -4
- package/src/services/action-metadata.service.ts +1 -1
- package/src/services/computed-fields/entity/concat-entity-computed-field-provider.service.ts +52 -0
- package/src/services/crud.service.ts +15 -6
- package/src/services/field-metadata.service.ts +38 -8
- package/src/services/file.service.ts +13 -6
- package/src/services/mail/ElasticEmailService.ts +6 -4
- package/src/services/mail/SMTPEmailService.ts +11 -5
- package/src/services/media.service.ts +9 -10
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +30 -9
- package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -5
- package/src/services/mediaStorageProviders/index.ts +3 -3
- package/src/services/menu-item-metadata.service.ts +2 -2
- package/src/services/model-metadata.service.ts +14 -13
- package/src/services/mq-message-queue.service.ts +1 -1
- package/src/services/mq-message.service.ts +1 -1
- package/src/services/queues/database-subscriber.service.ts +1 -2
- package/src/services/queues/publisher-factory.service.ts +41 -0
- package/src/services/queues/rabbitmq-subscriber.service.ts +1 -1
- package/src/services/scheduled-job.service.ts +34 -0
- package/src/services/scheduled-jobs/scheduled-job.interface.ts +5 -0
- package/src/services/scheduled-jobs/scheduler.interface.ts +3 -0
- package/src/services/scheduled-jobs/scheduler.service.ts +165 -0
- package/src/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.ts +40 -0
- package/src/services/sms/Msg91BaseSMSService.ts +5 -4
- package/src/services/sms/Msg91OTPService.ts +7 -7
- package/src/services/sms/Msg91SMSService.ts +5 -4
- package/src/services/solid-introspect.service.ts +23 -0
- package/src/services/view-metadata.service.ts +50 -52
- package/src/services/whatsapp/Msg91WhatsappService.ts +4 -3
- package/src/solid-core.module.ts +106 -63
- package/src/subscribers/computed-entity-field.subscriber.ts +108 -0
- package/tsconfig.json +1 -0
- package/dist/controllers/queues-test.controller.d.ts +0 -9
- package/dist/controllers/queues-test.controller.d.ts.map +0 -1
- package/dist/controllers/queues-test.controller.js.map +0 -1
- package/dist/jobs/database/generate-code-publisher.service.d.ts.map +0 -1
- package/dist/jobs/database/generate-code-publisher.service.js.map +0 -1
- package/dist/jobs/database/generate-code-queue-options.d.ts.map +0 -1
- package/dist/jobs/database/generate-code-queue-options.js.map +0 -1
- package/dist/jobs/database/generate-code-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/database/generate-code-subscriber.service.js.map +0 -1
- package/dist/jobs/database/queue-test-db-publisher.service.d.ts.map +0 -1
- package/dist/jobs/database/queue-test-db-publisher.service.js.map +0 -1
- package/dist/jobs/database/queue-test-db-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/database/queue-test-db-subscriber.service.js.map +0 -1
- package/dist/jobs/database/test-queue-db-options.d.ts.map +0 -1
- package/dist/jobs/database/test-queue-db-options.js.map +0 -1
- package/dist/jobs/queue-test-publisher.service.js.map +0 -1
- package/dist/jobs/queue-test-subscriber.service.js.map +0 -1
- package/src/jobs/database/test-queue-db-options.ts +0 -13
- package/src/services/user.service.ts.bkp +0 -311
- /package/src/jobs/database/{generate-code-queue-options.ts → generate-code-queue-options-database.ts} +0 -0
- /package/src/jobs/{queue-test-publisher.service.ts → test-queue-publisher.service.ts} +0 -0
- /package/src/jobs/{queue-test-subscriber.service.ts → test-queue-subscriber.service.ts} +0 -0
|
@@ -28,7 +28,7 @@ export class ActionMetadataService extends CRUDService<ActionMetadata> {
|
|
|
28
28
|
readonly moduleRef: ModuleRef
|
|
29
29
|
|
|
30
30
|
) {
|
|
31
|
-
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'actionMetadata', '
|
|
31
|
+
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'actionMetadata', 'solid-core', moduleRef);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
async findOneByUserKey(name: string, relations = {}) {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Injectable } from "@nestjs/common";
|
|
2
|
+
import { kebabCase } from "lodash";
|
|
3
|
+
import { ComputedFieldProvider } from "src/decorators/computed-field-provider.decorator";
|
|
4
|
+
import { CommonEntity } from "src/entities/common.entity";
|
|
5
|
+
import { ComputedFieldMetadata } from "src/helpers/solid-registry";
|
|
6
|
+
import { IEntityPreComputeFieldProvider } from "src/interfaces";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export interface ConcatComputedFieldContext {
|
|
10
|
+
separator: string; // The separator to use between concatenated values
|
|
11
|
+
fields: string[]; // The fields to concatenate
|
|
12
|
+
slugify?: boolean; // Optional: if true, slugify each field value before concatenation
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@ComputedFieldProvider()
|
|
16
|
+
@Injectable()
|
|
17
|
+
export class ConcatEntityComputedFieldProvider<T extends CommonEntity> implements IEntityPreComputeFieldProvider<T, ConcatComputedFieldContext, string> {
|
|
18
|
+
|
|
19
|
+
name(): string {
|
|
20
|
+
return "ConcatEntityComputedFieldProvider";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
help(): string {
|
|
24
|
+
return "Computed field provider used to create fields whose value is a concatenation of other fields in the same model.";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async preComputeValue(entity: T, computedFieldMetadata: ComputedFieldMetadata<ConcatComputedFieldContext>): Promise<string> {
|
|
28
|
+
const { computedFieldValueProviderCtxt } = computedFieldMetadata;
|
|
29
|
+
const separator = computedFieldValueProviderCtxt.separator || ' '; // Default to space if no separator is provided
|
|
30
|
+
const fields = computedFieldValueProviderCtxt.fields || [];
|
|
31
|
+
const slugify = computedFieldValueProviderCtxt.slugify || false;
|
|
32
|
+
|
|
33
|
+
let concatenatedString = '';
|
|
34
|
+
for (let i = 0; i < fields.length; i++) {
|
|
35
|
+
const field = fields[i];
|
|
36
|
+
|
|
37
|
+
// if slugify then each field val to be converted to a slug before concatenation
|
|
38
|
+
let fieldVal = entity[field];
|
|
39
|
+
if (slugify && typeof fieldVal === 'string') {
|
|
40
|
+
fieldVal = kebabCase(fieldVal);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (concatenatedString) {
|
|
44
|
+
concatenatedString += separator;
|
|
45
|
+
}
|
|
46
|
+
concatenatedString += fieldVal;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return concatenatedString;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BadRequestException, Optional } from "@nestjs/common";
|
|
2
|
-
import { ConfigService } from "@nestjs/config";
|
|
1
|
+
import { BadRequestException, Inject, Optional } from "@nestjs/common";
|
|
2
|
+
import { ConfigService, ConfigType } from "@nestjs/config";
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { EntityManager, In, IsNull, Not, QueryFailedError, SelectQueryBuilder } from "typeorm";
|
|
5
5
|
import { Repository } from "typeorm/repository/Repository";
|
|
@@ -35,6 +35,7 @@ import { getMediaStorageProvider } from "./mediaStorageProviders";
|
|
|
35
35
|
import { ModelMetadataService } from "./model-metadata.service";
|
|
36
36
|
import { ModuleMetadataService } from "./module-metadata.service";
|
|
37
37
|
import { isArray } from "class-validator";
|
|
38
|
+
|
|
38
39
|
export class CRUDService<T> { // Add two generic value i.e Person,CreatePersonDto, so we get the proper types in our service
|
|
39
40
|
|
|
40
41
|
constructor(
|
|
@@ -259,7 +260,7 @@ export class CRUDService<T> { // Add two generic value i.e Person,CreatePersonDt
|
|
|
259
260
|
}
|
|
260
261
|
|
|
261
262
|
private fieldCrudManager(fieldMetadata: FieldMetadata, entityManager: EntityManager, isPartialUpdate: boolean = false, isUpdate: boolean = false): FieldCrudManager {
|
|
262
|
-
const commonOptions = { required: fieldMetadata.required && !isPartialUpdate, fieldName: fieldMetadata.name, isUpdate};
|
|
263
|
+
const commonOptions = { required: fieldMetadata.required && !isPartialUpdate, fieldName: fieldMetadata.name, isUpdate };
|
|
263
264
|
switch (fieldMetadata.type) {
|
|
264
265
|
case SolidFieldType.shortText: {
|
|
265
266
|
const options = { ...commonOptions, length: fieldMetadata.max, regexPattern: fieldMetadata.regexPattern };
|
|
@@ -403,7 +404,7 @@ export class CRUDService<T> { // Add two generic value i.e Person,CreatePersonDt
|
|
|
403
404
|
|
|
404
405
|
// The value will be computed by the computed provider
|
|
405
406
|
// Invoke the appropriate computed provider, get the value and add to the dto
|
|
406
|
-
const options = { ...commonOptions, computedFieldProvider: fieldMetadata.computedFieldValueProvider, computedFieldValueProviderCtxt: fieldMetadata.computedFieldValueProviderCtxt, computedFieldValueType: fieldMetadata.computedFieldValueType as ComputedFieldValueType, discoveryService: this.discoveryService, skipComputation: isPartialUpdate };
|
|
407
|
+
const options = { ...commonOptions, computedFieldProvider: fieldMetadata.computedFieldValueProvider, computedFieldValueProviderCtxt: fieldMetadata.computedFieldValueProviderCtxt, computedFieldValueType: fieldMetadata.computedFieldValueType as ComputedFieldValueType, discoveryService: this.discoveryService, skipComputation: this.isSkipComputation(isPartialUpdate, fieldMetadata) };
|
|
407
408
|
return new ComputedFieldCrudManager(options);
|
|
408
409
|
}
|
|
409
410
|
default:
|
|
@@ -411,6 +412,14 @@ export class CRUDService<T> { // Add two generic value i.e Person,CreatePersonDt
|
|
|
411
412
|
}
|
|
412
413
|
}
|
|
413
414
|
|
|
415
|
+
private isSkipComputation(isPartialUpdate: boolean, computedFieldMetadata: FieldMetadata) {
|
|
416
|
+
if (isPartialUpdate) return true; // If it is a partial update, then skip computation
|
|
417
|
+
if (computedFieldMetadata.computedFieldTriggerConfig && computedFieldMetadata.computedFieldTriggerConfig.length > 0) {
|
|
418
|
+
return true; // computedFieldTriggerConfig is a new field introduced as part of the IEntityComputedFieldProvider new interface, so this computation will be skiipped in crud service & will be called in the subscriber instead
|
|
419
|
+
}
|
|
420
|
+
return false; // If it is not a partial update, then do not skip computation
|
|
421
|
+
}
|
|
422
|
+
|
|
414
423
|
async find(basicFilterDto: BasicFilterDto, solidRequestContext: any = {}) {
|
|
415
424
|
const alias = 'entity';
|
|
416
425
|
// Extract the required keys from the input query
|
|
@@ -427,8 +436,8 @@ export class CRUDService<T> { // Add two generic value i.e Person,CreatePersonDt
|
|
|
427
436
|
// Create above query on pincode table using query builder
|
|
428
437
|
var qb: SelectQueryBuilder<T> = this.repo.createQueryBuilder(alias)
|
|
429
438
|
qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);
|
|
430
|
-
if(internationalisation && draftPublishWorkflow){
|
|
431
|
-
qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias,internationalisation, draftPublishWorkflow,this.moduleRef);
|
|
439
|
+
if (internationalisation && draftPublishWorkflow) {
|
|
440
|
+
qb = this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias, internationalisation, draftPublishWorkflow, this.moduleRef);
|
|
432
441
|
}
|
|
433
442
|
|
|
434
443
|
if (basicFilterDto.groupBy) {
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { classify } from '@angular-devkit/core/src/utils/strings';
|
|
2
|
+
import { Injectable, Logger, NotFoundException, OnApplicationBootstrap } from '@nestjs/common';
|
|
3
|
+
import { InjectDataSource } from '@nestjs/typeorm';
|
|
3
4
|
import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
|
|
4
5
|
import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
|
|
5
|
-
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
6
|
+
import { ComputedFieldMetadata, SolidRegistry } from 'src/helpers/solid-registry';
|
|
7
|
+
import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
|
|
6
8
|
import { DataSource, Repository, SelectQueryBuilder } from 'typeorm';
|
|
7
9
|
import { BasicFilterDto } from '../dtos/basic-filters.dto';
|
|
8
|
-
import { CascadeType, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';
|
|
10
|
+
import { CascadeType, ComputedFieldTriggerConfig, ComputedFieldTriggerOperation, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';
|
|
9
11
|
import { SelectionDynamicQueryDto } from '../dtos/selection-dynamic-query.dto';
|
|
10
12
|
import { UpdateFieldMetaDataDto } from '../dtos/update-field-metadata.dto';
|
|
11
13
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
12
14
|
import { ModelMetadata } from '../entities/model-metadata.entity';
|
|
13
15
|
import { ISelectionProviderValues } from '../interfaces';
|
|
14
16
|
import { CrudHelperService } from './crud-helper.service';
|
|
15
|
-
import { classify } from '@angular-devkit/core/src/utils/strings';
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
@Injectable()
|
|
19
|
-
export class FieldMetadataService {
|
|
20
|
+
export class FieldMetadataService implements OnApplicationBootstrap {
|
|
20
21
|
constructor(
|
|
21
|
-
|
|
22
|
-
private readonly fieldMetadataRepo: Repository<FieldMetadata>,
|
|
22
|
+
private readonly fieldMetadataRepo: FieldMetadataRepository,
|
|
23
23
|
@InjectDataSource()
|
|
24
24
|
private readonly dataSource: DataSource,
|
|
25
25
|
private readonly solidRegistry: SolidRegistry,
|
|
@@ -29,6 +29,36 @@ export class FieldMetadataService {
|
|
|
29
29
|
|
|
30
30
|
private logger = new Logger(FieldMetadataService.name);
|
|
31
31
|
|
|
32
|
+
onApplicationBootstrap() {
|
|
33
|
+
this.loadAndRegisterComputedFieldsDetails();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async loadAndRegisterComputedFieldsDetails() {
|
|
37
|
+
// Load all the modules and models and within that load all the computed fields
|
|
38
|
+
const computedFieldsWithModelAndModule = await this.fieldMetadataRepo.findComputedFieldsPopulatedWithModelAndModule();
|
|
39
|
+
|
|
40
|
+
// Convert the computed fields object above to the ComputedFieldMetadata type
|
|
41
|
+
const computedFieldMetadata: ComputedFieldMetadata[] = computedFieldsWithModelAndModule.map((field) => {
|
|
42
|
+
// const defaultComputedFieldTriggerConfig: ComputedFieldTriggerConfig = {
|
|
43
|
+
// moduleName: field.model.module.name,
|
|
44
|
+
// modelName: field.model.singularName,
|
|
45
|
+
// operations: [ComputedFieldTriggerOperation.create, ComputedFieldTriggerOperation.update, ComputedFieldTriggerOperation.delete], // Default operations, can be overridden
|
|
46
|
+
// }
|
|
47
|
+
return {
|
|
48
|
+
moduleName: field.model.module.name,
|
|
49
|
+
modelName: field.model.singularName,
|
|
50
|
+
fieldName: field.name,
|
|
51
|
+
computedFieldValueType: field.computedFieldValueType as ComputedFieldValueType,
|
|
52
|
+
computedFieldTriggerConfig: field.computedFieldTriggerConfig ?? [], // Ensure it's an array, default to empty if not provided
|
|
53
|
+
computedFieldValueProviderName: field.computedFieldValueProvider,
|
|
54
|
+
computedFieldValueProviderCtxt: field.computedFieldValueProviderCtxt ? JSON.parse(field.computedFieldValueProviderCtxt) : {}, // Parse the context if it exists, default to empty object
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Register the computed fields in the SolidRegistry. Capture only computed field related info
|
|
59
|
+
this.solidRegistry.registerComputedFieldMetadata(computedFieldMetadata);
|
|
60
|
+
}
|
|
61
|
+
|
|
32
62
|
async updateInverseField(field: FieldMetadata, fieldRepository: Repository<FieldMetadata>, modelRepository: Repository<ModelMetadata>) {
|
|
33
63
|
if (!field.model || !field.model.module) {
|
|
34
64
|
throw new Error('Model and module are required to update inverse field');
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
// import * as AWS from 'aws-sdk';
|
|
4
|
-
import { S3Client, PutObjectCommand, DeleteObjectCommand, ObjectCannedACL } from '@aws-sdk/client-s3';
|
|
4
|
+
import { S3Client, PutObjectCommand, DeleteObjectCommand, ObjectCannedACL, GetObjectCommand } from '@aws-sdk/client-s3';
|
|
5
5
|
import { ConfigType } from '@nestjs/config';
|
|
6
6
|
import commonConfig, { AwsS3Config } from '../config/common.config';
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { Readable } from 'stream';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import { getSignedUrl as awsGetSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
12
10
|
|
|
13
11
|
@Injectable()
|
|
14
12
|
export class FileService {
|
|
@@ -166,7 +164,7 @@ export class FileService {
|
|
|
166
164
|
private isValidS3Config(config: AwsS3Config): boolean {
|
|
167
165
|
return !!config.S3_AWS_ACCESS_KEY && !!config.S3_AWS_SECRET_KEY && !!config.S3_AWS_REGION_NAME;
|
|
168
166
|
}
|
|
169
|
-
|
|
167
|
+
|
|
170
168
|
/**
|
|
171
169
|
* Save a stream to a file
|
|
172
170
|
* @param stream - Readable stream
|
|
@@ -198,5 +196,14 @@ export class FileService {
|
|
|
198
196
|
return false;
|
|
199
197
|
}
|
|
200
198
|
}
|
|
201
|
-
|
|
199
|
+
|
|
200
|
+
public async getSignedUrl(key: string, expiresIn: number, bucketName: string): Promise<string> {
|
|
201
|
+
const command = new GetObjectCommand({
|
|
202
|
+
Bucket: bucketName,
|
|
203
|
+
Key: key,
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
return awsGetSignedUrl(this.s3Client, command, { expiresIn });
|
|
207
|
+
}
|
|
208
|
+
|
|
202
209
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import { ConfigType } from '@nestjs/config';
|
|
3
|
-
import Handlebars
|
|
3
|
+
import Handlebars from "handlebars";
|
|
4
4
|
import commonConfig from 'src/config/common.config';
|
|
5
5
|
import { EmailAttachment } from 'src/entities/email-attachment.entity';
|
|
6
|
-
import { ApiEmailQueuePublisher } from 'src/jobs/api-email-publisher.service';
|
|
7
6
|
import { QueueMessage } from 'src/interfaces/mq';
|
|
8
7
|
import { EmailTemplateService } from '../email-template.service';
|
|
9
8
|
import { PdfService } from '../pdf.service';
|
|
10
9
|
import { FileService } from '../file.service';
|
|
11
10
|
import { IMail, MailAttachment, MailAttachmentWrapper } from "../../interfaces";
|
|
11
|
+
import { PublisherFactory } from '../queues/publisher-factory.service';
|
|
12
12
|
|
|
13
13
|
const ElasticEmail = require('@elasticemail/elasticemail-client');
|
|
14
14
|
|
|
@@ -20,7 +20,8 @@ export class ElasticEmailService implements IMail {
|
|
|
20
20
|
constructor(
|
|
21
21
|
@Inject(commonConfig.KEY)
|
|
22
22
|
private readonly commonConfiguration: ConfigType<typeof commonConfig>,
|
|
23
|
-
private readonly emailPublisher: ApiEmailQueuePublisher,
|
|
23
|
+
// private readonly emailPublisher: ApiEmailQueuePublisher,
|
|
24
|
+
private readonly publisherFactory: PublisherFactory<any>,
|
|
24
25
|
private readonly emailTemplateService: EmailTemplateService,
|
|
25
26
|
private readonly pdfService: PdfService,
|
|
26
27
|
private readonly fileService: FileService,
|
|
@@ -88,7 +89,8 @@ export class ElasticEmailService implements IMail {
|
|
|
88
89
|
async sendEmailAsynchronously(message: QueueMessage<any>) {
|
|
89
90
|
const { to, subject, body } = message.payload;
|
|
90
91
|
// this.notificationPublisherService.publish(message);
|
|
91
|
-
this.emailPublisher.publish(message);
|
|
92
|
+
// this.emailPublisher.publish(message);
|
|
93
|
+
this.publisherFactory.publish(message, 'ApiEmailQueuePublisher');
|
|
92
94
|
this.logger.debug(`Queueing email to ${to} with subject ${subject} and body ${body}`);
|
|
93
95
|
}
|
|
94
96
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import { ConfigType } from '@nestjs/config';
|
|
3
3
|
import { QueueMessage } from 'src/interfaces/mq';
|
|
4
|
-
import { EmailQueuePublisher } from 'src/jobs/email-publisher.service';
|
|
5
4
|
import commonConfig from 'src/config/common.config';
|
|
6
5
|
import { EmailTemplateService } from '../email-template.service';
|
|
7
6
|
import Handlebars from "handlebars";
|
|
8
7
|
import { IMail, MailAttachment } from "../../interfaces";
|
|
8
|
+
import { PublisherFactory } from '../queues/publisher-factory.service';
|
|
9
9
|
|
|
10
10
|
const nodemailer = require("nodemailer");
|
|
11
11
|
|
|
@@ -17,7 +17,9 @@ export class SMTPEMailService implements IMail {
|
|
|
17
17
|
constructor(
|
|
18
18
|
@Inject(commonConfig.KEY)
|
|
19
19
|
private readonly commonConfiguration: ConfigType<typeof commonConfig>,
|
|
20
|
-
private readonly emailPublisher: EmailQueuePublisher,
|
|
20
|
+
// private readonly emailPublisher: EmailQueuePublisher,
|
|
21
|
+
// private readonly emailDbPublisher: EmailQueueDbPublisher,
|
|
22
|
+
private readonly publisherFactory: PublisherFactory<any>,
|
|
21
23
|
private readonly emailTemplateService: EmailTemplateService,
|
|
22
24
|
) {
|
|
23
25
|
this.transporter = nodemailer.createTransport({
|
|
@@ -50,7 +52,7 @@ export class SMTPEMailService implements IMail {
|
|
|
50
52
|
await this.sendEmail(to, subject, body, shouldQueueEmails, parentEntity, parentEntityId, attachments);
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
async sendEmail(to: string, subject: string, body: string, shouldQueueEmails = false, parentEntity = null, parentEntityId = null, attachments: MailAttachment[] = [], cc: string[]=[]): Promise<void> {
|
|
55
|
+
async sendEmail(to: string, subject: string, body: string, shouldQueueEmails = false, parentEntity = null, parentEntityId = null, attachments: MailAttachment[] = [], cc: string[] = []): Promise<void> {
|
|
54
56
|
const message = {
|
|
55
57
|
payload: {
|
|
56
58
|
from: this.commonConfiguration.smtpMail.from,
|
|
@@ -81,7 +83,11 @@ export class SMTPEMailService implements IMail {
|
|
|
81
83
|
async sendEmailAsynchronously(message) {
|
|
82
84
|
const { to, subject, body } = message.payload;
|
|
83
85
|
// this.notificationPublisherService.publish(message);
|
|
84
|
-
this.emailPublisher.publish(message);
|
|
86
|
+
// this.emailPublisher.publish(message);
|
|
87
|
+
// this.emailDbPublisher.publish(message);
|
|
88
|
+
|
|
89
|
+
this.publisherFactory.publish(message, 'EmailQueuePublisher');
|
|
90
|
+
|
|
85
91
|
this.logger.debug(`Queueing email to ${to} with subject ${subject} and body ${body}`);
|
|
86
92
|
}
|
|
87
93
|
|
|
@@ -92,7 +98,7 @@ export class SMTPEMailService implements IMail {
|
|
|
92
98
|
const attachmentEntry = {
|
|
93
99
|
filename: attachment.filename,
|
|
94
100
|
contentType: attachment.contentType,
|
|
95
|
-
}
|
|
101
|
+
}
|
|
96
102
|
if (attachment.path) {
|
|
97
103
|
attachmentEntry['path'] = attachment.path;
|
|
98
104
|
}
|
|
@@ -40,12 +40,10 @@ export class MediaService extends CRUDService<Media> {
|
|
|
40
40
|
@InjectRepository(FieldMetadata)
|
|
41
41
|
private readonly fieldMetadataRepo: Repository<FieldMetadata>,
|
|
42
42
|
readonly moduleRef: ModuleRef,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
43
|
) {
|
|
47
44
|
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'media', 'solid-core', moduleRef);
|
|
48
45
|
}
|
|
46
|
+
|
|
49
47
|
async find(basicFilterDto: BasicFilterDto, solidRequestContext: any = {}) {
|
|
50
48
|
const data = await super.find(basicFilterDto, solidRequestContext);
|
|
51
49
|
if (data.records) {
|
|
@@ -64,17 +62,18 @@ export class MediaService extends CRUDService<Media> {
|
|
|
64
62
|
if (data.groupRecords) {
|
|
65
63
|
data.groupRecords.forEach((group) => {
|
|
66
64
|
group.groupData.records.forEach((media) => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
65
|
+
if (media.mediaStorageProviderMetadata?.type === MediaStorageProviderType.Filesystem) {
|
|
66
|
+
media.relativeUri = `${process.env.BASE_URL}/${this.getFileSysytemFullFilePath(media.relativeUri)}`;
|
|
67
|
+
}
|
|
68
|
+
else if (media.mediaStorageProviderMetadata?.type === MediaStorageProviderType.AwsS3) {
|
|
69
|
+
media.relativeUri = this.getAwsS3FullFilePath(media.relativeUri, media.mediaStorageProviderMetadata.bucketName, media.mediaStorageProviderMetadata.region);
|
|
70
|
+
}
|
|
73
71
|
});
|
|
74
|
-
|
|
72
|
+
});
|
|
75
73
|
}
|
|
76
74
|
return data
|
|
77
75
|
}
|
|
76
|
+
|
|
78
77
|
async upload(createDto: any, files: Array<Express.Multer.File>) {
|
|
79
78
|
|
|
80
79
|
if (!files) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Injectable, Logger } from "@nestjs/common";
|
|
2
|
-
import { ConfigService } from "@nestjs/config";
|
|
1
|
+
import { Inject, Injectable, Logger } from "@nestjs/common";
|
|
2
|
+
import { ConfigService, ConfigType } from "@nestjs/config";
|
|
3
3
|
import { CommonEntity } from "src/entities/common.entity";
|
|
4
4
|
import { FieldMetadata } from "src/entities/field-metadata.entity";
|
|
5
5
|
import { Media } from "src/entities/media.entity";
|
|
@@ -7,6 +7,7 @@ import { MediaStorageProvider } from "src/interfaces";
|
|
|
7
7
|
import { FileService } from "src/services/file.service";
|
|
8
8
|
import { Readable } from "stream";
|
|
9
9
|
import { MediaRepository } from "src/repository/media.repository";
|
|
10
|
+
import commonConfig from "src/config/common.config";
|
|
10
11
|
|
|
11
12
|
@Injectable()
|
|
12
13
|
export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
|
|
@@ -17,21 +18,41 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
17
18
|
// private readonly appBuilderConfiguration: ConfigType<typeof appBuilderConfig>,
|
|
18
19
|
private readonly configService: ConfigService,
|
|
19
20
|
readonly fileService: FileService,
|
|
20
|
-
readonly mediaRepository: MediaRepository
|
|
21
|
+
readonly mediaRepository: MediaRepository,
|
|
22
|
+
@Inject(commonConfig.KEY)
|
|
23
|
+
private readonly commonConfiguration: ConfigType<typeof commonConfig>,
|
|
21
24
|
) { }
|
|
25
|
+
|
|
22
26
|
storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
23
27
|
throw new Error("Method not implemented.");
|
|
24
28
|
}
|
|
29
|
+
|
|
25
30
|
async retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
26
31
|
if (!(entity instanceof CommonEntity)) {
|
|
27
32
|
throw new Error("Entity must be an instance of CommonEntity"); //FIXME This needs to be handled through generics. e.g T extends CommonEntity
|
|
28
33
|
}
|
|
29
34
|
const media = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id, ['mediaStorageProviderMetadata']);
|
|
35
|
+
|
|
36
|
+
// TODO: Check if the mediaStorageProvider (s3 in this case) is configured with a public bucket or not.
|
|
37
|
+
// If private bucket then we need to return a "signed-url", the timeout for the signed url can be configured in the media storage provider entity and modified using the CRUD interface.
|
|
30
38
|
// Add the full URL to the media
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
for (const m of media) {
|
|
40
|
+
const storageMeta = m.mediaStorageProviderMetadata;
|
|
41
|
+
if (storageMeta.isPublic === false) {
|
|
42
|
+
// Generate signed URL
|
|
43
|
+
const expiryInSeconds = (storageMeta.signedUrlExpiry ?? 60) * 60; // default 5 min
|
|
44
|
+
m['_full_url'] = await this.fileService.getSignedUrl(m.relativeUri, expiryInSeconds, storageMeta?.bucketName);
|
|
45
|
+
} else {
|
|
46
|
+
// Public S3 or local filesystem: use normal URL
|
|
47
|
+
m['_full_url'] = this.getFullFilePath(m);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
34
51
|
return media;
|
|
52
|
+
// media.forEach(m => {
|
|
53
|
+
// m['_full_url'] = this.getFullFilePath(m);
|
|
54
|
+
// });
|
|
55
|
+
// return media;
|
|
35
56
|
}
|
|
36
57
|
|
|
37
58
|
async store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
@@ -44,9 +65,9 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
44
65
|
// Store the file in the configured S3 Bucket
|
|
45
66
|
let awsFileUrl;
|
|
46
67
|
if (mediaFieldMetadata.mediaStorageProvider.isPublic === true) {
|
|
47
|
-
awsFileUrl = await this.fileService.copyToS3(file.path, file.mimetype, fileName, mediaFieldMetadata.mediaStorageProvider.bucketName,);
|
|
48
|
-
} else {
|
|
49
68
|
awsFileUrl = await this.fileService.copyToS3WithPublic(file.path, file.mimetype, fileName, mediaFieldMetadata.mediaStorageProvider.bucketName,);
|
|
69
|
+
} else {
|
|
70
|
+
awsFileUrl = await this.fileService.copyToS3(file.path, file.mimetype, fileName, mediaFieldMetadata.mediaStorageProvider.bucketName,);
|
|
50
71
|
}
|
|
51
72
|
await this.fileService.deleteFile(file.path);
|
|
52
73
|
|
|
@@ -71,7 +92,7 @@ export class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
71
92
|
if (!(entity instanceof CommonEntity)) {
|
|
72
93
|
throw new Error("Entity must be an instance of CommonEntity"); //FIXME This needs to be handled through generics. e.g T extends CommonEntity
|
|
73
94
|
}
|
|
74
|
-
const existingMedia = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id,['mediaStorageProviderMetadata']);
|
|
95
|
+
const existingMedia = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id, ['mediaStorageProviderMetadata']);
|
|
75
96
|
this.mediaRepository.deleteByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id);
|
|
76
97
|
existingMedia.forEach(media => {
|
|
77
98
|
this.fileService.deleteFromS3(media.relativeUri, mediaFieldMetadata.mediaStorageProvider.bucketName); //TODO
|
|
@@ -15,12 +15,12 @@ export class FileStorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
15
15
|
constructor(
|
|
16
16
|
// @Inject(appBuilderConfig.KEY)
|
|
17
17
|
// private readonly appBuilderConfiguration: ConfigType<typeof appBuilderConfig>,
|
|
18
|
-
private readonly configService: ConfigService,
|
|
18
|
+
private readonly configService: ConfigService,
|
|
19
19
|
readonly fileService: FileService,
|
|
20
20
|
readonly mediaRepository: MediaRepository
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
) { }
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
async retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]> {
|
|
25
25
|
if (!(entity instanceof CommonEntity)) {
|
|
26
26
|
throw new Error("Entity must be an instance of CommonEntity"); //FIXME This needs to be handled through generics. e.g T extends CommonEntity
|
|
@@ -45,7 +45,7 @@ export class FileStorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
45
45
|
await this.fileService.deleteFile(file.path);
|
|
46
46
|
|
|
47
47
|
// Create an entry in the media table
|
|
48
|
-
|
|
48
|
+
const mediaEntity = await this.mediaRepository.createMedia({
|
|
49
49
|
entityId: entity.id,
|
|
50
50
|
modelMetadataId: mediaFieldMetadata.model.id,
|
|
51
51
|
relativeUri: this.getFileName(file),
|
|
@@ -86,7 +86,7 @@ export class FileStorageProvider<T> implements MediaStorageProvider<T> {
|
|
|
86
86
|
if (!(entity instanceof CommonEntity)) {
|
|
87
87
|
throw new Error("Entity must be an instance of CommonEntity"); //FIXME This needs to be handled through generics. e.g T extends CommonEntity
|
|
88
88
|
}
|
|
89
|
-
const existingMedia = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id,['mediaStorageProviderMetadata']);
|
|
89
|
+
const existingMedia = await this.mediaRepository.findByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id, ['mediaStorageProviderMetadata']);
|
|
90
90
|
this.mediaRepository.deleteByEntityIdAndFieldIdAndModelMetadataId(entity.id, mediaFieldMetadata.id, mediaFieldMetadata.model.id);
|
|
91
91
|
existingMedia.forEach(media => {
|
|
92
92
|
this.fileService.deleteFile(this.getFullFilePath(media.relativeUri));
|
|
@@ -6,11 +6,11 @@ import { FileStorageProvider } from "./file-storage-provider";
|
|
|
6
6
|
export async function getMediaStorageProvider<T>(
|
|
7
7
|
moduleRef: ModuleRef,
|
|
8
8
|
type: MediaStorageProviderType): Promise<any> {
|
|
9
|
-
switch(type) {
|
|
9
|
+
switch (type) {
|
|
10
10
|
case MediaStorageProviderType.Filesystem:
|
|
11
|
-
return await moduleRef.get(FileStorageProvider,{ strict: false });
|
|
11
|
+
return await moduleRef.get(FileStorageProvider, { strict: false });
|
|
12
12
|
case MediaStorageProviderType.AwsS3:
|
|
13
|
-
return await moduleRef.get(FileS3StorageProvider,{ strict: false });
|
|
13
|
+
return await moduleRef.get(FileS3StorageProvider, { strict: false });
|
|
14
14
|
default:
|
|
15
15
|
throw new Error(`Unknown media storage provider type ${type}`);
|
|
16
16
|
}
|
|
@@ -32,7 +32,7 @@ export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
|
|
|
32
32
|
readonly moduleRef: ModuleRef
|
|
33
33
|
|
|
34
34
|
) {
|
|
35
|
-
super(modelMetadataService, moduleMetadataService, configService, fileService,
|
|
35
|
+
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'menuItemMetadata', 'solid-core', moduleRef);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
|
|
@@ -178,7 +178,7 @@ export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
|
|
|
178
178
|
title: rootItem.displayName || rootItem.name,
|
|
179
179
|
path: path,
|
|
180
180
|
key: rootItem.name.toLowerCase().replace(/\s+/g, '-'),
|
|
181
|
-
icon
|
|
181
|
+
icon: rootItem.iconName,
|
|
182
182
|
// iconVariant : rootItem.iconVariant
|
|
183
183
|
}
|
|
184
184
|
if (children.length > 0) {
|
|
@@ -24,7 +24,6 @@ import { CrudHelperService } from './crud-helper.service';
|
|
|
24
24
|
import { FieldMetadataService } from './field-metadata.service';
|
|
25
25
|
import { MediaStorageProviderMetadataService } from './media-storage-provider-metadata.service';
|
|
26
26
|
import { RoleMetadataService } from './role-metadata.service';
|
|
27
|
-
import { GenerateCodePublisher } from 'src/jobs/database/generate-code-publisher.service';
|
|
28
27
|
import { PermissionMetadata } from 'src/entities/permission-metadata.entity';
|
|
29
28
|
import { classify, dasherize } from '@angular-devkit/core/src/utils/strings';
|
|
30
29
|
import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
|
|
@@ -45,7 +44,8 @@ export class ModelMetadataService {
|
|
|
45
44
|
private readonly fieldMetadataService: FieldMetadataService,
|
|
46
45
|
private readonly roleService: RoleMetadataService,
|
|
47
46
|
private readonly moduleMetadataHelperService: ModuleMetadataHelperService,
|
|
48
|
-
|
|
47
|
+
// No longer used.
|
|
48
|
+
// private readonly generateCodePublihser: GenerateCodePublisherDatabase,
|
|
49
49
|
) { }
|
|
50
50
|
|
|
51
51
|
async findMany(basicFilterDto: BasicFilterDto) {
|
|
@@ -228,7 +228,7 @@ export class ModelMetadataService {
|
|
|
228
228
|
if (fieldMetadata.isUserKey) {
|
|
229
229
|
userKeyField = affectedField;
|
|
230
230
|
}
|
|
231
|
-
listViewLayout.push({ type: "field", attrs: { name: `${affectedField.name}
|
|
231
|
+
listViewLayout.push({ type: "field", attrs: { name: `${affectedField.name}` } })
|
|
232
232
|
formViewLayout.push({ type: "field", attrs: { name: `${affectedField.name}` } })
|
|
233
233
|
|
|
234
234
|
}
|
|
@@ -779,13 +779,13 @@ export class ModelMetadataService {
|
|
|
779
779
|
const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(model.module.name);
|
|
780
780
|
const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
|
|
781
781
|
|
|
782
|
-
const listViewLayoutFields = [{ type: "field", attrs: { name: `id
|
|
782
|
+
const listViewLayoutFields = [{ type: "field", attrs: { name: `id` } }];
|
|
783
783
|
const formViewLayoutFields = [];
|
|
784
784
|
|
|
785
785
|
for (let i = 0; i < model.fields.length; i++) {
|
|
786
786
|
const field = model.fields[i];
|
|
787
787
|
if (field.isSystem) continue;
|
|
788
|
-
listViewLayoutFields.push({ type: "field", attrs: { name: `${field.name}
|
|
788
|
+
listViewLayoutFields.push({ type: "field", attrs: { name: `${field.name}` } })
|
|
789
789
|
formViewLayoutFields.push({ type: "field", attrs: { name: `${field.name}` } })
|
|
790
790
|
}
|
|
791
791
|
this.populateVAMConfigInFileInternal(formViewLayoutFields, model, listViewLayoutFields, metaData);
|
|
@@ -801,7 +801,7 @@ export class ModelMetadataService {
|
|
|
801
801
|
}
|
|
802
802
|
|
|
803
803
|
// Populate the View, Actions and Menus in the config file
|
|
804
|
-
private populateVAMConfigInFileInternal(formViewLayoutFields: any[], model: ModelMetadata, listViewLayoutFields: { type: string; attrs: { name: string;
|
|
804
|
+
private populateVAMConfigInFileInternal(formViewLayoutFields: any[], model: ModelMetadata, listViewLayoutFields: { type: string; attrs: { name: string; }; }[], metaData: any) {
|
|
805
805
|
const column1Fields = [];
|
|
806
806
|
const column2Fields = [];
|
|
807
807
|
|
|
@@ -813,35 +813,36 @@ export class ModelMetadataService {
|
|
|
813
813
|
column2Fields.push(formViewLayoutFields[i]);
|
|
814
814
|
}
|
|
815
815
|
}
|
|
816
|
+
const actionName = `${model.singularName}-list-action`;
|
|
816
817
|
const viewName = `${model.singularName}-list-view`;
|
|
817
818
|
const formViewName = `${model.singularName}-form-view`;
|
|
818
819
|
const menuName = `${model.singularName}-menu-item`;
|
|
819
820
|
|
|
820
821
|
const action = {
|
|
821
|
-
displayName: `${model.displayName} List
|
|
822
|
-
name:
|
|
822
|
+
displayName: `${model.displayName} List Action`,
|
|
823
|
+
name: actionName,
|
|
823
824
|
type: "solid",
|
|
824
825
|
domain: "",
|
|
825
826
|
context: "",
|
|
826
827
|
customComponent: `/admin/address-master/${model.singularName}/all`,
|
|
827
828
|
customIsModal: true,
|
|
828
829
|
serverEndpoint: "",
|
|
829
|
-
viewUserKey:
|
|
830
|
+
viewUserKey: viewName,
|
|
830
831
|
moduleUserKey: `${model.module.name}`,
|
|
831
832
|
modelUserKey: `${model.singularName}`
|
|
832
833
|
};
|
|
833
834
|
|
|
834
835
|
const menu = {
|
|
835
836
|
displayName: `${model.displayName}`,
|
|
836
|
-
name:
|
|
837
|
+
name: menuName,
|
|
837
838
|
sequenceNumber: 1,
|
|
838
|
-
actionUserKey:
|
|
839
|
+
actionUserKey: actionName,
|
|
839
840
|
moduleUserKey: `${model.module.name}`,
|
|
840
841
|
parentMenuItemUserKey: ""
|
|
841
842
|
};
|
|
842
843
|
|
|
843
844
|
const modelListview = {
|
|
844
|
-
name:
|
|
845
|
+
name: viewName,
|
|
845
846
|
displayName: `${model.displayName}`,
|
|
846
847
|
type: "list",
|
|
847
848
|
context: "{}",
|
|
@@ -867,7 +868,7 @@ export class ModelMetadataService {
|
|
|
867
868
|
|
|
868
869
|
|
|
869
870
|
const modelFormView = {
|
|
870
|
-
name:
|
|
871
|
+
name: formViewName,
|
|
871
872
|
displayName: `${model.displayName}`,
|
|
872
873
|
type: "form",
|
|
873
874
|
context: "{}",
|
|
@@ -29,7 +29,7 @@ export class MqMessageQueueService extends CRUDService<MqMessageQueue> {
|
|
|
29
29
|
readonly moduleRef: ModuleRef
|
|
30
30
|
|
|
31
31
|
) {
|
|
32
|
-
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessageQueue', '
|
|
32
|
+
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessageQueue', 'solid-core', moduleRef);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
async resolveQueue(queueName: string): Promise<MqMessageQueue> {
|
|
@@ -29,7 +29,7 @@ export class MqMessageService extends CRUDService<MqMessage> {
|
|
|
29
29
|
readonly repo: Repository<MqMessage>,
|
|
30
30
|
readonly moduleRef: ModuleRef
|
|
31
31
|
) {
|
|
32
|
-
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessage', '
|
|
32
|
+
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'mqMessage', 'solid-core', moduleRef);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
async lockNextPendingMessage(queueName: string): Promise<MqMessage | null> {
|