@solidstarters/solid-core 1.2.189 → 1.2.192
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/config/iam.config.d.ts +6 -4
- package/dist/config/iam.config.d.ts.map +1 -1
- package/dist/config/iam.config.js +3 -2
- package/dist/config/iam.config.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 +2 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/authentication.controller.d.ts +1 -1
- package/dist/controllers/authentication.controller.d.ts.map +1 -1
- package/dist/controllers/authentication.controller.js +4 -3
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/email-template.controller.d.ts.map +1 -1
- package/dist/controllers/email-template.controller.js +8 -8
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/export-template.controller.d.ts +2 -1
- package/dist/controllers/export-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-template.controller.js +5 -3
- package/dist/controllers/export-template.controller.js.map +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +2 -1
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.js +6 -3
- package/dist/controllers/import-transaction.controller.js.map +1 -1
- package/dist/controllers/sms-template.controller.d.ts.map +1 -1
- package/dist/controllers/sms-template.controller.js +7 -7
- package/dist/controllers/sms-template.controller.js.map +1 -1
- package/dist/decorators/active-user.decorator.d.ts +1 -1
- package/dist/decorators/security-rule-config-provider.decorator.d.ts +3 -0
- package/dist/decorators/security-rule-config-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/security-rule-config-provider.decorator.js +11 -0
- package/dist/decorators/security-rule-config-provider.decorator.js.map +1 -0
- package/dist/decorators/solid-password.decorator.d.ts +5 -1
- package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
- package/dist/decorators/solid-password.decorator.js +18 -6
- package/dist/decorators/solid-password.decorator.js.map +1 -1
- package/dist/dtos/change-password.dto.js +1 -1
- package/dist/dtos/change-password.dto.js.map +1 -1
- package/dist/dtos/confirm-forgot-password.dto.js +1 -1
- package/dist/dtos/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dtos/create-saved-filters.dto.d.ts +1 -0
- package/dist/dtos/create-saved-filters.dto.d.ts.map +1 -1
- package/dist/dtos/create-saved-filters.dto.js +7 -1
- package/dist/dtos/create-saved-filters.dto.js.map +1 -1
- package/dist/dtos/create-security-rule.dto.d.ts +1 -0
- package/dist/dtos/create-security-rule.dto.d.ts.map +1 -1
- package/dist/dtos/create-security-rule.dto.js +7 -1
- package/dist/dtos/create-security-rule.dto.js.map +1 -1
- package/dist/dtos/update-saved-filters.dto.d.ts +1 -0
- package/dist/dtos/update-saved-filters.dto.d.ts.map +1 -1
- package/dist/dtos/update-saved-filters.dto.js +7 -1
- package/dist/dtos/update-saved-filters.dto.js.map +1 -1
- package/dist/dtos/update-security-rule.dto.d.ts +1 -0
- package/dist/dtos/update-security-rule.dto.d.ts.map +1 -1
- package/dist/dtos/update-security-rule.dto.js +7 -1
- package/dist/dtos/update-security-rule.dto.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +2 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.d.ts +1 -0
- package/dist/entities/saved-filters.entity.d.ts.map +1 -1
- package/dist/entities/saved-filters.entity.js +6 -2
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/security-rule.entity.d.ts +1 -0
- package/dist/entities/security-rule.entity.d.ts.map +1 -1
- package/dist/entities/security-rule.entity.js +5 -1
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts +2 -3
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +2 -8
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- 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/solid-registry.d.ts +5 -1
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +16 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/user-helper.d.ts +2 -0
- package/dist/helpers/user-helper.d.ts.map +1 -0
- package/dist/helpers/user-helper.js +41 -0
- package/dist/helpers/user-helper.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +6 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/trigger-mcp-client-subscriber.service.d.ts +2 -2
- package/dist/jobs/trigger-mcp-client-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/trigger-mcp-client-subscriber.service.js +2 -2
- package/dist/jobs/trigger-mcp-client-subscriber.service.js.map +1 -1
- package/dist/jobs/twilio-sms-subscriber.service.d.ts +2 -2
- package/dist/jobs/twilio-sms-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/twilio-sms-subscriber.service.js +2 -2
- package/dist/jobs/twilio-sms-subscriber.service.js.map +1 -1
- package/dist/repository/action-metadata.repository.d.ts +12 -0
- package/dist/repository/action-metadata.repository.d.ts.map +1 -0
- package/dist/repository/action-metadata.repository.js +34 -0
- package/dist/repository/action-metadata.repository.js.map +1 -0
- package/dist/repository/ai-interaction.repository.d.ts +12 -0
- package/dist/repository/ai-interaction.repository.d.ts.map +1 -0
- package/dist/repository/ai-interaction.repository.js +34 -0
- package/dist/repository/ai-interaction.repository.js.map +1 -0
- package/dist/repository/chatter-message-details.repository.d.ts +1 -1
- package/dist/repository/chatter-message-details.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message-details.repository.js +2 -2
- package/dist/repository/chatter-message-details.repository.js.map +1 -1
- package/dist/repository/chatter-message.repository.d.ts +1 -1
- package/dist/repository/chatter-message.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message.repository.js +2 -2
- package/dist/repository/chatter-message.repository.js.map +1 -1
- package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +12 -0
- package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +1 -0
- package/dist/repository/dashboard-question-sql-dataset-config.repository.js +34 -0
- package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +1 -0
- package/dist/repository/dashboard-question.repository.d.ts +12 -0
- package/dist/repository/dashboard-question.repository.d.ts.map +1 -0
- package/dist/repository/dashboard-question.repository.js +34 -0
- package/dist/repository/dashboard-question.repository.js.map +1 -0
- package/dist/repository/dashboard-variable.repository.d.ts +12 -0
- package/dist/repository/dashboard-variable.repository.d.ts.map +1 -0
- package/dist/repository/dashboard-variable.repository.js +34 -0
- package/dist/repository/dashboard-variable.repository.js.map +1 -0
- package/dist/repository/dashboard.repository.d.ts +9 -5
- package/dist/repository/dashboard.repository.d.ts.map +1 -1
- package/dist/repository/dashboard.repository.js +11 -5
- package/dist/repository/dashboard.repository.js.map +1 -1
- package/dist/repository/email-template.repository.d.ts +12 -0
- package/dist/repository/email-template.repository.d.ts.map +1 -0
- package/dist/repository/email-template.repository.js +34 -0
- package/dist/repository/email-template.repository.js.map +1 -0
- package/dist/repository/export-template.repository.d.ts +12 -0
- package/dist/repository/export-template.repository.d.ts.map +1 -0
- package/dist/repository/export-template.repository.js +34 -0
- package/dist/repository/export-template.repository.js.map +1 -0
- package/dist/repository/export-transaction.repository.d.ts +12 -0
- package/dist/repository/export-transaction.repository.d.ts.map +1 -0
- package/dist/repository/export-transaction.repository.js +34 -0
- package/dist/repository/export-transaction.repository.js.map +1 -0
- package/dist/repository/field-metadata.repository.d.ts +4 -3
- package/dist/repository/field-metadata.repository.d.ts.map +1 -1
- package/dist/repository/field-metadata.repository.js +5 -5
- package/dist/repository/field-metadata.repository.js.map +1 -1
- package/dist/repository/import-transaction-error-log.repository.d.ts +12 -0
- package/dist/repository/import-transaction-error-log.repository.d.ts.map +1 -0
- package/dist/repository/import-transaction-error-log.repository.js +34 -0
- package/dist/repository/import-transaction-error-log.repository.js.map +1 -0
- package/dist/repository/import-transaction.repository.d.ts +12 -0
- package/dist/repository/import-transaction.repository.d.ts.map +1 -0
- package/dist/repository/import-transaction.repository.js +34 -0
- package/dist/repository/import-transaction.repository.js.map +1 -0
- package/dist/repository/list-of-values.repository.d.ts +12 -0
- package/dist/repository/list-of-values.repository.d.ts.map +1 -0
- package/dist/repository/list-of-values.repository.js +34 -0
- package/dist/repository/list-of-values.repository.js.map +1 -0
- package/dist/repository/locale.repository.d.ts +12 -0
- package/dist/repository/locale.repository.d.ts.map +1 -0
- package/dist/repository/locale.repository.js +34 -0
- package/dist/repository/locale.repository.js.map +1 -0
- package/dist/repository/media-storage-provider-metadata.repository.d.ts +8 -0
- package/dist/repository/media-storage-provider-metadata.repository.d.ts.map +1 -0
- package/dist/repository/media-storage-provider-metadata.repository.js +28 -0
- package/dist/repository/media-storage-provider-metadata.repository.js.map +1 -0
- package/dist/repository/media.repository.d.ts +13 -8
- package/dist/repository/media.repository.d.ts.map +1 -1
- package/dist/repository/media.repository.js +18 -18
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/repository/menu-item-metadata.repository.d.ts +12 -0
- package/dist/repository/menu-item-metadata.repository.d.ts.map +1 -0
- package/dist/repository/menu-item-metadata.repository.js +34 -0
- package/dist/repository/menu-item-metadata.repository.js.map +1 -0
- package/dist/repository/model-metadata.repository.d.ts +8 -0
- package/dist/repository/model-metadata.repository.d.ts.map +1 -0
- package/dist/repository/model-metadata.repository.js +28 -0
- package/dist/repository/model-metadata.repository.js.map +1 -0
- package/dist/repository/module-metadata.repository.d.ts +8 -0
- package/dist/repository/module-metadata.repository.d.ts.map +1 -0
- package/dist/repository/module-metadata.repository.js +28 -0
- package/dist/repository/module-metadata.repository.js.map +1 -0
- package/dist/repository/mq-message-queue.repository.d.ts +12 -0
- package/dist/repository/mq-message-queue.repository.d.ts.map +1 -0
- package/dist/repository/mq-message-queue.repository.js +34 -0
- package/dist/repository/mq-message-queue.repository.js.map +1 -0
- package/dist/repository/mq-message.repository.d.ts +12 -0
- package/dist/repository/mq-message.repository.d.ts.map +1 -0
- package/dist/repository/mq-message.repository.js +34 -0
- package/dist/repository/mq-message.repository.js.map +1 -0
- package/dist/repository/permission-metadata.repository.d.ts +12 -0
- package/dist/repository/permission-metadata.repository.d.ts.map +1 -0
- package/dist/repository/permission-metadata.repository.js +34 -0
- package/dist/repository/permission-metadata.repository.js.map +1 -0
- package/dist/repository/role-metadata.repository.d.ts +12 -0
- package/dist/repository/role-metadata.repository.d.ts.map +1 -0
- package/dist/repository/role-metadata.repository.js +34 -0
- package/dist/repository/role-metadata.repository.js.map +1 -0
- package/dist/repository/saved-filters.repository.d.ts +12 -0
- package/dist/repository/saved-filters.repository.d.ts.map +1 -0
- package/dist/repository/saved-filters.repository.js +62 -0
- package/dist/repository/saved-filters.repository.js.map +1 -0
- package/dist/repository/scheduled-job.repository.d.ts +9 -9
- package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
- package/dist/repository/scheduled-job.repository.js +11 -12
- package/dist/repository/scheduled-job.repository.js.map +1 -1
- package/dist/repository/security-rule.repository.d.ts +7 -7
- package/dist/repository/security-rule.repository.d.ts.map +1 -1
- package/dist/repository/security-rule.repository.js +28 -17
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/repository/setting.repository.d.ts +12 -0
- package/dist/repository/setting.repository.d.ts.map +1 -0
- package/dist/repository/setting.repository.js +34 -0
- package/dist/repository/setting.repository.js.map +1 -0
- package/dist/repository/sms-template.repository.d.ts +12 -0
- package/dist/repository/sms-template.repository.d.ts.map +1 -0
- package/dist/repository/sms-template.repository.js +34 -0
- package/dist/repository/sms-template.repository.js.map +1 -0
- package/dist/repository/solid-base.repository.d.ts +4 -3
- package/dist/repository/solid-base.repository.d.ts.map +1 -1
- package/dist/repository/solid-base.repository.js +12 -5
- package/dist/repository/solid-base.repository.js.map +1 -1
- package/dist/repository/user-activity-history.repository.d.ts +12 -0
- package/dist/repository/user-activity-history.repository.d.ts.map +1 -0
- package/dist/repository/user-activity-history.repository.js +34 -0
- package/dist/repository/user-activity-history.repository.js.map +1 -0
- package/dist/repository/user-view-metadata.repository.d.ts +12 -0
- package/dist/repository/user-view-metadata.repository.d.ts.map +1 -0
- package/dist/repository/user-view-metadata.repository.js +34 -0
- package/dist/repository/user-view-metadata.repository.js.map +1 -0
- package/dist/repository/view-metadata.repository.d.ts +9 -5
- package/dist/repository/view-metadata.repository.d.ts.map +1 -1
- package/dist/repository/view-metadata.repository.js +11 -5
- package/dist/repository/view-metadata.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +9 -5
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +32 -13
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.d.ts +2 -3
- package/dist/seeders/permission-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js +2 -5
- package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +109 -62
- package/dist/seeders/system-fields-seeder.service.d.ts +2 -3
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +4 -8
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/action-metadata.service.d.ts +7 -6
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +7 -8
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts +10 -9
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +9 -10
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +3 -4
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +11 -11
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +12 -12
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +16 -18
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +5 -5
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +9 -9
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +4 -3
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
- package/dist/services/dashboard-question-sql-dataset-config.service.js +2 -3
- package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
- package/dist/services/dashboard-question.service.d.ts +4 -3
- package/dist/services/dashboard-question.service.d.ts.map +1 -1
- package/dist/services/dashboard-question.service.js +2 -2
- package/dist/services/dashboard-question.service.js.map +1 -1
- package/dist/services/dashboard-variable.service.d.ts +4 -3
- package/dist/services/dashboard-variable.service.d.ts.map +1 -1
- package/dist/services/dashboard-variable.service.js +2 -3
- package/dist/services/dashboard-variable.service.js.map +1 -1
- package/dist/services/email-template.service.d.ts +4 -3
- package/dist/services/email-template.service.d.ts.map +1 -1
- package/dist/services/email-template.service.js +2 -3
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/export-template.service.d.ts +6 -4
- package/dist/services/export-template.service.d.ts.map +1 -1
- package/dist/services/export-template.service.js +14 -4
- package/dist/services/export-template.service.js.map +1 -1
- package/dist/services/export-transaction.service.d.ts +8 -7
- package/dist/services/export-transaction.service.d.ts.map +1 -1
- package/dist/services/export-transaction.service.js +11 -14
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.js +1 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +1 -17
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts +4 -3
- package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
- package/dist/services/import-transaction-error-log.service.js +2 -3
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts +8 -4
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +43 -16
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +19 -6
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +164 -9
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.d.ts +9 -10
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +8 -14
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
- package/dist/services/mail/smtp-email.service.js +6 -1
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.d.ts +4 -4
- package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.js +5 -11
- package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts +7 -6
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +8 -12
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts +4 -3
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +4 -5
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +3 -2
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +45 -43
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts +3 -2
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +3 -3
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mq-message-queue.service.d.ts +4 -3
- package/dist/services/mq-message-queue.service.d.ts.map +1 -1
- package/dist/services/mq-message-queue.service.js +2 -3
- package/dist/services/mq-message-queue.service.js.map +1 -1
- package/dist/services/mq-message.service.d.ts +4 -3
- package/dist/services/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +2 -2
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/permission-metadata.service.d.ts +4 -3
- package/dist/services/permission-metadata.service.d.ts.map +1 -1
- package/dist/services/permission-metadata.service.js +2 -3
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-publisher.service.d.ts +8 -3
- package/dist/services/queues/rabbitmq-publisher.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-publisher.service.js +79 -18
- package/dist/services/queues/rabbitmq-publisher.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 +9 -3
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts +10 -9
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +9 -11
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/saved-filters.service.d.ts +7 -6
- package/dist/services/saved-filters.service.d.ts.map +1 -1
- package/dist/services/saved-filters.service.js +6 -7
- package/dist/services/saved-filters.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +4 -3
- package/dist/services/scheduled-job.service.d.ts.map +1 -1
- package/dist/services/scheduled-job.service.js +2 -3
- package/dist/services/scheduled-job.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts +3 -4
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +6 -11
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/security-rule.service.d.ts +4 -3
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +3 -3
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +3 -2
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +25 -9
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/sms-template.service.d.ts +4 -3
- package/dist/services/sms-template.service.d.ts.map +1 -1
- package/dist/services/sms-template.service.js +2 -3
- 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.d.ts +4 -3
- package/dist/services/user-activity-history.service.d.ts.map +1 -1
- package/dist/services/user-activity-history.service.js +2 -3
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.d.ts +4 -3
- package/dist/services/user-view-metadata.service.d.ts.map +1 -1
- package/dist/services/user-view-metadata.service.js +2 -3
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.d.ts +2 -2
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +3 -3
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +5 -6
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +5 -10
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +164 -121
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +4 -4
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +4 -5
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/{list-of-values-metadata.subscriber.d.ts → list-of-values.subscriber.d.ts} +5 -5
- package/dist/subscribers/list-of-values.subscriber.d.ts.map +1 -0
- package/dist/subscribers/{list-of-values-metadata.subscriber.js → list-of-values.subscriber.js} +13 -13
- package/dist/subscribers/list-of-values.subscriber.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/rebuild.sh +2 -3
- package/src/config/iam.config.ts +3 -2
- package/src/constants/error-messages.ts +3 -0
- package/src/controllers/authentication.controller.ts +2 -2
- package/src/controllers/email-template.controller.ts +57 -64
- package/src/controllers/export-template.controller.ts +4 -2
- package/src/controllers/import-transaction.controller.ts +5 -2
- package/src/controllers/sms-template.controller.ts +55 -55
- package/src/decorators/security-rule-config-provider.decorator.ts +7 -0
- package/src/decorators/solid-password.decorator.ts +25 -17
- package/src/dtos/change-password.dto.ts +1 -1
- package/src/dtos/confirm-forgot-password.dto.ts +1 -1
- package/src/dtos/create-saved-filters.dto.ts +4 -0
- package/src/dtos/create-security-rule.dto.ts +5 -0
- package/src/dtos/update-saved-filters.dto.ts +4 -0
- package/src/dtos/update-security-rule.dto.ts +6 -1
- package/src/entities/field-metadata.entity.ts +2 -1
- package/src/entities/saved-filters.entity.ts +3 -1
- package/src/entities/security-rule.entity.ts +2 -0
- package/src/helpers/model-metadata-helper.service.ts +4 -5
- package/src/helpers/module-metadata-helper.service.ts +9 -0
- package/src/helpers/solid-registry.ts +21 -2
- package/src/helpers/user-helper.ts +37 -0
- package/src/index.ts +0 -1
- package/src/interfaces.ts +7 -0
- package/src/jobs/trigger-mcp-client-subscriber.service.ts +2 -2
- package/src/jobs/twilio-sms-subscriber.service.ts +2 -2
- package/src/repository/action-metadata.repository.ts +17 -0
- package/src/repository/ai-interaction.repository.ts +17 -0
- package/src/repository/chatter-message-details.repository.ts +3 -3
- package/src/repository/chatter-message.repository.ts +2 -2
- package/src/repository/dashboard-question-sql-dataset-config.repository.ts +17 -0
- package/src/repository/dashboard-question.repository.ts +17 -0
- package/src/repository/dashboard-variable.repository.ts +17 -0
- package/src/repository/dashboard.repository.ts +10 -10
- package/src/repository/email-template.repository.ts +17 -0
- package/src/repository/export-template.repository.ts +17 -0
- package/src/repository/export-transaction.repository.ts +17 -0
- package/src/repository/field-metadata.repository.ts +8 -6
- package/src/repository/import-transaction-error-log.repository.ts +17 -0
- package/src/repository/import-transaction.repository.ts +17 -0
- package/src/repository/list-of-values.repository.ts +17 -0
- package/src/repository/locale.repository.ts +17 -0
- package/src/repository/media-storage-provider-metadata.repository.ts +15 -0
- package/src/repository/media.repository.ts +21 -15
- package/src/repository/menu-item-metadata.repository.ts +17 -0
- package/src/repository/model-metadata.repository.ts +15 -0
- package/src/repository/module-metadata.repository.ts +15 -0
- package/src/repository/mq-message-queue.repository.ts +17 -0
- package/src/repository/mq-message.repository.ts +17 -0
- package/src/repository/permission-metadata.repository.ts +17 -0
- package/src/repository/role-metadata.repository.ts +17 -0
- package/src/repository/saved-filters.repository.ts +65 -0
- package/src/repository/scheduled-job.repository.ts +13 -14
- package/src/repository/security-rule.repository.ts +45 -25
- package/src/repository/setting.repository.ts +17 -0
- package/src/repository/sms-template.repository.ts +17 -0
- package/src/repository/solid-base.repository.ts +16 -8
- package/src/repository/user-activity-history.repository.ts +17 -0
- package/src/repository/user-view-metadata.repository.ts +17 -0
- package/src/repository/view-metadata.repository.ts +10 -8
- package/src/seeders/module-metadata-seeder.service.ts +35 -5
- package/src/seeders/permission-metadata-seeder.service.ts +4 -2
- package/src/seeders/seed-data/solid-core-metadata.json +111 -66
- package/src/seeders/system-fields-seeder.service.ts +6 -4
- package/src/services/action-metadata.service.ts +9 -7
- package/src/services/ai-interaction.service.ts +15 -13
- package/src/services/authentication.service.ts +26 -12
- package/src/services/chatter-message.service.ts +23 -21
- package/src/services/crud.service.ts +27 -32
- package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -2
- package/src/services/dashboard-question.service.ts +4 -2
- package/src/services/dashboard-variable.service.ts +5 -2
- package/src/services/docker exec -it mssql //" +8 -0
- package/src/services/email-template.service.ts +4 -2
- package/src/services/export-template.service.ts +22 -4
- package/src/services/export-transaction.service.ts +16 -9
- package/src/services/field-metadata.service.ts +1 -1
- package/src/services/file.service.ts +1 -24
- package/src/services/import-transaction-error-log.service.ts +4 -2
- package/src/services/import-transaction.service.ts +109 -30
- package/src/services/list-of-values.service.ts +192 -8
- package/src/services/locale.service.ts +16 -14
- package/src/services/mail/smtp-email.service.ts +7 -1
- package/src/services/media-storage-provider-metadata.service.ts +10 -9
- package/src/services/media.service.ts +16 -8
- package/src/services/menu-item-metadata.service.ts +7 -4
- package/src/services/model-metadata.service.ts +64 -58
- package/src/services/module-metadata.service.ts +6 -3
- package/src/services/mq-message-queue.service.ts +4 -2
- package/src/services/mq-message.service.ts +4 -2
- package/src/services/permission-metadata.service.ts +5 -3
- package/src/services/queues/rabbitmq-publisher.service.ts +99 -41
- package/src/services/queues/rabbitmq-subscriber.service.ts +18 -5
- package/src/services/role-metadata.service.ts +16 -12
- package/src/services/saved-filters.service.ts +10 -8
- package/src/services/scheduled-job.service.ts +4 -2
- package/src/services/scheduled-jobs/scheduler.service.ts +9 -9
- package/src/services/security-rule.service.ts +6 -3
- package/src/services/setting.service.ts +31 -14
- package/src/services/sms-template.service.ts +4 -2
- package/src/services/solid-introspect.service.ts +23 -2
- package/src/services/user-activity-history.service.ts +4 -2
- package/src/services/user-view-metadata.service.ts +4 -2
- package/src/services/user.service.ts +5 -2
- package/src/services/view-metadata.service.ts +11 -9
- package/src/solid-core.module.ts +166 -138
- package/src/subscribers/audit.subscriber.ts +8 -7
- package/src/subscribers/{list-of-values-metadata.subscriber.ts → list-of-values.subscriber.ts} +7 -7
- package/dist/repository/field.repository.d.ts +0 -9
- package/dist/repository/field.repository.d.ts.map +0 -1
- package/dist/repository/field.repository.js +0 -46
- package/dist/repository/field.repository.js.map +0 -1
- package/dist/services/list-of-values-metadata.service.d.ts +0 -34
- package/dist/services/list-of-values-metadata.service.d.ts.map +0 -1
- package/dist/services/list-of-values-metadata.service.js +0 -213
- package/dist/services/list-of-values-metadata.service.js.map +0 -1
- package/dist/subscribers/list-of-values-metadata.subscriber.d.ts.map +0 -1
- package/dist/subscribers/list-of-values-metadata.subscriber.js.map +0 -1
- package/solid_seed_fixes.ts.txt +0 -93
- package/src/repository/field.repository.ts +0 -33
- package/src/services/list-of-values-metadata.service.ts +0 -216
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-metadata.service.js","sourceRoot":"","sources":["../../src/services/field-metadata.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, NotFoundException, OnApplicationBootstrap } from '@nestjs/common';\nimport { InjectDataSource } from '@nestjs/typeorm';\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ComputedFieldMetadata, SolidRegistry } from 'src/helpers/solid-registry';\nimport { FieldMetadataRepository } from 'src/repository/field-metadata.repository';\nimport { DataSource, Repository, SelectQueryBuilder } from 'typeorm';\nimport { BasicFilterDto } from '../dtos/basic-filters.dto';\nimport { CascadeType, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';\nimport { SelectionDynamicQueryDto } from '../dtos/selection-dynamic-query.dto';\nimport { UpdateFieldMetaDataDto } from '../dtos/update-field-metadata.dto';\nimport { FieldMetadata } from '../entities/field-metadata.entity';\nimport { ModelMetadata } from '../entities/model-metadata.entity';\nimport { ISelectionProviderValues } from '../interfaces';\nimport { CrudHelperService } from './crud-helper.service';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport qs from 'qs';\n\n\n@Injectable()\nexport class FieldMetadataService implements OnApplicationBootstrap {\n constructor(\n private readonly fieldMetadataRepo: FieldMetadataRepository,\n @InjectDataSource()\n private readonly dataSource: DataSource,\n private readonly solidRegistry: SolidRegistry,\n private readonly crudHelperService: CrudHelperService,\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) { }\n\n private logger = new Logger(FieldMetadataService.name);\n\n onApplicationBootstrap() {\n this.loadAndRegisterComputedFieldsDetails();\n }\n\n async loadAndRegisterComputedFieldsDetails() {\n // Load all the modules and models and within that load all the computed fields\n const computedFieldsWithModelAndModule = await this.fieldMetadataRepo.findComputedFieldsPopulatedWithModelAndModule();\n\n // Convert the computed fields object above to the ComputedFieldMetadata type\n const computedFieldMetadata: ComputedFieldMetadata[] = computedFieldsWithModelAndModule.map((field) => {\n // const defaultComputedFieldTriggerConfig: ComputedFieldTriggerConfig = {\n // moduleName: field.model.module.name,\n // modelName: field.model.singularName,\n // operations: [ComputedFieldTriggerOperation.create, ComputedFieldTriggerOperation.update, ComputedFieldTriggerOperation.delete], // Default operations, can be overridden\n // }\n return {\n moduleName: field.model.module.name,\n modelName: field.model.singularName,\n fieldName: field.name,\n computedFieldValueType: field.computedFieldValueType as ComputedFieldValueType,\n computedFieldTriggerConfig: field.computedFieldTriggerConfig ?? [], // Ensure it's an array, default to empty if not provided\n computedFieldValueProviderName: field.computedFieldValueProvider,\n computedFieldValueProviderCtxt: field.computedFieldValueProviderCtxt ? JSON.parse(field.computedFieldValueProviderCtxt) : {}, // Parse the context if it exists, default to empty object\n };\n });\n\n // Register the computed fields in the SolidRegistry. Capture only computed field related info\n this.solidRegistry.registerComputedFieldMetadata(computedFieldMetadata);\n }\n\n async updateInverseField(field: FieldMetadata, fieldRepository: Repository<FieldMetadata>, modelRepository: Repository<ModelMetadata>) {\n if (!field.model || !field.model.module) {\n throw new Error(ERROR_MESSAGES.MODEL_AND_MODULE_REQUIRED_TO_UPDATE_INVERSE_FIELD);\n }\n // Update the inverse field in the db\n const savedInverseField = await this.updateInverseFieldInDb(field, fieldRepository, modelRepository);\n // Update the inverse field in the file\n this.updateRelationInverseFieldInFile(savedInverseField, field.relationCoModelSingularName, field.model.module.name);\n }\n\n private async updateInverseFieldInDb(field: FieldMetadata, fieldRepository: Repository<FieldMetadata>, modelRepository: Repository<ModelMetadata>): Promise<FieldMetadata> {\n const { moduleName, modelName } = this.validateForInverseField(field);\n\n // Get the relation model reference\n const relationModel = await this.getRelationModel(modelRepository, field, moduleName);\n\n // const {id, createdAt, updatedAt, deletedAt, ...fieldKeys} = field;\n switch (field.relationType) {\n case RelationType.manyToOne: {\n const fieldName = field.relationCoModelFieldName || `${modelName}s`;\n const inverseField: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.oneToMany,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: field.relationCascade,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n id: null,\n }\n\n // Load the inverse field, \n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseField);\n return savedField;\n }\n case RelationType.oneToMany: {\n const fieldName = field.relationCoModelFieldName || `${modelName}`;\n const inverseField: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.manyToOne,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: field.relationCascade,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n id: null,\n }\n\n // Load the inverse field, \n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseField);\n return savedField;\n }\n case RelationType.manyTomany: {\n const fieldName = field.relationCoModelFieldName;\n // Logic to create a manyToMany inverse field definition\n const inverseFieldManyToMany: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.manyTomany,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: null,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n isRelationManyToManyOwner: false,\n id: null,\n }\n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseFieldManyToMany);\n return savedField;\n }\n default:\n throw new Error(`Invalid relation type for field ${field.name} with relation type ${field.relationType}`);\n }\n }\n\n private async getRelationModel(modelRepository: Repository<ModelMetadata>, field: FieldMetadata, moduleName: string) {\n return await modelRepository.findOne({\n where: {\n singularName: field.relationCoModelSingularName,\n module: {\n name: field.relationModelModuleName ?? moduleName\n }\n }\n });\n }\n\n private async saveInverseField(fieldRepository: Repository<FieldMetadata>, relationModel: ModelMetadata, inverseField: FieldMetadata): Promise<FieldMetadata> {\n const existingInverseField = await fieldRepository.findOne({\n where: {\n model: { id: relationModel.id },\n name: inverseField.name\n }\n });\n\n if (existingInverseField) {\n return existingInverseField; // No need to update if it already exists\n }\n else {\n const savedField = await fieldRepository.save(fieldRepository.create(inverseField));\n return savedField;\n }\n }\n\n private validateForInverseField(field: FieldMetadata) {\n if (field.type !== SolidFieldType.relation) {\n throw new Error(ERROR_MESSAGES.INVALID_INVERSE_FIELD_TYPE);\n }\n const modelName = field.model.singularName;\n const moduleName = field.model.module.name;\n\n if (!modelName || !moduleName) {\n throw new Error(ERROR_MESSAGES.MODEL_NAME_AND_MODULE_NAME_REQUIRED_TO_CREATE_INVERSE_FIELD);\n }\n return { moduleName, modelName };\n }\n\n async findMany(basicFilterDto: BasicFilterDto) {\n const alias = 'fieldMetadata';\n // Extract the required keys from the input query\n let { limit, offset, populateMedia } = basicFilterDto;\n\n // Create above query on pincode table using query builder\n var qb: SelectQueryBuilder<FieldMetadata> = this.fieldMetadataRepo.createQueryBuilder(alias)\n qb = await this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);\n\n // Get the records and the count\n const [entities, count] = await qb.getManyAndCount();\n\n const currentPage = Math.floor(offset / limit) + 1;\n const totalPages = Math.ceil(count / limit);\n\n const nextPage = currentPage < totalPages ? currentPage + 1 : null;\n const prevPage = currentPage > 1 ? currentPage - 1 : null;\n\n const r = {\n meta: {\n totalRecords: count,\n currentPage: currentPage,\n nextPage: nextPage,\n prevPage: prevPage,\n totalPages: totalPages,\n perPage: +limit,\n },\n records: entities\n };\n return r\n }\n\n async findOne(id: any, query?: any) {\n // const { fields, filters, populate } = basicFilterDto;\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: id,\n },\n relations: query && query?.populate,\n });\n if (!entity) {\n throw new NotFoundException(`entity #${id} not found`);\n }\n return entity;\n }\n\n async findByNameAndModelName(modelSingularName: string, fieldName: string) {\n\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n name: fieldName,\n model: {\n singularName: modelSingularName\n }\n },\n });\n\n return entity;\n }\n\n async selectionStaticValues(modelSingularName: string, fieldName: string) {\n\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n name: fieldName,\n model: {\n singularName: modelSingularName\n }\n },\n });\n\n if (!entity) {\n return [];\n }\n\n const selectionStaticValues = entity.selectionStaticValues;\n if (!selectionStaticValues) {\n return [];\n }\n\n return this.convertToSelectionProviderValues(selectionStaticValues);\n }\n\n convertToSelectionProviderValues(selectionStaticValues: string[]): ISelectionProviderValues[] {\n // return selectionStaticValues.split(',').map((item) => {\n // const [value, label] = item.split(':');\n // return { label, value };\n // });\n return selectionStaticValues.map((item) => {\n const [value, label] = item.split(':');\n return { label, value };\n });\n }\n\n async create(createDto: CreateFieldMetadataDto) {\n createDto['model'] = await this.dataSource.getRepository(ModelMetadata).findOne({\n where: {\n id: createDto['modelId']\n },\n });\n createDto['mediaStorageProvider'] = await this.dataSource.getRepository(ModelMetadata).findOne({\n where: {\n id: createDto['mediaStorageProviderId']\n },\n });\n\n const moduleMetadata = this.fieldMetadataRepo.create(createDto);\n return this.fieldMetadataRepo.save(moduleMetadata);\n }\n\n // async update(id: number, updateCountryDto: UpdateCountryDto) {\n\n // const country = await this.fieldMetadataRepo.preload({\n // id,\n // ...updateCountryDto,\n // });\n\n // if (!country) {\n // throw new NotFoundException(`Country ${id} not found`);\n // }\n // return this.moduleMetadataRepo.save(country);\n // }\n\n async delete(id: number) {\n const entity = await this.findOne(id);\n return this.fieldMetadataRepo.remove(entity);\n }\n\n async findFieldDefaultMetaData() {\n\n // Function to convert enum to array of objects\n const enumToResponseArray = (enumObj: any) => {\n return Object.entries(enumObj).map(([key, value]) => ({\n label: value,\n value: value,\n }));\n };\n\n // Orm Data type and Solid Dat Type Mapping\n const ormFieldTypeForSolid = {\n \"postgres\": {\n // Numeric types\n \"int\": {\n \"ormTypes\": [{ label: PSQLType.integer, description: \"A 4-byte integer for general numeric data.\" }]\n },\n \"bigint\": {\n \"ormTypes\": [{ label: PSQLType.bigint, description: \"An 8-byte integer for large numeric values.\" }]\n },\n \"decimal\": {\n \"ormTypes\": [{ label: PSQLType.decimal, description: \"A high-precision numeric type, ideal for financial data.\" }]\n },\n\n // Text types\n \"shortText\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"A variable-length string for short text.\" }]\n },\n \"longText\": {\n \"ormTypes\": [{ label: PSQLType.text, description: \"A text type for large or unbounded strings.\" }]\n },\n \"richText\": {\n \"ormTypes\": [{ label: PSQLType.text, description: \"A text type for large or formatted content.\" }]\n },\n \"json\": {\n \"ormTypes\": [\n { label: PSQLType.json, description: \"Stores JSON data without indexing.\" },\n { label: PSQLType.jsonb, description: \"Stores JSON data with indexing for faster queries.\" }\n ]\n },\n\n // Boolean types\n \"boolean\": {\n \"ormTypes\": [{ label: PSQLType.boolean, description: \"Stores true or false values.\" }]\n },\n\n // Date and time types\n \"date\": {\n \"ormTypes\": [{ label: PSQLType.date, description: \"Stores calendar dates (YYYY-MM-DD).\" }]\n },\n \"datetime\": {\n \"ormTypes\": [\n { label: PSQLType.timestamp, description: \"Stores date and time without time zones.\" },\n { label: PSQLType.timestamptz, description: \"Stores date and time with time zones.\" }\n ]\n },\n \"time\": {\n \"ormTypes\": [\n { label: PSQLType.time, description: \"Stores time values (HH:MM:SS).\" },\n { label: PSQLType.timestamp, description: \"Stores date and time without time zones.\" },\n { label: PSQLType.timestamptz, description: \"Stores date and time with time zones.\" }\n ]\n },\n\n // Relation\n \"relation\": {\n \"ormTypes\": [{ label: PSQLType.integer, description: \"Used for foreign keys referencing other entities.\" }]\n },\n\n // Media types\n \"mediaSingle\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores file paths or URLs for single media files.\" }]\n },\n \"mediaMultiple\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores file paths or URLs for multiple media files.\" }]\n },\n\n // Email and password\n \"email\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores email addresses.\" }]\n },\n \"password\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores hashed or plain-text passwords.\" }]\n },\n\n // Selection types\n \"selectionStatic\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Used for predefined selection options.\" }]\n },\n \"selectionDynamic\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Used for dynamic selection options.\" }]\n },\n\n // Computed and external ID\n \"computed\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Represents computed or derived fields.\" }]\n },\n \"uuid\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores universally unique identifiers (UUIDs).\" }]\n }\n }\n };\n\n\n // Fetch Data Source Type \n const dataSourceTypes = Object.keys(ormFieldTypeForSolid); // [\"psql\"]\n\n const fieldTypes = Object.entries(ormFieldTypeForSolid.postgres).map(([key, value]) => ({\n type: key,\n label: key,\n value: key,\n fieldType: key,\n ormTypes: value.ormTypes,\n fields: this.fetchCurrentFields(key)\n }));\n\n const dataSource = this.solidRegistry.getSolidDatabaseModules().map((solidDatabaseModule) => {\n return {\n 'name': solidDatabaseModule.instance.name(),\n 'type': solidDatabaseModule.instance.type()\n }\n });\n\n // Creating response arrays for each enum\n // Get all selection providers. \n const sps = [];\n const selectionProviders = this.solidRegistry.getSelectionProviders();\n for (let i = 0; i < selectionProviders.length; i++) {\n const selectionProvider = selectionProviders[i];\n sps.push({\n provider: selectionProvider.instance.name(),\n help: selectionProvider.instance.help(),\n });\n }\n\n const cps = [];\n const computedProviders = this.solidRegistry.getComputedFieldProviders();\n for (let i = 0; i < computedProviders.length; i++) {\n const computedProvider = computedProviders[i];\n cps.push({\n provider: computedProvider.instance.name(),\n help: computedProvider.instance.help(),\n });\n }\n\n const r = {\n // Field Types with ormtypes, available fields \n fieldTypes: fieldTypes,\n encryptionTypes: enumToResponseArray(EncryptionType),\n ormType: ormFieldTypeForSolid,\n decryptWhenTypes: enumToResponseArray(DecryptWhenType),\n mediaTypes: enumToResponseArray(MediaType),\n relationTypes: enumToResponseArray(RelationType),\n selectionDynamicProviders: sps,\n computedProviders: cps,\n cascadeTypes: enumToResponseArray(CascadeType),\n selectionValueTypes: enumToResponseArray(SelectionValueType),\n computedFieldValueTypes: enumToResponseArray(ComputedFieldValueType),\n dataSourceType: dataSourceTypes,\n dataSource: dataSource,\n };\n\n return r\n }\n\n async fetchCurrentFieldsBasedOnType(type: string) {\n return this.fetchCurrentFields(type);\n }\n\n private fetchCurrentFields(solidFieldType: string) {\n switch (solidFieldType) {\n case SolidFieldType.int:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.bigint:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n // case SolidFieldType.float:\n // return [\n // \"name\",\n // \"displayName\",\n // \"description\",\n // \"type\",\n // \"ormType\",\n // \"isSystem\",\n // \"defaultValue\",\n // \"required\",\n // \"unique\",\n // \"index\",\n // \"private\",\n // \"encrypt\",\n // \"encryptionType\",\n // \"decryptWhen\"\n // ];\n\n case SolidFieldType.decimal:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.shortText:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.longtext:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.richText:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n // \"min\",\n // \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n\n case SolidFieldType.json:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n // \"min\",\n // \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.boolean:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n // \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.date:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.datetime:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.time:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.relation:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"relationType\",\n \"relationCoModelFieldName\",\n \"relationCreateInverse\",\n \"relationCoModelSingularName\",\n \"relationCoModelColumnName\",\n \"relationModelModuleName\",\n \"relationCascade\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"relationJoinTableName\",\n \"isRelationManyToManyOwner\",\n \"relationFieldFixedFilter\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.mediaSingle:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"mediaTypes\",\n \"mediaMaxSizeKb\",\n \"mediaStorageProviderId\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.mediaMultiple:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"mediaTypes\",\n \"mediaMaxSizeKb\",\n \"mediaStorageProviderId\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.email:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.password:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"min\",\n \"max\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.selectionStatic:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"selectionStaticValues\",\n \"selectionValueType\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\",\n \"isMultiSelect\"\n ];\n\n case SolidFieldType.selectionDynamic:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"selectionDynamicProvider\",\n \"selectionDynamicProviderCtxt\",\n \"selectionValueType\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\",\n \"enableAuditTracking\",\n \"isMultiSelect\"\n ];\n case SolidFieldType.computed:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"computedFieldValueType\",\n \"computedFieldTriggerConfig\",\n \"computedFieldValueProvider\",\n \"computedFieldValueProviderCtxt\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\"\n ];\n\n case SolidFieldType.uuid:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"uuid\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n\n\n\n default:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n }\n }\n\n async fetchAllDataSources() {\n // Initialize the data source\n // await AppDataSource.initialize();\n\n // // Get all entities metadata\n // const entities = AppDataSource.entityMetadatas;\n\n // // Create an array to hold the data sources\n // const dataSources = entities.map(entity => ({\n // name: entity.name,\n // tableName: entity.tableName,\n // columns: entity.columns.map(column => ({\n // propertyName: column.propertyName,\n // databaseName: column.databaseName,\n // type: column.type,\n // })),\n // }));\n\n // return dataSources;\n }\n\n async upsert(updateDto: UpdateFieldMetaDataDto) {\n // First check if module already exists using name\n const existingFieldMetadata = await this.fieldMetadataRepo.findOne({\n where: {\n //@ts-ignore\n model: { id: updateDto.model.id },\n name: updateDto.name\n }\n })\n\n // if found\n if (existingFieldMetadata) {\n const updatedFieldMetadata = { ...existingFieldMetadata, ...updateDto };\n return this.fieldMetadataRepo.save(updatedFieldMetadata);\n }\n // if not found - create new \n else {\n const fieldMetadata = this.fieldMetadataRepo.create(updateDto);\n return this.fieldMetadataRepo.save(fieldMetadata);\n }\n }\n\n async getSelectionDynamicValues(query: SelectionDynamicQueryDto) {\n // 1. use the id to identify the field. \n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: query.fieldId,\n },\n });\n if (!entity) {\n throw new NotFoundException(ERROR_MESSAGES.FIELD_NOT_FOUND(query.fieldId));\n }\n\n // 2. use the field metadata to identify the provider. \n const selectionDynamicProvider = entity.selectionDynamicProvider;\n const selectionDynamicProviderCtxt = JSON.parse(entity.selectionDynamicProviderCtxt ? entity.selectionDynamicProviderCtxt : '{}');\n selectionDynamicProviderCtxt['limit'] = query.limit;\n selectionDynamicProviderCtxt['offset'] = query.offset;\n const formValues = query.formValues || {};\n // Parse the form values if they are in string format using qs\n const parsedFormValues = typeof formValues === 'string' ? qs.parse(formValues, { allowDots: true }) : formValues;\n selectionDynamicProviderCtxt['formValues'] = parsedFormValues;\n\n\n // 3. get hold of the provider instance from the SolidRegistry\n const selectionProviderInstance = this.solidRegistry.getSelectionProviderInstance(selectionDynamicProvider);\n if (!selectionProviderInstance) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(selectionDynamicProvider));\n }\n\n // 4. use the provider to fetch the dynamic values, pass the query string received from the UI.. \n return selectionProviderInstance.values(query.query, selectionDynamicProviderCtxt);\n }\n\n async getSelectionDynamicValue(query: SelectionDynamicQueryDto) {\n // 1. use the id to identify the field. \n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: query.fieldId,\n },\n });\n if (!entity) {\n throw new NotFoundException(ERROR_MESSAGES.FIELD_NOT_FOUND(query.fieldId));\n }\n\n // 2. use the field metadata to identify the provider. \n const selectionDynamicProvider = entity.selectionDynamicProvider;\n const selectionDynamicProviderCtxt = JSON.parse(entity.selectionDynamicProviderCtxt ? entity.selectionDynamicProviderCtxt : '{}');\n selectionDynamicProviderCtxt['limit'] = query.limit;\n selectionDynamicProviderCtxt['offset'] = query.offset;\n const formValues = query.formValues || {};\n // Parse the form values if they are in string format using qs\n const parsedFormValues = typeof formValues === 'string' ? qs.parse(formValues, { allowDots: true }) : formValues;\n selectionDynamicProviderCtxt['formValues'] = parsedFormValues;\n\n // 3. get hold of the provider instance from the SolidRegistry\n const selectionProviderInstance = this.solidRegistry.getSelectionProviderInstance(selectionDynamicProvider);\n if (!selectionProviderInstance) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(selectionDynamicProvider));\n }\n\n // 4. use the provider to fetch the dynamic values, pass the query string received from the UI.. \n return selectionProviderInstance.value(query.optionValue, selectionDynamicProviderCtxt);\n }\n\n private async updateRelationInverseFieldInFile(savedInverseField: FieldMetadata, inverseModelName: string, moduleName: string) {\n try {\n const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);\n\n // Create the config object for the inverse field\n const fieldObject: Record<string, any> = await this.createFieldConfig(savedInverseField);\n\n // Find the field config object in the json file\n const model = metaData.moduleMetadata.models.find((model: any) => model.singularName === inverseModelName);\n\n // Replace the current field object with the above field object\n const fieldIndex = model.fields.findIndex((field: any) => field.name === savedInverseField.name);\n if (fieldIndex === -1) {\n model.fields.push(fieldObject);\n }\n else {\n model.fields[fieldIndex] = fieldObject;\n }\n\n // Write the updated object back to the file\n const updatedContent = JSON.stringify(metaData, null, 2);\n await fs.writeFile(filePath, updatedContent);\n } catch (error) {\n this.logger.error('File creation failed:', error);\n throw new Error(ERROR_MESSAGES.FILE_WRITE_FAILED); // Trigger rollback\n }\n }\n\n //Moved existing reusable logic to a separate function\n async createFieldConfig(field: FieldMetadata) {\n const fieldsRequiredBasedOnType = await this.fetchCurrentFieldsBasedOnType(field.type);\n const fieldObject: Record<string, any> = {};\n\n // Assign default or placeholder values for required fields\n fieldsRequiredBasedOnType.forEach((requiredField) => {\n fieldObject[requiredField] = field[requiredField];\n });\n\n if (field.type == \"mediaSingle\" || field.type == \"mediaMultiple\") {\n if (field.mediaStorageProvider) {\n delete fieldObject.mediaStorageProviderId\n fieldObject.mediaStorageProviderUserKey = field.mediaStorageProvider.name\n }\n }\n if (field.isMarkedForRemoval) {\n fieldObject.isMarkedForRemoval = field.isMarkedForRemoval;\n }\n\n return fieldObject;\n }\n}\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"field-metadata.service.js","sourceRoot":"","sources":["../../src/services/field-metadata.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, NotFoundException, OnApplicationBootstrap } from '@nestjs/common';\nimport { InjectDataSource } from '@nestjs/typeorm';\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ComputedFieldMetadata, SolidRegistry } from 'src/helpers/solid-registry';\nimport { FieldMetadataRepository } from 'src/repository/field-metadata.repository';\nimport { DataSource, Repository, SelectQueryBuilder } from 'typeorm';\nimport { BasicFilterDto } from '../dtos/basic-filters.dto';\nimport { CascadeType, ComputedFieldValueType, CreateFieldMetadataDto, DecryptWhenType, EncryptionType, MediaType, PSQLType, RelationType, SelectionValueType, SolidFieldType } from '../dtos/create-field-metadata.dto';\nimport { SelectionDynamicQueryDto } from '../dtos/selection-dynamic-query.dto';\nimport { UpdateFieldMetaDataDto } from '../dtos/update-field-metadata.dto';\nimport { FieldMetadata } from '../entities/field-metadata.entity';\nimport { ModelMetadata } from '../entities/model-metadata.entity';\nimport { ISelectionProviderValues } from '../interfaces';\nimport { CrudHelperService } from './crud-helper.service';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport qs from 'qs';\n\n\n@Injectable()\nexport class FieldMetadataService implements OnApplicationBootstrap {\n constructor(\n private readonly fieldMetadataRepo: FieldMetadataRepository,\n @InjectDataSource()\n private readonly dataSource: DataSource,\n private readonly solidRegistry: SolidRegistry,\n private readonly crudHelperService: CrudHelperService,\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) { }\n\n private logger = new Logger(FieldMetadataService.name);\n\n onApplicationBootstrap() {\n this.loadAndRegisterComputedFieldsDetails();\n }\n\n async loadAndRegisterComputedFieldsDetails() {\n // Load all the modules and models and within that load all the computed fields\n const computedFieldsWithModelAndModule = await this.fieldMetadataRepo.findComputedFieldsPopulatedWithModelAndModule();\n\n // Convert the computed fields object above to the ComputedFieldMetadata type\n const computedFieldMetadata: ComputedFieldMetadata[] = computedFieldsWithModelAndModule.map((field) => {\n // const defaultComputedFieldTriggerConfig: ComputedFieldTriggerConfig = {\n // moduleName: field.model.module.name,\n // modelName: field.model.singularName,\n // operations: [ComputedFieldTriggerOperation.create, ComputedFieldTriggerOperation.update, ComputedFieldTriggerOperation.delete], // Default operations, can be overridden\n // }\n return {\n moduleName: field.model.module.name,\n modelName: field.model.singularName,\n fieldName: field.name,\n computedFieldValueType: field.computedFieldValueType as ComputedFieldValueType,\n computedFieldTriggerConfig: field.computedFieldTriggerConfig ?? [], // Ensure it's an array, default to empty if not provided\n computedFieldValueProviderName: field.computedFieldValueProvider,\n computedFieldValueProviderCtxt: field.computedFieldValueProviderCtxt ? JSON.parse(field.computedFieldValueProviderCtxt) : {}, // Parse the context if it exists, default to empty object\n };\n });\n\n // Register the computed fields in the SolidRegistry. Capture only computed field related info\n this.solidRegistry.registerComputedFieldMetadata(computedFieldMetadata);\n }\n\n async updateInverseField(field: FieldMetadata, fieldRepository: Repository<FieldMetadata>, modelRepository: Repository<ModelMetadata>) {\n if (!field.model || !field.model.module) {\n throw new Error(ERROR_MESSAGES.MODEL_AND_MODULE_REQUIRED_TO_UPDATE_INVERSE_FIELD);\n }\n // Update the inverse field in the db\n const savedInverseField = await this.updateInverseFieldInDb(field, fieldRepository, modelRepository);\n // Update the inverse field in the file\n this.updateRelationInverseFieldInFile(savedInverseField, field.relationCoModelSingularName, field.model.module.name);\n }\n\n private async updateInverseFieldInDb(field: FieldMetadata, fieldRepository: Repository<FieldMetadata>, modelRepository: Repository<ModelMetadata>): Promise<FieldMetadata> {\n const { moduleName, modelName } = this.validateForInverseField(field);\n\n // Get the relation model reference\n const relationModel = await this.getRelationModel(modelRepository, field, moduleName);\n\n // const {id, createdAt, updatedAt, deletedAt, ...fieldKeys} = field;\n switch (field.relationType) {\n case RelationType.manyToOne: {\n const fieldName = field.relationCoModelFieldName || `${modelName}s`;\n const inverseField: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.oneToMany,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: field.relationCascade,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n id: null,\n }\n\n // Load the inverse field, \n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseField);\n return savedField;\n }\n case RelationType.oneToMany: {\n const fieldName = field.relationCoModelFieldName || `${modelName}`;\n const inverseField: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.manyToOne,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: field.relationCascade,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n id: null,\n }\n\n // Load the inverse field, \n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseField);\n return savedField;\n }\n case RelationType.manyTomany: {\n const fieldName = field.relationCoModelFieldName;\n // Logic to create a manyToMany inverse field definition\n const inverseFieldManyToMany: FieldMetadata = {\n ...field,\n name: fieldName,\n displayName: classify(fieldName),\n description: classify(fieldName),\n type: SolidFieldType.relation,\n isSystem: field.isSystem,\n relationType: RelationType.manyTomany,\n relationCoModelSingularName: modelName,\n relationCreateInverse: true,\n relationCascade: null,\n relationModelModuleName: moduleName,\n relationCoModelFieldName: field.name,\n required: false,\n unique: false,\n index: false,\n private: false,\n encrypt: false,\n model: relationModel,\n columnName: null,\n relationJoinTableName: null,\n isRelationManyToManyOwner: false,\n id: null,\n }\n const savedField = await this.saveInverseField(fieldRepository, relationModel, inverseFieldManyToMany);\n return savedField;\n }\n default:\n throw new Error(`Invalid relation type for field ${field.name} with relation type ${field.relationType}`);\n }\n }\n\n private async getRelationModel(modelRepository: Repository<ModelMetadata>, field: FieldMetadata, moduleName: string) {\n return await modelRepository.findOne({\n where: {\n singularName: field.relationCoModelSingularName,\n module: {\n name: field.relationModelModuleName ?? moduleName\n }\n }\n });\n }\n\n private async saveInverseField(fieldRepository: Repository<FieldMetadata>, relationModel: ModelMetadata, inverseField: FieldMetadata): Promise<FieldMetadata> {\n const existingInverseField = await fieldRepository.findOne({\n where: {\n model: { id: relationModel.id },\n name: inverseField.name\n }\n });\n\n if (existingInverseField) {\n return existingInverseField; // No need to update if it already exists\n }\n else {\n const savedField = await fieldRepository.save(fieldRepository.create(inverseField));\n return savedField;\n }\n }\n\n private validateForInverseField(field: FieldMetadata) {\n if (field.type !== SolidFieldType.relation) {\n throw new Error(ERROR_MESSAGES.INVALID_INVERSE_FIELD_TYPE);\n }\n const modelName = field.model.singularName;\n const moduleName = field.model.module.name;\n\n if (!modelName || !moduleName) {\n throw new Error(ERROR_MESSAGES.MODEL_NAME_AND_MODULE_NAME_REQUIRED_TO_CREATE_INVERSE_FIELD);\n }\n return { moduleName, modelName };\n }\n\n async findMany(basicFilterDto: BasicFilterDto) {\n const alias = 'fieldMetadata';\n // Extract the required keys from the input query\n let { limit, offset, populateMedia } = basicFilterDto;\n\n // Create above query on pincode table using query builder\n var qb: SelectQueryBuilder<FieldMetadata> = await this.fieldMetadataRepo.createSecurityRuleAwareQueryBuilder(alias)\n qb = await this.crudHelperService.buildFilterQuery(qb, basicFilterDto, alias);\n\n // Get the records and the count\n const [entities, count] = await qb.getManyAndCount();\n\n const currentPage = Math.floor(offset / limit) + 1;\n const totalPages = Math.ceil(count / limit);\n\n const nextPage = currentPage < totalPages ? currentPage + 1 : null;\n const prevPage = currentPage > 1 ? currentPage - 1 : null;\n\n const r = {\n meta: {\n totalRecords: count,\n currentPage: currentPage,\n nextPage: nextPage,\n prevPage: prevPage,\n totalPages: totalPages,\n perPage: +limit,\n },\n records: entities\n };\n return r\n }\n\n async findOne(id: any, query?: any) {\n // const { fields, filters, populate } = basicFilterDto;\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: id,\n },\n relations: query && query?.populate,\n });\n if (!entity) {\n throw new NotFoundException(`entity #${id} not found`);\n }\n return entity;\n }\n\n async findByNameAndModelName(modelSingularName: string, fieldName: string) {\n\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n name: fieldName,\n model: {\n singularName: modelSingularName\n }\n },\n });\n\n return entity;\n }\n\n async selectionStaticValues(modelSingularName: string, fieldName: string) {\n\n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n name: fieldName,\n model: {\n singularName: modelSingularName\n }\n },\n });\n\n if (!entity) {\n return [];\n }\n\n const selectionStaticValues = entity.selectionStaticValues;\n if (!selectionStaticValues) {\n return [];\n }\n\n return this.convertToSelectionProviderValues(selectionStaticValues);\n }\n\n convertToSelectionProviderValues(selectionStaticValues: string[]): ISelectionProviderValues[] {\n // return selectionStaticValues.split(',').map((item) => {\n // const [value, label] = item.split(':');\n // return { label, value };\n // });\n return selectionStaticValues.map((item) => {\n const [value, label] = item.split(':');\n return { label, value };\n });\n }\n\n async create(createDto: CreateFieldMetadataDto) {\n createDto['model'] = await this.dataSource.getRepository(ModelMetadata).findOne({\n where: {\n id: createDto['modelId']\n },\n });\n createDto['mediaStorageProvider'] = await this.dataSource.getRepository(ModelMetadata).findOne({\n where: {\n id: createDto['mediaStorageProviderId']\n },\n });\n\n const moduleMetadata = this.fieldMetadataRepo.create(createDto);\n return this.fieldMetadataRepo.save(moduleMetadata);\n }\n\n // async update(id: number, updateCountryDto: UpdateCountryDto) {\n\n // const country = await this.fieldMetadataRepo.preload({\n // id,\n // ...updateCountryDto,\n // });\n\n // if (!country) {\n // throw new NotFoundException(`Country ${id} not found`);\n // }\n // return this.moduleMetadataRepo.save(country);\n // }\n\n async delete(id: number) {\n const entity = await this.findOne(id);\n return this.fieldMetadataRepo.remove(entity);\n }\n\n async findFieldDefaultMetaData() {\n\n // Function to convert enum to array of objects\n const enumToResponseArray = (enumObj: any) => {\n return Object.entries(enumObj).map(([key, value]) => ({\n label: value,\n value: value,\n }));\n };\n\n // Orm Data type and Solid Dat Type Mapping\n const ormFieldTypeForSolid = {\n \"postgres\": {\n // Numeric types\n \"int\": {\n \"ormTypes\": [{ label: PSQLType.integer, description: \"A 4-byte integer for general numeric data.\" }]\n },\n \"bigint\": {\n \"ormTypes\": [{ label: PSQLType.bigint, description: \"An 8-byte integer for large numeric values.\" }]\n },\n \"decimal\": {\n \"ormTypes\": [{ label: PSQLType.decimal, description: \"A high-precision numeric type, ideal for financial data.\" }]\n },\n\n // Text types\n \"shortText\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"A variable-length string for short text.\" }]\n },\n \"longText\": {\n \"ormTypes\": [{ label: PSQLType.text, description: \"A text type for large or unbounded strings.\" }]\n },\n \"richText\": {\n \"ormTypes\": [{ label: PSQLType.text, description: \"A text type for large or formatted content.\" }]\n },\n \"json\": {\n \"ormTypes\": [\n { label: PSQLType.json, description: \"Stores JSON data without indexing.\" },\n { label: PSQLType.jsonb, description: \"Stores JSON data with indexing for faster queries.\" }\n ]\n },\n\n // Boolean types\n \"boolean\": {\n \"ormTypes\": [{ label: PSQLType.boolean, description: \"Stores true or false values.\" }]\n },\n\n // Date and time types\n \"date\": {\n \"ormTypes\": [{ label: PSQLType.date, description: \"Stores calendar dates (YYYY-MM-DD).\" }]\n },\n \"datetime\": {\n \"ormTypes\": [\n { label: PSQLType.timestamp, description: \"Stores date and time without time zones.\" },\n { label: PSQLType.timestamptz, description: \"Stores date and time with time zones.\" }\n ]\n },\n \"time\": {\n \"ormTypes\": [\n { label: PSQLType.time, description: \"Stores time values (HH:MM:SS).\" },\n { label: PSQLType.timestamp, description: \"Stores date and time without time zones.\" },\n { label: PSQLType.timestamptz, description: \"Stores date and time with time zones.\" }\n ]\n },\n\n // Relation\n \"relation\": {\n \"ormTypes\": [{ label: PSQLType.integer, description: \"Used for foreign keys referencing other entities.\" }]\n },\n\n // Media types\n \"mediaSingle\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores file paths or URLs for single media files.\" }]\n },\n \"mediaMultiple\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores file paths or URLs for multiple media files.\" }]\n },\n\n // Email and password\n \"email\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores email addresses.\" }]\n },\n \"password\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores hashed or plain-text passwords.\" }]\n },\n\n // Selection types\n \"selectionStatic\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Used for predefined selection options.\" }]\n },\n \"selectionDynamic\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Used for dynamic selection options.\" }]\n },\n\n // Computed and external ID\n \"computed\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Represents computed or derived fields.\" }]\n },\n \"uuid\": {\n \"ormTypes\": [{ label: PSQLType.varchar, description: \"Stores universally unique identifiers (UUIDs).\" }]\n }\n }\n };\n\n\n // Fetch Data Source Type \n const dataSourceTypes = Object.keys(ormFieldTypeForSolid); // [\"psql\"]\n\n const fieldTypes = Object.entries(ormFieldTypeForSolid.postgres).map(([key, value]) => ({\n type: key,\n label: key,\n value: key,\n fieldType: key,\n ormTypes: value.ormTypes,\n fields: this.fetchCurrentFields(key)\n }));\n\n const dataSource = this.solidRegistry.getSolidDatabaseModules().map((solidDatabaseModule) => {\n return {\n 'name': solidDatabaseModule.instance.name(),\n 'type': solidDatabaseModule.instance.type()\n }\n });\n\n // Creating response arrays for each enum\n // Get all selection providers. \n const sps = [];\n const selectionProviders = this.solidRegistry.getSelectionProviders();\n for (let i = 0; i < selectionProviders.length; i++) {\n const selectionProvider = selectionProviders[i];\n sps.push({\n provider: selectionProvider.instance.name(),\n help: selectionProvider.instance.help(),\n });\n }\n\n const cps = [];\n const computedProviders = this.solidRegistry.getComputedFieldProviders();\n for (let i = 0; i < computedProviders.length; i++) {\n const computedProvider = computedProviders[i];\n cps.push({\n provider: computedProvider.instance.name(),\n help: computedProvider.instance.help(),\n });\n }\n\n const r = {\n // Field Types with ormtypes, available fields \n fieldTypes: fieldTypes,\n encryptionTypes: enumToResponseArray(EncryptionType),\n ormType: ormFieldTypeForSolid,\n decryptWhenTypes: enumToResponseArray(DecryptWhenType),\n mediaTypes: enumToResponseArray(MediaType),\n relationTypes: enumToResponseArray(RelationType),\n selectionDynamicProviders: sps,\n computedProviders: cps,\n cascadeTypes: enumToResponseArray(CascadeType),\n selectionValueTypes: enumToResponseArray(SelectionValueType),\n computedFieldValueTypes: enumToResponseArray(ComputedFieldValueType),\n dataSourceType: dataSourceTypes,\n dataSource: dataSource,\n };\n\n return r\n }\n\n async fetchCurrentFieldsBasedOnType(type: string) {\n return this.fetchCurrentFields(type);\n }\n\n private fetchCurrentFields(solidFieldType: string) {\n switch (solidFieldType) {\n case SolidFieldType.int:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.bigint:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n // case SolidFieldType.float:\n // return [\n // \"name\",\n // \"displayName\",\n // \"description\",\n // \"type\",\n // \"ormType\",\n // \"isSystem\",\n // \"defaultValue\",\n // \"required\",\n // \"unique\",\n // \"index\",\n // \"private\",\n // \"encrypt\",\n // \"encryptionType\",\n // \"decryptWhen\"\n // ];\n\n case SolidFieldType.decimal:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.shortText:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.longtext:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"defaultValue\",\n \"min\",\n \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.richText:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n // \"min\",\n // \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n\n case SolidFieldType.json:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n // \"min\",\n // \"max\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.boolean:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n // \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.date:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.datetime:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.time:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.relation:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"relationType\",\n \"relationCoModelFieldName\",\n \"relationCreateInverse\",\n \"relationCoModelSingularName\",\n \"relationCoModelColumnName\",\n \"relationModelModuleName\",\n \"relationCascade\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"relationJoinTableName\",\n \"isRelationManyToManyOwner\",\n \"relationFieldFixedFilter\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.mediaSingle:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"mediaTypes\",\n \"mediaMaxSizeKb\",\n \"mediaStorageProviderId\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.mediaMultiple:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"mediaTypes\",\n \"mediaMaxSizeKb\",\n \"mediaStorageProviderId\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.email:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\"\n ];\n\n case SolidFieldType.password:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"min\",\n \"max\",\n \"regexPattern\",\n \"regexPatternNotMatchingErrorMsg\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n case SolidFieldType.selectionStatic:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"defaultValue\",\n \"selectionStaticValues\",\n \"selectionValueType\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"enableAuditTracking\",\n \"isMultiSelect\"\n ];\n\n case SolidFieldType.selectionDynamic:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"selectionDynamicProvider\",\n \"selectionDynamicProviderCtxt\",\n \"selectionValueType\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\",\n \"enableAuditTracking\",\n \"isMultiSelect\"\n ];\n case SolidFieldType.computed:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"computedFieldValueType\",\n \"computedFieldTriggerConfig\",\n \"computedFieldValueProvider\",\n \"computedFieldValueProviderCtxt\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\",\n \"isUserKey\"\n ];\n\n case SolidFieldType.uuid:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"uuid\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n\n\n\n\n default:\n return [\n \"name\",\n \"displayName\",\n \"description\",\n \"type\",\n \"ormType\",\n \"isSystem\",\n \"required\",\n \"unique\",\n \"index\",\n \"private\",\n \"encrypt\",\n \"encryptionType\",\n \"decryptWhen\",\n \"columnName\"\n ];\n }\n }\n\n async fetchAllDataSources() {\n // Initialize the data source\n // await AppDataSource.initialize();\n\n // // Get all entities metadata\n // const entities = AppDataSource.entityMetadatas;\n\n // // Create an array to hold the data sources\n // const dataSources = entities.map(entity => ({\n // name: entity.name,\n // tableName: entity.tableName,\n // columns: entity.columns.map(column => ({\n // propertyName: column.propertyName,\n // databaseName: column.databaseName,\n // type: column.type,\n // })),\n // }));\n\n // return dataSources;\n }\n\n async upsert(updateDto: UpdateFieldMetaDataDto) {\n // First check if module already exists using name\n const existingFieldMetadata = await this.fieldMetadataRepo.findOne({\n where: {\n //@ts-ignore\n model: { id: updateDto.model.id },\n name: updateDto.name\n }\n })\n\n // if found\n if (existingFieldMetadata) {\n const updatedFieldMetadata = { ...existingFieldMetadata, ...updateDto };\n return this.fieldMetadataRepo.save(updatedFieldMetadata);\n }\n // if not found - create new \n else {\n const fieldMetadata = this.fieldMetadataRepo.create(updateDto);\n return this.fieldMetadataRepo.save(fieldMetadata);\n }\n }\n\n async getSelectionDynamicValues(query: SelectionDynamicQueryDto) {\n // 1. use the id to identify the field. \n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: query.fieldId,\n },\n });\n if (!entity) {\n throw new NotFoundException(ERROR_MESSAGES.FIELD_NOT_FOUND(query.fieldId));\n }\n\n // 2. use the field metadata to identify the provider. \n const selectionDynamicProvider = entity.selectionDynamicProvider;\n const selectionDynamicProviderCtxt = JSON.parse(entity.selectionDynamicProviderCtxt ? entity.selectionDynamicProviderCtxt : '{}');\n selectionDynamicProviderCtxt['limit'] = query.limit;\n selectionDynamicProviderCtxt['offset'] = query.offset;\n const formValues = query.formValues || {};\n // Parse the form values if they are in string format using qs\n const parsedFormValues = typeof formValues === 'string' ? qs.parse(formValues, { allowDots: true }) : formValues;\n selectionDynamicProviderCtxt['formValues'] = parsedFormValues;\n\n\n // 3. get hold of the provider instance from the SolidRegistry\n const selectionProviderInstance = this.solidRegistry.getSelectionProviderInstance(selectionDynamicProvider);\n if (!selectionProviderInstance) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(selectionDynamicProvider));\n }\n\n // 4. use the provider to fetch the dynamic values, pass the query string received from the UI.. \n return selectionProviderInstance.values(query.query, selectionDynamicProviderCtxt);\n }\n\n async getSelectionDynamicValue(query: SelectionDynamicQueryDto) {\n // 1. use the id to identify the field. \n const entity = await this.fieldMetadataRepo.findOne({\n where: {\n id: query.fieldId,\n },\n });\n if (!entity) {\n throw new NotFoundException(ERROR_MESSAGES.FIELD_NOT_FOUND(query.fieldId));\n }\n\n // 2. use the field metadata to identify the provider. \n const selectionDynamicProvider = entity.selectionDynamicProvider;\n const selectionDynamicProviderCtxt = JSON.parse(entity.selectionDynamicProviderCtxt ? entity.selectionDynamicProviderCtxt : '{}');\n selectionDynamicProviderCtxt['limit'] = query.limit;\n selectionDynamicProviderCtxt['offset'] = query.offset;\n const formValues = query.formValues || {};\n // Parse the form values if they are in string format using qs\n const parsedFormValues = typeof formValues === 'string' ? qs.parse(formValues, { allowDots: true }) : formValues;\n selectionDynamicProviderCtxt['formValues'] = parsedFormValues;\n\n // 3. get hold of the provider instance from the SolidRegistry\n const selectionProviderInstance = this.solidRegistry.getSelectionProviderInstance(selectionDynamicProvider);\n if (!selectionProviderInstance) {\n throw new NotFoundException(ERROR_MESSAGES.PROVIDER_NOT_FOUND(selectionDynamicProvider));\n }\n\n // 4. use the provider to fetch the dynamic values, pass the query string received from the UI.. \n return selectionProviderInstance.value(query.optionValue, selectionDynamicProviderCtxt);\n }\n\n private async updateRelationInverseFieldInFile(savedInverseField: FieldMetadata, inverseModelName: string, moduleName: string) {\n try {\n const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);\n\n // Create the config object for the inverse field\n const fieldObject: Record<string, any> = await this.createFieldConfig(savedInverseField);\n\n // Find the field config object in the json file\n const model = metaData.moduleMetadata.models.find((model: any) => model.singularName === inverseModelName);\n\n // Replace the current field object with the above field object\n const fieldIndex = model.fields.findIndex((field: any) => field.name === savedInverseField.name);\n if (fieldIndex === -1) {\n model.fields.push(fieldObject);\n }\n else {\n model.fields[fieldIndex] = fieldObject;\n }\n\n // Write the updated object back to the file\n const updatedContent = JSON.stringify(metaData, null, 2);\n await fs.writeFile(filePath, updatedContent);\n } catch (error) {\n this.logger.error('File creation failed:', error);\n throw new Error(ERROR_MESSAGES.FILE_WRITE_FAILED); // Trigger rollback\n }\n }\n\n //Moved existing reusable logic to a separate function\n async createFieldConfig(field: FieldMetadata) {\n const fieldsRequiredBasedOnType = await this.fetchCurrentFieldsBasedOnType(field.type);\n const fieldObject: Record<string, any> = {};\n\n // Assign default or placeholder values for required fields\n fieldsRequiredBasedOnType.forEach((requiredField) => {\n fieldObject[requiredField] = field[requiredField];\n });\n\n if (field.type == \"mediaSingle\" || field.type == \"mediaMultiple\") {\n if (field.mediaStorageProvider) {\n delete fieldObject.mediaStorageProviderId\n fieldObject.mediaStorageProviderUserKey = field.mediaStorageProvider.name\n }\n }\n if (field.isMarkedForRemoval) {\n fieldObject.isMarkedForRemoval = field.isMarkedForRemoval;\n }\n\n return fieldObject;\n }\n}\n\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAA6B,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,qBACa,WAAW;IAOpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IALtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAIpC,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC;IAavE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAWpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B5G,OAAO,CAAC,qBAAqB;IAIvB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file.service.d.ts","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAA6B,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,qBACa,WAAW;IAOpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IALtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAIpC,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC;IAavE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAWpD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B5G,OAAO,CAAC,qBAAqB;IAIvB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzE,OAAO,CAAC,eAAe;IAUV,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAS/F"}
|
|
@@ -152,23 +152,7 @@ let FileService = FileService_1 = class FileService {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
async copyToS3WithPublic(filePath, ContentType, fileName, bucketName) {
|
|
155
|
-
this.
|
|
156
|
-
try {
|
|
157
|
-
const data = await this.readImageFile(filePath);
|
|
158
|
-
const params = {
|
|
159
|
-
Bucket: bucketName,
|
|
160
|
-
Key: fileName,
|
|
161
|
-
Body: data,
|
|
162
|
-
ContentType: ContentType,
|
|
163
|
-
ACL: "public-read"
|
|
164
|
-
};
|
|
165
|
-
const command = new client_s3_1.PutObjectCommand(params);
|
|
166
|
-
const response = await this.s3Client.send(command);
|
|
167
|
-
return fileName;
|
|
168
|
-
}
|
|
169
|
-
catch (error) {
|
|
170
|
-
throw new Error(`${error_messages_1.ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);
|
|
171
|
-
}
|
|
155
|
+
return this.copyToS3(filePath, ContentType, fileName, bucketName);
|
|
172
156
|
}
|
|
173
157
|
async deleteFromS3(fileName, bucketName) {
|
|
174
158
|
this.checkIfS3ClientExists();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.service.js","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable, Logger } from '@nestjs/common';\nimport * as fs from 'fs';\n// import * as AWS from 'aws-sdk';\nimport { S3Client, PutObjectCommand, DeleteObjectCommand, ObjectCannedACL, GetObjectCommand } from '@aws-sdk/client-s3';\nimport { ConfigType } from '@nestjs/config';\nimport commonConfig, { AwsS3Config } from '../config/common.config';\nimport path from 'path';\nimport { Readable } from 'stream';\nimport { getSignedUrl as awsGetSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\n\n@Injectable()\nexport class FileService {\n\n private readonly s3Client: S3Client;\n private readonly logger = new Logger(FileService.name);\n\n constructor(\n @Inject(commonConfig.KEY)\n private readonly commonConfiguration: ConfigType<typeof commonConfig>,\n\n ) {\n if (!this.isValidS3Config(this.commonConfiguration.awsS3Credentials)) { return }\n this.s3Client = new S3Client({\n region: this.commonConfiguration.awsS3Credentials.S3_AWS_REGION_NAME,\n credentials: {\n accessKeyId: this.commonConfiguration.awsS3Credentials.S3_AWS_ACCESS_KEY,\n secretAccessKey: this.commonConfiguration.awsS3Credentials.S3_AWS_SECRET_KEY,\n },\n });\n }\n\n readFile(filePath: string): Promise<string | Buffer> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, (err, data) => {\n if (err) {\n return reject(err);\n }\n resolve(data);\n });\n });\n }\n\n readImageFile(filePath: string): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, (err, data) => {\n if (err) {\n return reject(err);\n }\n resolve(data); // Resolve with Buffer instead of string\n });\n\n });\n }\n\n writeFile(filePath: string, data: string | Buffer): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.writeFile(filePath, data, (err) => {\n if (err) {\n return reject(err);\n }\n resolve();\n });\n });\n }\n\n async copyFile(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n const data = await this.readFile(sourcePath);\n await this.createDirectoryIfNotExists(destinationPath);\n await this.writeFile(destinationPath, data);\n } catch (error) {\n throw new Error(`${ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);\n }\n }\n\n async createDirectoryIfNotExists(filePath: string): Promise<void> {\n const dir = path.dirname(filePath);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n }\n\n deleteFile(filePath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.unlink(filePath, (err) => {\n if (err) {\n return reject(err);\n }\n resolve();\n });\n });\n }\n\n async copyToS3(filePath: string, ContentType: string, fileName: string, bucketName: string): Promise<string> {\n this.checkIfS3ClientExists();\n try {\n // Read Image File TO Fetch Buffer \n const data = await this.readImageFile(filePath);\n\n const params = {\n Bucket: bucketName,\n Key: fileName,\n Body: data,\n ContentType: ContentType, // Set the correct MIME type\n\n };\n // Upload it to S3\n // const response = await this.s3.upload(params).promise();\n const command = new PutObjectCommand(params);\n const response = await this.s3Client.send(command);\n\n // Return the URL file Name\n // To access the file - https://rep-public-files.s3.amazonaws.com/${fileName}\n return fileName\n\n } catch (error) {\n throw new Error(`${ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);\n }\n }\n\n private checkIfS3ClientExists() {\n if (!this.s3Client) { throw new Error(ERROR_MESSAGES.S3_CLIENT_NOT_INITIALIZED); }\n }\n\n async copyToS3WithPublic(filePath: string, ContentType: string, fileName: string, bucketName: string): Promise<string> {\n this.checkIfS3ClientExists();\n try {\n // Read Image File TO Fetch Buffer \n const data = await this.readImageFile(filePath);\n\n const params = {\n Bucket: bucketName,\n Key: fileName,\n Body: data,\n ContentType: ContentType, // Set the correct MIME type\n ACL: \"public-read\" as ObjectCannedACL\n };\n // Upload it to S3\n // const response = await this.s3.upload(params).promise();\n const command = new PutObjectCommand(params);\n const response = await this.s3Client.send(command);\n\n // Return the URL file Name\n // To access the file - https://rep-public-files.s3.amazonaws.com/${fileName}\n return fileName\n\n } catch (error) {\n throw new Error(`${ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);\n }\n }\n\n async deleteFromS3(fileName: string, bucketName: string): Promise<string> {\n this.checkIfS3ClientExists();\n const params = {\n Bucket: bucketName, // your S3 bucket name\n Key: fileName // the name of the file you want to delete \n };\n\n const command = new DeleteObjectCommand(params)\n const response = await this.s3Client.send(command);\n return fileName\n }\n\n private isValidS3Config(config: AwsS3Config): boolean {\n return !!config.S3_AWS_ACCESS_KEY && !!config.S3_AWS_SECRET_KEY && !!config.S3_AWS_REGION_NAME;\n }\n\n /**\n * Save a stream to a file\n * @param stream - Readable stream\n * @param filePath - Destination file path\n * @returns Promise<void>\n */\n public async writeStreamToFile(stream: Readable, filePath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const writeStream = fs.createWriteStream(filePath);\n stream.pipe(writeStream);\n\n writeStream.on('finish', () => {\n this.logger.debug(`✅ File saved: ${filePath}`);\n resolve();\n });\n\n writeStream.on('error', (err) => {\n this.logger.debug(`❌ Error saving file: ${filePath}`, err);\n reject(err);\n });\n });\n }\n\n public async fileExists(filePath: string): Promise<boolean> {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK);\n return true;\n } catch {\n return false;\n }\n }\n\n public async getSignedUrl(key: string, expiresIn: number, bucketName: string): Promise<string> {\n const command = new GetObjectCommand({\n Bucket: bucketName,\n Key: key,\n });\n\n return awsGetSignedUrl(this.s3Client, command, { expiresIn });\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"file.service.js","sourceRoot":"","sources":["../../src/services/file.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable, Logger } from '@nestjs/common';\nimport * as fs from 'fs';\n// import * as AWS from 'aws-sdk';\nimport { S3Client, PutObjectCommand, DeleteObjectCommand, ObjectCannedACL, GetObjectCommand } from '@aws-sdk/client-s3';\nimport { ConfigType } from '@nestjs/config';\nimport commonConfig, { AwsS3Config } from '../config/common.config';\nimport path from 'path';\nimport { Readable } from 'stream';\nimport { getSignedUrl as awsGetSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\n\n@Injectable()\nexport class FileService {\n\n private readonly s3Client: S3Client;\n private readonly logger = new Logger(FileService.name);\n\n constructor(\n @Inject(commonConfig.KEY)\n private readonly commonConfiguration: ConfigType<typeof commonConfig>,\n\n ) {\n if (!this.isValidS3Config(this.commonConfiguration.awsS3Credentials)) { return }\n this.s3Client = new S3Client({\n region: this.commonConfiguration.awsS3Credentials.S3_AWS_REGION_NAME,\n credentials: {\n accessKeyId: this.commonConfiguration.awsS3Credentials.S3_AWS_ACCESS_KEY,\n secretAccessKey: this.commonConfiguration.awsS3Credentials.S3_AWS_SECRET_KEY,\n },\n });\n }\n\n readFile(filePath: string): Promise<string | Buffer> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, (err, data) => {\n if (err) {\n return reject(err);\n }\n resolve(data);\n });\n });\n }\n\n readImageFile(filePath: string): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, (err, data) => {\n if (err) {\n return reject(err);\n }\n resolve(data); // Resolve with Buffer instead of string\n });\n\n });\n }\n\n writeFile(filePath: string, data: string | Buffer): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.writeFile(filePath, data, (err) => {\n if (err) {\n return reject(err);\n }\n resolve();\n });\n });\n }\n\n async copyFile(sourcePath: string, destinationPath: string): Promise<void> {\n try {\n const data = await this.readFile(sourcePath);\n await this.createDirectoryIfNotExists(destinationPath);\n await this.writeFile(destinationPath, data);\n } catch (error) {\n throw new Error(`${ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);\n }\n }\n\n async createDirectoryIfNotExists(filePath: string): Promise<void> {\n const dir = path.dirname(filePath);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n }\n\n deleteFile(filePath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.unlink(filePath, (err) => {\n if (err) {\n return reject(err);\n }\n resolve();\n });\n });\n }\n\n async copyToS3(filePath: string, ContentType: string, fileName: string, bucketName: string): Promise<string> {\n this.checkIfS3ClientExists();\n try {\n // Read Image File TO Fetch Buffer \n const data = await this.readImageFile(filePath);\n\n const params = {\n Bucket: bucketName,\n Key: fileName,\n Body: data,\n ContentType: ContentType, // Set the correct MIME type\n\n };\n // Upload it to S3\n // const response = await this.s3.upload(params).promise();\n const command = new PutObjectCommand(params);\n const response = await this.s3Client.send(command);\n\n // Return the URL file Name\n // To access the file - https://rep-public-files.s3.amazonaws.com/${fileName}\n return fileName\n\n } catch (error) {\n throw new Error(`${ERROR_MESSAGES.FILE_COPY_ERROR}: ${error.message}`);\n }\n }\n\n private checkIfS3ClientExists() {\n if (!this.s3Client) { throw new Error(ERROR_MESSAGES.S3_CLIENT_NOT_INITIALIZED); }\n }\n\n async copyToS3WithPublic(filePath: string, ContentType: string, fileName: string, bucketName: string): Promise<string> {\n return this.copyToS3(filePath, ContentType, fileName, bucketName);\n }\n\n async deleteFromS3(fileName: string, bucketName: string): Promise<string> {\n this.checkIfS3ClientExists();\n const params = {\n Bucket: bucketName, // your S3 bucket name\n Key: fileName // the name of the file you want to delete \n };\n\n const command = new DeleteObjectCommand(params)\n const response = await this.s3Client.send(command);\n return fileName\n }\n\n private isValidS3Config(config: AwsS3Config): boolean {\n return !!config.S3_AWS_ACCESS_KEY && !!config.S3_AWS_SECRET_KEY && !!config.S3_AWS_REGION_NAME;\n }\n\n /**\n * Save a stream to a file\n * @param stream - Readable stream\n * @param filePath - Destination file path\n * @returns Promise<void>\n */\n public async writeStreamToFile(stream: Readable, filePath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const writeStream = fs.createWriteStream(filePath);\n stream.pipe(writeStream);\n\n writeStream.on('finish', () => {\n this.logger.debug(`✅ File saved: ${filePath}`);\n resolve();\n });\n\n writeStream.on('error', (err) => {\n this.logger.debug(`❌ Error saving file: ${filePath}`, err);\n reject(err);\n });\n });\n }\n\n public async fileExists(filePath: string): Promise<boolean> {\n try {\n await fs.promises.access(filePath, fs.constants.F_OK);\n return true;\n } catch {\n return false;\n }\n }\n\n public async getSignedUrl(key: string, expiresIn: number, bucketName: string): Promise<string> {\n const command = new GetObjectCommand({\n Bucket: bucketName,\n Key: key,\n });\n\n return awsGetSignedUrl(this.s3Client, command, { expiresIn });\n }\n\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
2
|
-
import { EntityManager
|
|
2
|
+
import { EntityManager } from 'typeorm';
|
|
3
3
|
import { CRUDService } from 'src/services/crud.service';
|
|
4
4
|
import { ModelMetadataService } from 'src/services/model-metadata.service';
|
|
5
5
|
import { ModuleMetadataService } from 'src/services/module-metadata.service';
|
|
@@ -7,6 +7,7 @@ import { ConfigService } from '@nestjs/config';
|
|
|
7
7
|
import { FileService } from 'src/services/file.service';
|
|
8
8
|
import { CrudHelperService } from 'src/services/crud-helper.service';
|
|
9
9
|
import { ImportTransactionErrorLog } from '../entities/import-transaction-error-log.entity';
|
|
10
|
+
import { ImportTransactionErrorLogRepository } from 'src/repository/import-transaction-error-log.repository';
|
|
10
11
|
export declare class ImportTransactionErrorLogService extends CRUDService<ImportTransactionErrorLog> {
|
|
11
12
|
readonly modelMetadataService: ModelMetadataService;
|
|
12
13
|
readonly moduleMetadataService: ModuleMetadataService;
|
|
@@ -15,8 +16,8 @@ export declare class ImportTransactionErrorLogService extends CRUDService<Import
|
|
|
15
16
|
readonly discoveryService: DiscoveryService;
|
|
16
17
|
readonly crudHelperService: CrudHelperService;
|
|
17
18
|
readonly entityManager: EntityManager;
|
|
18
|
-
readonly repo:
|
|
19
|
+
readonly repo: ImportTransactionErrorLogRepository;
|
|
19
20
|
readonly moduleRef: ModuleRef;
|
|
20
|
-
constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, entityManager: EntityManager, repo:
|
|
21
|
+
constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, entityManager: EntityManager, repo: ImportTransactionErrorLogRepository, moduleRef: ModuleRef);
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=import-transaction-error-log.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-transaction-error-log.service.d.ts","sourceRoot":"","sources":["../../src/services/import-transaction-error-log.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAG,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"import-transaction-error-log.service.d.ts","sourceRoot":"","sources":["../../src/services/import-transaction-error-log.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAG,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAc,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAE7G,qBACa,gCAAiC,SAAQ,WAAW,CAAC,yBAAyB,CAAC;IAExF,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAE7C,QAAQ,CAAC,aAAa,EAAE,aAAa;IAGrC,QAAQ,CAAC,IAAI,EAAE,mCAAmC;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAXpB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EAEpC,aAAa,EAAE,aAAa,EAG5B,IAAI,EAAE,mCAAmC,EACzC,SAAS,EAAE,SAAS;CAKhC"}
|
|
@@ -23,7 +23,7 @@ const module_metadata_service_1 = require("./module-metadata.service");
|
|
|
23
23
|
const config_1 = require("@nestjs/config");
|
|
24
24
|
const file_service_1 = require("./file.service");
|
|
25
25
|
const crud_helper_service_1 = require("./crud-helper.service");
|
|
26
|
-
const
|
|
26
|
+
const import_transaction_error_log_repository_1 = require("../repository/import-transaction-error-log.repository");
|
|
27
27
|
let ImportTransactionErrorLogService = class ImportTransactionErrorLogService extends crud_service_1.CRUDService {
|
|
28
28
|
constructor(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, moduleRef) {
|
|
29
29
|
super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'importTransactionErrorLog', 'solid-core', moduleRef);
|
|
@@ -42,7 +42,6 @@ exports.ImportTransactionErrorLogService = ImportTransactionErrorLogService;
|
|
|
42
42
|
exports.ImportTransactionErrorLogService = ImportTransactionErrorLogService = __decorate([
|
|
43
43
|
(0, common_1.Injectable)(),
|
|
44
44
|
__param(6, (0, typeorm_1.InjectEntityManager)()),
|
|
45
|
-
__param(7, (0, typeorm_1.InjectRepository)(import_transaction_error_log_entity_1.ImportTransactionErrorLog, 'default')),
|
|
46
45
|
__metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
|
|
47
46
|
module_metadata_service_1.ModuleMetadataService,
|
|
48
47
|
config_1.ConfigService,
|
|
@@ -50,7 +49,7 @@ exports.ImportTransactionErrorLogService = ImportTransactionErrorLogService = __
|
|
|
50
49
|
core_1.DiscoveryService,
|
|
51
50
|
crud_helper_service_1.CrudHelperService,
|
|
52
51
|
typeorm_2.EntityManager,
|
|
53
|
-
|
|
52
|
+
import_transaction_error_log_repository_1.ImportTransactionErrorLogRepository,
|
|
54
53
|
core_1.ModuleRef])
|
|
55
54
|
], ImportTransactionErrorLogService);
|
|
56
55
|
//# sourceMappingURL=import-transaction-error-log.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-transaction-error-log.service.js","sourceRoot":"","sources":["../../src/services/import-transaction-error-log.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAwE;AACxE,uCAA4D;AAC5D,qCAAoD;AAEpD,iDAAwD;AACxD,qEAA2E;AAC3E,uEAA6E;AAC7E,2CAA+C;AAC/C,iDAAwD;AACxD,+DAAqE;
|
|
1
|
+
{"version":3,"file":"import-transaction-error-log.service.js","sourceRoot":"","sources":["../../src/services/import-transaction-error-log.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAwE;AACxE,uCAA4D;AAC5D,qCAAoD;AAEpD,iDAAwD;AACxD,qEAA2E;AAC3E,uEAA6E;AAC7E,2CAA+C;AAC/C,iDAAwD;AACxD,+DAAqE;AAIrE,mHAA6G;AAGtG,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,0BAAsC;IAC1F,YACW,oBAA0C,EAC1C,qBAA4C,EAC5C,aAA4B,EAC5B,WAAwB,EACxB,gBAAkC,EAClC,iBAAoC,EAEpC,aAA4B,EAG5B,IAAyC,EACzC,SAAoB;QAG9B,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,EAAG,aAAa,EAAE,WAAW,EAAG,gBAAgB,EAAE,iBAAiB,EAAC,aAAa,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAdtL,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,kBAAa,GAAb,aAAa,CAAe;QAG5B,SAAI,GAAJ,IAAI,CAAqC;QACzC,cAAS,GAAT,SAAS,CAAW;IAIhC,CAAC;CACD,CAAA;AAlBY,4EAAgC;2CAAhC,gCAAgC;IAD5C,IAAA,mBAAU,GAAE;IASR,WAAA,IAAA,6BAAmB,GAAE,CAAA;qCANS,6CAAoB;QACnB,+CAAqB;QAC7B,sBAAa;QACf,0BAAW;QACN,uBAAgB;QACf,uCAAiB;QAErB,uBAAa;QAGtB,6EAAmC;QAC9B,gBAAS;GAbpB,gCAAgC,CAkB5C","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { EntityManager, Repository } from 'typeorm';\n\nimport { CRUDService } from 'src/services/crud.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { ConfigService } from '@nestjs/config';\nimport { FileService } from 'src/services/file.service';\nimport { CrudHelperService } from 'src/services/crud-helper.service';\n\n\nimport { ImportTransactionErrorLog } from '../entities/import-transaction-error-log.entity';\nimport { ImportTransactionErrorLogRepository } from 'src/repository/import-transaction-error-log.repository';\n\n@Injectable()\nexport class ImportTransactionErrorLogService extends CRUDService<ImportTransactionErrorLog>{\n constructor(\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(ImportTransactionErrorLog, 'default')\n // readonly repo: Repository<ImportTransactionErrorLog>,\n readonly repo: ImportTransactionErrorLogRepository,\n readonly moduleRef: ModuleRef\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService,entityManager, repo, 'importTransactionErrorLog', 'solid-core', moduleRef);\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
2
|
-
import { EntityManager
|
|
2
|
+
import { EntityManager } from 'typeorm';
|
|
3
3
|
import { ConfigService } from '@nestjs/config';
|
|
4
4
|
import { CrudHelperService } from 'src/services/crud-helper.service';
|
|
5
5
|
import { CRUDService } from 'src/services/crud.service';
|
|
@@ -9,10 +9,13 @@ import { ModuleMetadataService } from 'src/services/module-metadata.service';
|
|
|
9
9
|
import { HttpService } from '@nestjs/axios';
|
|
10
10
|
import { ImportInstructionsResponseDto } from 'src/dtos/import-instructions.dto';
|
|
11
11
|
import { ImportTransactionErrorLog } from 'src/entities/import-transaction-error-log.entity';
|
|
12
|
+
import { ImportTransactionRepository } from 'src/repository/import-transaction.repository';
|
|
12
13
|
import { ImportTransaction } from '../entities/import-transaction.entity';
|
|
13
14
|
import { CsvService } from './csv.service';
|
|
14
15
|
import { ExcelService } from './excel.service';
|
|
15
16
|
import { SolidIntrospectService } from './solid-introspect.service';
|
|
17
|
+
import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
|
|
18
|
+
import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
|
|
16
19
|
interface ImportTemplateFileInfo {
|
|
17
20
|
stream: NodeJS.ReadableStream;
|
|
18
21
|
fileName: string;
|
|
@@ -64,18 +67,19 @@ export declare class ImportTransactionService extends CRUDService<ImportTransact
|
|
|
64
67
|
readonly discoveryService: DiscoveryService;
|
|
65
68
|
readonly crudHelperService: CrudHelperService;
|
|
66
69
|
readonly entityManager: EntityManager;
|
|
67
|
-
readonly repo:
|
|
70
|
+
readonly repo: ImportTransactionRepository;
|
|
68
71
|
readonly moduleRef: ModuleRef;
|
|
69
72
|
readonly excelService: ExcelService;
|
|
70
73
|
readonly csvService: CsvService;
|
|
71
74
|
readonly httpService: HttpService;
|
|
72
75
|
readonly introspectService: SolidIntrospectService;
|
|
73
|
-
|
|
76
|
+
private readonly modelMetadataHelperService;
|
|
77
|
+
constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, entityManager: EntityManager, repo: ImportTransactionRepository, moduleRef: ModuleRef, excelService: ExcelService, csvService: CsvService, httpService: HttpService, introspectService: SolidIntrospectService, modelMetadataHelperService: ModelMetadataHelperService);
|
|
74
78
|
private readonly logger;
|
|
75
79
|
getImportTemplate(modelMetadataId: number, format?: ImportFormat): Promise<ImportTemplateFileInfo>;
|
|
76
80
|
getImportInstructions(modelMetadataId: number): Promise<ImportInstructionsResponseDto>;
|
|
77
81
|
getImportMappingInfo(importTransactionId: number): Promise<ImportMappingInfo>;
|
|
78
|
-
startImportSync(importTransactionId: number): Promise<ImportSyncResult>;
|
|
82
|
+
startImportSync(importTransactionId: number, activeUser: ActiveUserData): Promise<ImportSyncResult>;
|
|
79
83
|
startImportAsync(importTransactionId: number): Promise<void>;
|
|
80
84
|
exportFailedImportedImports(importTransactionId: number): Promise<{
|
|
81
85
|
stream: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-transaction.service.d.ts","sourceRoot":"","sources":["../../src/services/import-transaction.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"import-transaction.service.d.ts","sourceRoot":"","sources":["../../src/services/import-transaction.service.ts"],"names":[],"mappings":"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"}
|