@solidstarters/solid-core 1.2.200 → 1.2.201
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/fixtures/fixtures-setup.command.d.ts +15 -0
- package/dist/commands/fixtures/fixtures-setup.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-setup.command.js +58 -0
- package/dist/commands/fixtures/fixtures-setup.command.js.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +16 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js +59 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js.map +1 -0
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +4 -0
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/constants/error-messages.d.ts +2 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +4 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/model-sequence.controller.d.ts +43 -0
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -0
- package/dist/controllers/model-sequence.controller.js +179 -0
- package/dist/controllers/model-sequence.controller.js.map +1 -0
- package/dist/controllers/setting.controller.d.ts +1 -0
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +15 -0
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/dtos/basic-filters.dto.d.ts +3 -1
- package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.js +8 -2
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/basic-group-filters.dto.d.ts +6 -0
- package/dist/dtos/basic-group-filters.dto.d.ts.map +1 -0
- package/dist/dtos/basic-group-filters.dto.js +46 -0
- package/dist/dtos/basic-group-filters.dto.js.map +1 -0
- package/dist/dtos/create-field-metadata.dto.js +2 -2
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-sequence.dto.d.ts +14 -0
- package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/create-model-sequence.dto.js +90 -0
- package/dist/dtos/create-model-sequence.dto.js.map +1 -0
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +1 -0
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/get-mcp-url.dto.d.ts +5 -0
- package/dist/dtos/get-mcp-url.dto.d.ts.map +1 -0
- package/dist/dtos/get-mcp-url.dto.js +31 -0
- package/dist/dtos/get-mcp-url.dto.js.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts +5 -5
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -1
- package/dist/dtos/resolve-s3-url.dto.js +7 -7
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -1
- package/dist/dtos/update-model-sequence.dto.d.ts +15 -0
- package/dist/dtos/update-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/update-model-sequence.dto.js +94 -0
- package/dist/dtos/update-model-sequence.dto.js.map +1 -0
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +1 -0
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/legacy-common.entity.d.ts.map +1 -1
- package/dist/entities/legacy-common.entity.js +1 -0
- package/dist/entities/legacy-common.entity.js.map +1 -1
- package/dist/entities/model-sequence.entity.d.ts +15 -0
- package/dist/entities/model-sequence.entity.d.ts.map +1 -0
- package/dist/entities/model-sequence.entity.js +67 -0
- package/dist/entities/model-sequence.entity.js.map +1 -0
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +13 -2
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +7 -8
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +6 -2
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +9 -0
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts +1 -0
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +29 -3
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +11 -0
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts +1 -0
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.js +16 -4
- package/dist/jobs/computed-field-evaluation-subscriber.service.js.map +1 -1
- package/dist/repository/media.repository.d.ts.map +1 -1
- package/dist/repository/media.repository.js +4 -0
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/repository/model-sequence.repository.d.ts +14 -0
- package/dist/repository/model-sequence.repository.d.ts.map +1 -0
- package/dist/repository/model-sequence.repository.js +103 -0
- package/dist/repository/model-sequence.repository.js.map +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts +7 -12
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +64 -26
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +343 -27
- package/dist/seeders/system-fields-seeder.service.d.ts +1 -0
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +11 -2
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +1 -0
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +1 -0
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +22 -14
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.d.ts.map +1 -1
- package/dist/services/chatter-message-details.service.js +1 -0
- package/dist/services/chatter-message-details.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +7 -3
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +7 -5
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +15 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +72 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -0
- package/dist/services/crud-helper.service.d.ts +23 -6
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +257 -45
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +3 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +53 -24
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/database/database-bootstrap.service.d.ts +12 -0
- package/dist/services/database/database-bootstrap.service.d.ts.map +1 -0
- package/dist/services/database/database-bootstrap.service.js +115 -0
- package/dist/services/database/database-bootstrap.service.js.map +1 -0
- package/dist/services/email-template.service.d.ts +7 -7
- package/dist/services/email-template.service.d.ts.map +1 -1
- package/dist/services/email-template.service.js +8 -7
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/excel.service.d.ts +10 -0
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +100 -0
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +4 -1
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +35 -30
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts +1 -0
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +9 -0
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/fixtures.service.d.ts +13 -0
- package/dist/services/fixtures.service.d.ts.map +1 -0
- package/dist/services/fixtures.service.js +95 -0
- package/dist/services/fixtures.service.js.map +1 -0
- package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
- package/dist/services/genai/ingest-metadata.service.js +1 -1
- package/dist/services/genai/ingest-metadata.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
- package/dist/services/import-transaction-error-log.service.js +1 -0
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +7 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +2 -2
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +2 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +1 -0
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.js +0 -1
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/media.service.d.ts +3 -3
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +6 -4
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +17 -6
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +0 -13
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +4 -0
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +2 -42
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/model-sequence.service.d.ts +23 -0
- package/dist/services/model-sequence.service.d.ts.map +1 -0
- package/dist/services/model-sequence.service.js +55 -0
- package/dist/services/model-sequence.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +1 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +35 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/permission-metadata.service.d.ts +5 -5
- package/dist/services/permission-metadata.service.d.ts.map +1 -1
- package/dist/services/permission-metadata.service.js +6 -5
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +2 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +2 -2
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +1 -0
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +6 -6
- package/dist/services/scheduled-job.service.d.ts.map +1 -1
- package/dist/services/scheduled-job.service.js +8 -8
- package/dist/services/scheduled-job.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +4 -0
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +1 -0
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js +4 -0
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +7 -5
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +26 -4
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/sms-template.service.d.ts +7 -7
- package/dist/services/sms-template.service.d.ts.map +1 -1
- package/dist/services/sms-template.service.js +8 -7
- package/dist/services/sms-template.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +4 -13
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +4 -22
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/solid-ts-morph.service.js +2 -2
- package/dist/services/solid-ts-morph.service.js.map +1 -1
- package/dist/services/user-activity-history.service.d.ts.map +1 -1
- package/dist/services/user-activity-history.service.js +1 -0
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.d.ts.map +1 -1
- package/dist/services/user-view-metadata.service.js +3 -2
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +1 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +3 -1
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core-cli-db.module.d.ts.map +1 -1
- package/dist/solid-core-cli-db.module.js +5 -2
- package/dist/solid-core-cli-db.module.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +18 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +5 -1
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +4 -2
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +53 -12
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts +5 -0
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js +26 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/grouping-enhancements.md +89 -0
- package/package.json +1 -1
- package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
- package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
- package/src/commands/refresh-model.command.ts +3 -1
- package/src/constants/error-messages.ts +7 -1
- package/src/controllers/model-sequence.controller.ts +93 -0
- package/src/controllers/setting.controller.ts +33 -21
- package/src/dtos/basic-filters.dto.ts +6 -1
- package/src/dtos/basic-group-filters.dto.ts +23 -0
- package/src/dtos/create-field-metadata.dto.ts +1 -1
- package/src/dtos/create-model-sequence.dto.ts +51 -0
- package/src/dtos/create-role-metadata.dto.ts +16 -3
- package/src/dtos/get-mcp-url.dto.ts +13 -0
- package/src/dtos/resolve-s3-url.dto.ts +9 -11
- package/src/dtos/update-model-sequence.dto.ts +53 -0
- package/src/entities/common.entity.ts +2 -2
- package/src/entities/legacy-common.entity.ts +2 -1
- package/src/entities/model-sequence.entity.ts +32 -0
- package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +18 -5
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +16 -8
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/model-metadata-helper.service.ts +6 -4
- package/src/helpers/module-metadata-helper.service.ts +18 -1
- package/src/helpers/module.helper.ts +40 -5
- package/src/helpers/solid-registry.ts +14 -0
- package/src/index.ts +3 -1
- package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
- package/src/repository/media.repository.ts +3 -2
- package/src/repository/model-sequence.repository.ts +97 -0
- package/src/seeders/module-metadata-seeder.service.ts +103 -29
- package/src/seeders/seed-data/solid-core-metadata.json +343 -27
- package/src/seeders/system-fields-seeder.service.ts +6 -2
- package/src/services/action-metadata.service.ts +3 -2
- package/src/services/ai-interaction.service.ts +2 -1
- package/src/services/authentication.service.ts +46 -14
- package/src/services/chatter-message-details.service.ts +2 -1
- package/src/services/chatter-message.service.ts +10 -4
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +8 -7
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
- package/src/services/crud-helper.service.ts +287 -49
- package/src/services/crud.service.ts +83 -32
- package/src/services/database/database-bootstrap.service.ts +91 -0
- package/src/services/email-template.service.ts +11 -13
- package/src/services/excel.service.ts +146 -3
- package/src/services/field-metadata.service.ts +102 -55
- package/src/services/file.service.ts +9 -0
- package/src/services/fixtures.service.ts +108 -0
- package/src/services/genai/ingest-metadata.service.ts +4 -3
- package/src/services/import-transaction-error-log.service.ts +2 -1
- package/src/services/import-transaction.service.ts +8 -4
- package/src/services/list-of-values.service.ts +4 -4
- package/src/services/locale.service.ts +2 -1
- package/src/services/mail/smtp-email.service.ts +1 -1
- package/src/services/media.service.ts +10 -11
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +22 -7
- package/src/services/mediaStorageProviders/file-storage-provider.ts +18 -13
- package/src/services/menu-item-metadata.service.ts +6 -2
- package/src/services/model-metadata.service.ts +50 -44
- package/src/services/model-sequence.service.ts +33 -0
- package/src/services/module-metadata.service.ts +49 -2
- package/src/services/permission-metadata.service.ts +8 -9
- package/src/services/queues/database-subscriber.service.ts +3 -1
- package/src/services/queues/rabbitmq-subscriber.service.ts +4 -2
- package/src/services/role-metadata.service.ts +1 -0
- package/src/services/scheduled-job.service.ts +9 -9
- package/src/services/scheduled-jobs/scheduler.service.ts +5 -0
- package/src/services/security-rule.service.ts +1 -0
- package/src/services/selection-providers/list-of-models-selection-provider.service.ts +5 -2
- package/src/services/setting.service.ts +33 -6
- package/src/services/sms-template.service.ts +11 -13
- package/src/services/solid-introspect.service.ts +6 -19
- package/src/services/solid-ts-morph.service.ts +2 -2
- package/src/services/user-activity-history.service.ts +3 -2
- package/src/services/user-view-metadata.service.ts +4 -3
- package/src/services/user.service.ts +2 -1
- package/src/services/view-metadata.service.ts +5 -4
- package/src/solid-core-cli-db.module.ts +5 -4
- package/src/solid-core.module.ts +18 -0
- package/src/subscribers/audit.subscriber.ts +3 -2
- package/src/subscribers/computed-entity-field.subscriber.ts +60 -17
- package/src/transformers/typeorm/local-date-time-transformer.ts +30 -0
- /package/sql/{mssql → default/mssql}/proc_CleanupModelMetadata.sql +0 -0
- /package/sql/{mssql → default/mssql}/proc_CleanupModuleMetadata.sql +0 -0
- /package/sql/{mssql/scratchpad.sql → default/mssql/scratchpad.sql.txt} +0 -0
- /package/sql/{postgres → default/postgres}/proc_CleanupModelMetadata.sql +0 -0
- /package/sql/{postgres → default/postgres}/proc_CleanupModuleMetadata.sql +0 -0
- /package/sql/{postgres/scratchpad.sql → default/postgres/scratchpad.sql.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { BadRequestException } from \"@nestjs/common\";\nimport { isEmpty, isNotEmpty, isString } from \"class-validator\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { IsParsableInt } from \"src/validators/is-parsable-int\";\nimport { EntityManager } from \"typeorm\";\n\nexport interface ManyToOneRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n fieldName: string | undefined | null;\n // modelUserKeyFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n entityManager: EntityManager;\n relationCoModelUserKeyFieldName: string | undefined | null; \n}\n\n// This implementation is meant to be used for many-to-one relation field\nexport class ManyToOneRelationFieldCrudManager implements FieldCrudManager {\n private idFieldName: string;\n private userKeyFieldName: string;\n constructor(private readonly options: ManyToOneRelationFieldOptions) {\n // this.options = options;\n this.idFieldName = `${options.fieldName}Id`;\n this.userKeyFieldName = `${options.fieldName}UserKey`;\n }\n validate(dto: any) {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKey: string = dto[this.userKeyFieldName];\n return this.applyValidations(fieldId, fieldUserKey);\n }\n\n private applyValidations(fieldId: any, fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldId) && isEmpty(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required. Either pass ${this.idFieldName} or ${this.userKeyFieldName}.` }) : \"no errors\";\n if (isNotEmpty(fieldId)) {\n errors.push(...this.applyIdFormatValidations(fieldId));\n }\n if (isNotEmpty(fieldUserKey)) {\n errors.push(...this.applyUserKeyFormatValidations(fieldUserKey));\n }\n return errors;\n }\n\n private applyIdFormatValidations(fieldId: any): ValidationError[] { //FIXME fieldId is any because it can be string or number. Keeping it any for compatibility with isParsableInt. \n const errors: ValidationError[] = [];\n !IsParsableInt(fieldId) ? errors.push({ field: this.options.fieldName, error: 'Field is not a integer' }) : \"no errors\";\n return errors;\n }\n\n private applyUserKeyFormatValidations(fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n !isString(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: 'Field is not a string' }) : \"no errors\";\n if (isEmpty(this.options.relationCoModelUserKeyFieldName)) {\n errors.push({ field: this.options.fieldName, error: `UserKey field name is not defined in the model ${this.options.relationCoModelSingularName}` });\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKeyValue: string = dto[this.userKeyFieldName];\n\n // Avoid transforming if both fieldId and fieldUserKey is empty\n if ((isEmpty(fieldId)) && isEmpty(fieldUserKeyValue)) return dto;\n\n if (!this.options.relationCoModelSingularName) {\n throw new BadRequestException(`ManyToOneRelationFieldCrudManager: relationCoModelSingularName is not defined in the field: ${this.options.fieldName}`);\n }\n // // Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n const coModelEntityName = classify(this.options.relationCoModelSingularName);\n\n //Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n if (isNotEmpty(fieldId)) {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n else {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n\n\n return dto;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // Returns the entity target class from the entity name\n // private getRelatedEntityTarget(relatedEntityName: string): any {\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const relatedEntityMetadata = entityMetadatas.find(em => em.name === relatedEntityName);\n // return relatedEntityMetadata.target;\n // }\n\n}"]}
|
|
@@ -27,6 +27,5 @@ export declare class OneToManyRelationFieldCrudManager implements FieldCrudManag
|
|
|
27
27
|
private transformForCommandUpdate;
|
|
28
28
|
private transformForCommandDelete;
|
|
29
29
|
private isApplyRequiredValidation;
|
|
30
|
-
private getEntityTarget;
|
|
31
30
|
}
|
|
32
31
|
//# sourceMappingURL=OneToManyRelationFieldCrudManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToManyRelationFieldCrudManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAM,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,6BAA6B;IAE1C,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACrC,2BAA2B,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3D,iBAAiB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;CACnD;AAKD,qBAAa,iCAAkC,YAAW,gBAAgB;IAM1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAEb,OAAO,EAAE,6BAA6B;IAMnE,QAAQ,CAAC,GAAG,EAAE,GAAG;IAIjB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,sBAAsB;IAYxB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAYlC,kBAAkB;IA0BhC,OAAO,CAAC,wBAAwB;YAIlB,sBAAsB;YAYtB,sBAAsB;YActB,yBAAyB;YAgBzB,yBAAyB;YASzB,yBAAyB;YAgBzB,yBAAyB;IASvC,OAAO,CAAC,yBAAyB;
|
|
1
|
+
{"version":3,"file":"OneToManyRelationFieldCrudManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAM,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,6BAA6B;IAE1C,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACrC,2BAA2B,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACvD,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC3D,iBAAiB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;CACnD;AAKD,qBAAa,iCAAkC,YAAW,gBAAgB;IAM1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAEb,OAAO,EAAE,6BAA6B;IAMnE,QAAQ,CAAC,GAAG,EAAE,GAAG;IAIjB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,sBAAsB;IAYxB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAYlC,kBAAkB;IA0BhC,OAAO,CAAC,wBAAwB;YAIlB,sBAAsB;YAYtB,sBAAsB;YActB,yBAAyB;YAgBzB,yBAAyB;YASzB,yBAAyB;YAgBzB,yBAAyB;IASvC,OAAO,CAAC,yBAAyB;CAWpC"}
|
|
@@ -52,10 +52,10 @@ class OneToManyRelationFieldCrudManager {
|
|
|
52
52
|
return errors;
|
|
53
53
|
}
|
|
54
54
|
async transformForCreate(dto) {
|
|
55
|
-
const
|
|
56
|
-
const currentEntityRepository = this.options.entityManager.getRepository(
|
|
57
|
-
const
|
|
58
|
-
const relatedEntityRepository = this.options.entityManager.getRepository(
|
|
55
|
+
const currentEntityName = (0, strings_1.classify)(this.options.modelSingularName);
|
|
56
|
+
const currentEntityRepository = this.options.entityManager.getRepository(currentEntityName);
|
|
57
|
+
const relatedEntityName = (0, strings_1.classify)(this.options.relationCoModelSingularName);
|
|
58
|
+
const relatedEntityRepository = this.options.entityManager.getRepository(relatedEntityName);
|
|
59
59
|
dto[this.valueFieldName] = await this.transformByCommand(dto, relatedEntityRepository, currentEntityRepository);
|
|
60
60
|
return dto;
|
|
61
61
|
}
|
|
@@ -148,11 +148,6 @@ class OneToManyRelationFieldCrudManager {
|
|
|
148
148
|
isApplyRequiredValidation() {
|
|
149
149
|
return this.options.required;
|
|
150
150
|
}
|
|
151
|
-
getEntityTarget(entityName) {
|
|
152
|
-
const entityMetadatas = this.options.entityManager.connection.entityMetadatas;
|
|
153
|
-
const entityMetadata = entityMetadatas.find(em => em.name === entityName);
|
|
154
|
-
return entityMetadata.target;
|
|
155
|
-
}
|
|
156
151
|
}
|
|
157
152
|
exports.OneToManyRelationFieldCrudManager = OneToManyRelationFieldCrudManager;
|
|
158
153
|
//# sourceMappingURL=OneToManyRelationFieldCrudManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToManyRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts"],"names":[],"mappings":";;;AAAA,oEAAkE;AAClE,qDAAqE;AACrE,oFAA2E;AAG3E,qCAA4C;AAY5C,MAAM,YAAY,GAAG,CAAC,iDAAqB,CAAC,IAAI,EAAE,iDAAqB,CAAC,MAAM,EAAE,iDAAqB,CAAC,GAAG,CAAC,CAAC;AAG3G,MAAa,iCAAiC;IAM1C,YAA6B,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,GAAG,CAAC;QACrH,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,KAAK,CAAC;QACpH,IAAI,CAAC,gBAAgB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,SAAS,CAAC;IACjI,CAAC;IAED,QAAQ,CAAC,GAAQ;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEO,gBAAgB,CAAC,GAAQ;QAC7B,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAA,yBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACxJ,IAAI,IAAA,4BAAU,EAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,CAAC,IAAA,wBAAM,EAAC,YAAY,EAAE,iDAAqB,CAAC,CAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAChK,CAAC;QAED,IAAI,UAAU,GAAG,IAAI,CAAA;QACrB,IAAI,YAAY,KAAK,iDAAqB,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;aACI,CAAC;YACF,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAA,yBAAO,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,gBAAgB,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5L,IAAI,IAAA,4BAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAAC,UAAiB,EAAE,YAAmC,EAAE,gBAAwB;QAC3G,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAA,uBAAK,EAAC,EAAE,CAAC,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBACvG,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAQ;QAE7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3F,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAE9F,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrG,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;QAE7F,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;QAChH,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,GAAQ,EAAE,uBAA4B,EAAE,uBAA4B;QAEjG,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAElC,QAAQ,OAAO,EAAE,CAAC;YACd,KAAK,iDAAqB,CAAC,MAAM;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YACjF,KAAK,iDAAqB,CAAC,MAAM;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;YAC/G,KAAK,iDAAqB,CAAC,MAAM;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YACjF,KAAK,iDAAqB,CAAC,KAAK;gBAC5B,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC3C,KAAK,iDAAqB,CAAC,GAAG;gBAC1B,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;YACzG,KAAK,iDAAqB,CAAC,IAAI;gBAC3B,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;YACzG,KAAK,iDAAqB,CAAC,MAAM;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,uBAAuB,CAAC,CAAC;YAC5G;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC;IAEO,wBAAwB;QAC5B,OAAO,EAAE,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAU,EAAE,uBAA4B,EAAE,GAAQ,EAAE,uBAA4B;QAEjH,MAAM,cAAc,GAAU,MAAM,uBAAuB,CAAC,IAAI,CAAC;YAC7D,KAAK,EAAG,EAAC,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC,EAAE;SACzB,CAAC,CAAA;QACF,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAQ,EAAE,uBAA4B,EAAE,GAAQ,EAAE,uBAA4B;QAC/G,MAAM,uBAAuB,GAAG,EAAE,CAAC;QAEnC,MAAM,cAAc,GAAU,MAAM,uBAAuB,CAAC,IAAI,CAAC;YAC7D,KAAK,EAAG,EAAC,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC,EAAE;SACzB,CAAC,CAAA;QACF,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QACD,uBAAuB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAEhD,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,GAAQ,EAAE,uBAA4B,EAAE,GAAQ,EAAE,uBAA4B;QAClH,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC;YACzD,KAAK,EAAE,EAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAC;YACnB,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1G,uBAAuB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAElD,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAa,EAAE,uBAA4B;QAC/E,MAAM,wBAAwB,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC;QACA,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAa,EAAE,uBAA4B,EAAE,GAAQ,EAAE,uBAA4B;QACvH,MAAM,wBAAwB,GAAG,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClE,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC;iBACI,CAAC;gBACF,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3D,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QAED,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAa,EAAE,uBAA4B;QAE/E,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAG5C,MAAM,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,yBAAyB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;IAIO,eAAe,CAAC,UAAkB;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC;QAC9E,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC1E,OAAO,cAAc,CAAC,MAAM,CAAC;IACjC,CAAC;CACJ;AAxLD,8EAwLC","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { isEmpty, isEnum, isInt, isNotEmpty } from \"class-validator\";\nimport { RelationFieldsCommand } from \"src/dtos/create-field-metadata.dto\";\nimport { FieldMetadata } from \"src/entities/field-metadata.entity\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { EntityManager, In } from \"typeorm\";\n\nexport interface OneToManyRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n inverseRelationCoModelFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n inverseFieldName: string | undefined | null;\n entityManager: EntityManager | undefined | null;\n}\n\nconst linkCommands = [RelationFieldsCommand.link, RelationFieldsCommand.unlink, RelationFieldsCommand.set];\n\n// This implementation is meant to be used for many-to-one relation field\nexport class OneToManyRelationFieldCrudManager implements FieldCrudManager {\n\n private readonly valueFieldName: string;\n private readonly idFieldName: string;\n private readonly commandFieldName: string;\n\n constructor(private readonly options: OneToManyRelationFieldOptions) {\n this.valueFieldName = this.options.inverseRelationCoModelFieldName ?? `${this.options.relationCoModelSingularName}s`;\n this.idFieldName = `${this.options.inverseRelationCoModelFieldName ?? this.options.relationCoModelSingularName}Ids`;\n this.commandFieldName = `${this.options.inverseRelationCoModelFieldName ?? this.options.relationCoModelSingularName}Command`;\n }\n\n validate(dto: any) {\n return this.applyValidations(dto);\n }\n\n private applyValidations(dto: any): ValidationError[] { \n const errors: ValidationError[] = [];\n\n const commandFieldName = this.commandFieldName;\n const commandValue = dto[commandFieldName];\n this.isApplyRequiredValidation() && isEmpty(commandValue) ? errors.push({ field: commandFieldName, error: 'Command field is required' }) : \"no errors\";\n if (isNotEmpty(commandValue)) {\n !isEnum(commandValue, RelationFieldsCommand)? errors.push({ field: this.options.inverseFieldName, error: 'Command Field has invalid value' }) : \"no errors\";\n } \n \n var fieldValue = null\n if (commandValue === RelationFieldsCommand.clear) {\n return errors;\n } else if (linkCommands.includes(commandValue)) {\n fieldValue = dto[this.idFieldName];\n } \n else {\n fieldValue = dto[this.valueFieldName];\n }\n\n this.isApplyRequiredValidation() && isEmpty(fieldValue) ? errors.push({ field: this.options.inverseFieldName, error: `Field: ${this.options.inverseFieldName} is required` }) : \"no errors\";\n if (isNotEmpty(fieldValue)) {\n errors.push(...this.applyFormatValidations(fieldValue, commandValue, commandFieldName));\n }\n return errors;\n }\n\n private applyFormatValidations(fieldValue: any[], commandValue: RelationFieldsCommand, commandFieldName: string): ValidationError[] {\n const errors: ValidationError[] = [];\n if (linkCommands.includes(commandValue)) {\n for (const id of fieldValue) {\n if (!isInt(id)) {\n errors.push({ field: this.options.inverseFieldName, error: `Invalid ids in ${commandFieldName}` });\n }\n }\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n // const relatedFieldData: any[] = dto[this.fieldName()];\n const currentEntityTarget = this.getEntityTarget(classify(this.options.modelSingularName));\n const currentEntityRepository = this.options.entityManager.getRepository(currentEntityTarget);\n\n const relatedEntityTarget = this.getEntityTarget(classify(this.options.relationCoModelSingularName));\n const relatedEntityRepository = this.options.entityManager.getRepository(relatedEntityTarget)\n\n dto[this.valueFieldName] = await this.transformByCommand(dto, relatedEntityRepository, currentEntityRepository);\n return dto;\n }\n\n private async transformByCommand(dto: any, relatedEntityRepository: any, currentEntityRepository: any): Promise<any[]> {\n // TODO : Need to add support for the multiple commands\n const command = dto[this.commandFieldName];\n const values = dto[this.valueFieldName];\n const ids = dto[this.idFieldName];\n \n switch (command) {\n case RelationFieldsCommand.create:\n return await this.transformForCommandCreate(values, relatedEntityRepository);\n case RelationFieldsCommand.update:\n return await this.transformForCommandUpdate(values, relatedEntityRepository, dto, currentEntityRepository);\n case RelationFieldsCommand.delete:\n return await this.transformForCommandDelete(values, relatedEntityRepository);\n case RelationFieldsCommand.clear:\n return this.transformForCommandClear();\n case RelationFieldsCommand.set:\n return await this.transformForCommandSet(ids, relatedEntityRepository, dto, currentEntityRepository); \n case RelationFieldsCommand.link:\n return await this.tranformForCommandLink(ids, relatedEntityRepository, dto, currentEntityRepository);\n case RelationFieldsCommand.unlink:\n return await this.transformForCommandUnLink(ids, relatedEntityRepository, dto, currentEntityRepository);\n default:\n return null; // This is equivalent to no transformation\n }\n }\n\n private transformForCommandClear() {\n return []\n }\n\n private async transformForCommandSet(ids: any[], relatedEntityRepository: any, dto: any, currentEntityRepository: any): Promise<any[]> {\n // Load the entities with the ids passed\n const loadedEntities: any[] = await relatedEntityRepository.find({\n where : {id: In(ids) } \n })\n if (loadedEntities.length !== ids.length) {\n throw new Error('Invalid entity ids provided for linking');\n }\n\n return loadedEntities;\n }\n\n private async tranformForCommandLink(ids: any, relatedEntityRepository: any, dto: any, currentEntityRepository: any) {\n const tranformedRelatedFields = [];\n // Load the entities with the ids passed\n const loadedEntities: any[] = await relatedEntityRepository.find({\n where : {id: In(ids) } \n })\n if (loadedEntities.length !== ids.length) {\n throw new Error('Invalid entity ids provided for linking');\n }\n tranformedRelatedFields.push(...loadedEntities);\n\n return tranformedRelatedFields;\n }\n\n private async transformForCommandUnLink(ids: any, relatedEntityRepository: any, dto: any, currentEntityRepository: any) {\n if (dto.id == null) {\n throw new Error('Entity id is required for unlinking');\n } \n\n const tranformedRelatedFields = [];\n const entityInstance = await currentEntityRepository.findOne({\n where: {id: dto.id},\n relations: [this.valueFieldName]\n });\n const filteredEntities = entityInstance[this.valueFieldName].filter((entity) => !ids.includes(entity.id));\n tranformedRelatedFields.push(...filteredEntities);\n\n return tranformedRelatedFields;\n }\n\n private async transformForCommandCreate(values: any[], relatedEntityRepository: any): Promise<any[]> {\n const transformedRelatedFields = [];\n for (const entity of values) {\n const transformed = relatedEntityRepository.create(entity);\n transformedRelatedFields.push(transformed);\n }\n return transformedRelatedFields;\n }\n\n private async transformForCommandUpdate(values: any[], relatedEntityRepository: any, dto: any, currentEntityRepository: any): Promise<any[]> {\n const transformedRelatedFields = [];\n for (const entity of values) {\n if (entity.id) {\n const transformed = await relatedEntityRepository.preload(entity);\n transformedRelatedFields.push(transformed);\n }\n else {\n const transformed = relatedEntityRepository.create(entity);\n transformedRelatedFields.push(transformed);\n }\n }\n\n return transformedRelatedFields;\n }\n\n private async transformForCommandDelete(values: any[], relatedEntityRepository: any): Promise<any[]> {\n // Map and get the ids from the values\n const ids = values.map((value) => value.id);\n\n // Delete the ids linked to the associated entity\n await relatedEntityRepository.delete(ids);\n return null\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // TODO: We have moved this to SolidRegistry service, refactor to use that service.\n // Returns the entity target class from the entity name\n private getEntityTarget(entityName: string): any { //TODO Can be refactored to use this function from crud helper service\n const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n const entityMetadata = entityMetadatas.find(em => em.name === entityName);\n return entityMetadata.target;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"OneToManyRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { isEmpty, isEnum, isInt, isNotEmpty } from \"class-validator\";\nimport { RelationFieldsCommand } from \"src/dtos/create-field-metadata.dto\";\nimport { FieldMetadata } from \"src/entities/field-metadata.entity\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { EntityManager, In } from \"typeorm\";\n\nexport interface OneToManyRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n inverseRelationCoModelFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n inverseFieldName: string | undefined | null;\n entityManager: EntityManager | undefined | null;\n}\n\nconst linkCommands = [RelationFieldsCommand.link, RelationFieldsCommand.unlink, RelationFieldsCommand.set];\n\n// This implementation is meant to be used for many-to-one relation field\nexport class OneToManyRelationFieldCrudManager implements FieldCrudManager {\n\n private readonly valueFieldName: string;\n private readonly idFieldName: string;\n private readonly commandFieldName: string;\n\n constructor(private readonly options: OneToManyRelationFieldOptions) {\n this.valueFieldName = this.options.inverseRelationCoModelFieldName ?? `${this.options.relationCoModelSingularName}s`;\n this.idFieldName = `${this.options.inverseRelationCoModelFieldName ?? this.options.relationCoModelSingularName}Ids`;\n this.commandFieldName = `${this.options.inverseRelationCoModelFieldName ?? this.options.relationCoModelSingularName}Command`;\n }\n\n validate(dto: any) {\n return this.applyValidations(dto);\n }\n\n private applyValidations(dto: any): ValidationError[] { \n const errors: ValidationError[] = [];\n\n const commandFieldName = this.commandFieldName;\n const commandValue = dto[commandFieldName];\n this.isApplyRequiredValidation() && isEmpty(commandValue) ? errors.push({ field: commandFieldName, error: 'Command field is required' }) : \"no errors\";\n if (isNotEmpty(commandValue)) {\n !isEnum(commandValue, RelationFieldsCommand)? errors.push({ field: this.options.inverseFieldName, error: 'Command Field has invalid value' }) : \"no errors\";\n } \n \n var fieldValue = null\n if (commandValue === RelationFieldsCommand.clear) {\n return errors;\n } else if (linkCommands.includes(commandValue)) {\n fieldValue = dto[this.idFieldName];\n } \n else {\n fieldValue = dto[this.valueFieldName];\n }\n\n this.isApplyRequiredValidation() && isEmpty(fieldValue) ? errors.push({ field: this.options.inverseFieldName, error: `Field: ${this.options.inverseFieldName} is required` }) : \"no errors\";\n if (isNotEmpty(fieldValue)) {\n errors.push(...this.applyFormatValidations(fieldValue, commandValue, commandFieldName));\n }\n return errors;\n }\n\n private applyFormatValidations(fieldValue: any[], commandValue: RelationFieldsCommand, commandFieldName: string): ValidationError[] {\n const errors: ValidationError[] = [];\n if (linkCommands.includes(commandValue)) {\n for (const id of fieldValue) {\n if (!isInt(id)) {\n errors.push({ field: this.options.inverseFieldName, error: `Invalid ids in ${commandFieldName}` });\n }\n }\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n // const relatedFieldData: any[] = dto[this.fieldName()];\n const currentEntityName = classify(this.options.modelSingularName);\n const currentEntityRepository = this.options.entityManager.getRepository(currentEntityName);\n\n const relatedEntityName = classify(this.options.relationCoModelSingularName);\n const relatedEntityRepository = this.options.entityManager.getRepository(relatedEntityName);\n\n dto[this.valueFieldName] = await this.transformByCommand(dto, relatedEntityRepository, currentEntityRepository);\n return dto;\n }\n\n private async transformByCommand(dto: any, relatedEntityRepository: any, currentEntityRepository: any): Promise<any[]> {\n // TODO : Need to add support for the multiple commands\n const command = dto[this.commandFieldName];\n const values = dto[this.valueFieldName];\n const ids = dto[this.idFieldName];\n \n switch (command) {\n case RelationFieldsCommand.create:\n return await this.transformForCommandCreate(values, relatedEntityRepository);\n case RelationFieldsCommand.update:\n return await this.transformForCommandUpdate(values, relatedEntityRepository, dto, currentEntityRepository);\n case RelationFieldsCommand.delete:\n return await this.transformForCommandDelete(values, relatedEntityRepository);\n case RelationFieldsCommand.clear:\n return this.transformForCommandClear();\n case RelationFieldsCommand.set:\n return await this.transformForCommandSet(ids, relatedEntityRepository, dto, currentEntityRepository); \n case RelationFieldsCommand.link:\n return await this.tranformForCommandLink(ids, relatedEntityRepository, dto, currentEntityRepository);\n case RelationFieldsCommand.unlink:\n return await this.transformForCommandUnLink(ids, relatedEntityRepository, dto, currentEntityRepository);\n default:\n return null; // This is equivalent to no transformation\n }\n }\n\n private transformForCommandClear() {\n return []\n }\n\n private async transformForCommandSet(ids: any[], relatedEntityRepository: any, dto: any, currentEntityRepository: any): Promise<any[]> {\n // Load the entities with the ids passed\n const loadedEntities: any[] = await relatedEntityRepository.find({\n where : {id: In(ids) } \n })\n if (loadedEntities.length !== ids.length) {\n throw new Error('Invalid entity ids provided for linking');\n }\n\n return loadedEntities;\n }\n\n private async tranformForCommandLink(ids: any, relatedEntityRepository: any, dto: any, currentEntityRepository: any) {\n const tranformedRelatedFields = [];\n // Load the entities with the ids passed\n const loadedEntities: any[] = await relatedEntityRepository.find({\n where : {id: In(ids) } \n })\n if (loadedEntities.length !== ids.length) {\n throw new Error('Invalid entity ids provided for linking');\n }\n tranformedRelatedFields.push(...loadedEntities);\n\n return tranformedRelatedFields;\n }\n\n private async transformForCommandUnLink(ids: any, relatedEntityRepository: any, dto: any, currentEntityRepository: any) {\n if (dto.id == null) {\n throw new Error('Entity id is required for unlinking');\n } \n\n const tranformedRelatedFields = [];\n const entityInstance = await currentEntityRepository.findOne({\n where: {id: dto.id},\n relations: [this.valueFieldName]\n });\n const filteredEntities = entityInstance[this.valueFieldName].filter((entity) => !ids.includes(entity.id));\n tranformedRelatedFields.push(...filteredEntities);\n\n return tranformedRelatedFields;\n }\n\n private async transformForCommandCreate(values: any[], relatedEntityRepository: any): Promise<any[]> {\n const transformedRelatedFields = [];\n for (const entity of values) {\n const transformed = relatedEntityRepository.create(entity);\n transformedRelatedFields.push(transformed);\n }\n return transformedRelatedFields;\n }\n\n private async transformForCommandUpdate(values: any[], relatedEntityRepository: any, dto: any, currentEntityRepository: any): Promise<any[]> {\n const transformedRelatedFields = [];\n for (const entity of values) {\n if (entity.id) {\n const transformed = await relatedEntityRepository.preload(entity);\n transformedRelatedFields.push(transformed);\n }\n else {\n const transformed = relatedEntityRepository.create(entity);\n transformedRelatedFields.push(transformed);\n }\n }\n\n return transformedRelatedFields;\n }\n\n private async transformForCommandDelete(values: any[], relatedEntityRepository: any): Promise<any[]> {\n // Map and get the ids from the values\n const ids = values.map((value) => value.id);\n\n // Delete the ids linked to the associated entity\n await relatedEntityRepository.delete(ids);\n return null\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // TODO: We have moved this to SolidRegistry service, refactor to use that service.\n // Returns the entity target class from the entity name\n // private getEntityTarget(entityName: string): any { //TODO Can be refactored to use this function from crud helper service\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const entityMetadata = entityMetadatas.find(em => em.name === entityName);\n // return entityMetadata.target;\n // }\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-metadata-helper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/model-metadata-helper.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-metadata-helper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/model-metadata-helper.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBACa,0BAA0B;IAI/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAIzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAPtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBAGjD,QAAQ,EAAE,aAAa,EAIvB,iBAAiB,EAAE,uBAAuB;IAI/D,uBAAuB,CAAC,aAAa,GAAE,OAAa,EAAE,mBAAmB,GAAE,OAAa,GAAG,GAAG,EAAE;IAmBhG,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,8BAA8B;IAoEtC,OAAO,CAAC,4CAA4C;IA2B9C,kBAAkB,CAAC,SAAS,EAAE,GAAG;CAwB1C"}
|
|
@@ -8,14 +8,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
var ModelMetadataHelperService_1;
|
|
12
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
16
|
exports.ModelMetadataHelperService = void 0;
|
|
14
17
|
const common_1 = require("@nestjs/common");
|
|
15
|
-
const model_metadata_repository_1 = require("../repository/model-metadata.repository");
|
|
16
|
-
const solid_registry_1 = require("./solid-registry");
|
|
17
18
|
const lodash_1 = require("lodash");
|
|
18
19
|
const legacy_common_entity_1 = require("../entities/legacy-common.entity");
|
|
20
|
+
const model_metadata_repository_1 = require("../repository/model-metadata.repository");
|
|
21
|
+
const solid_registry_1 = require("./solid-registry");
|
|
19
22
|
let ModelMetadataHelperService = ModelMetadataHelperService_1 = class ModelMetadataHelperService {
|
|
20
23
|
constructor(registry, modelMetadataRepo) {
|
|
21
24
|
this.registry = registry;
|
|
@@ -154,6 +157,7 @@ let ModelMetadataHelperService = ModelMetadataHelperService_1 = class ModelMetad
|
|
|
154
157
|
exports.ModelMetadataHelperService = ModelMetadataHelperService;
|
|
155
158
|
exports.ModelMetadataHelperService = ModelMetadataHelperService = ModelMetadataHelperService_1 = __decorate([
|
|
156
159
|
(0, common_1.Injectable)(),
|
|
160
|
+
__param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => model_metadata_repository_1.ModelMetadataRepository))),
|
|
157
161
|
__metadata("design:paramtypes", [solid_registry_1.SolidRegistry,
|
|
158
162
|
model_metadata_repository_1.ModelMetadataRepository])
|
|
159
163
|
], ModelMetadataHelperService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/model-metadata-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["// Return the system fields metadata for a model\n\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport { ModelMetadataRepository } from \"src/repository/model-metadata.repository\";\nimport { SolidRegistry } from \"./solid-registry\";\nimport {_ } from \"lodash\";\nimport { LEGACY_TABLE_FIELDS_PREFIX } from \"src/entities/legacy-common.entity\";\n\n@Injectable()\nexport class ModelMetadataHelperService {\n private readonly logger = new Logger(ModelMetadataHelperService.name);\n\n constructor(private readonly registry: SolidRegistry,\n // @InjectRepository(ModelMetadata)\n // private readonly modelMetadataRepo: Repository<ModelMetadata>,\n private readonly modelMetadataRepo: ModelMetadataRepository,\n ) {\n }\n\n getSystemFieldsMetadata(isLegacyTable: boolean=false, isLegacyTableWithId: boolean=false): any[] {\n let systemFieldsMetadata: any[];\n if (isLegacyTableWithId) {\n systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(true);\n }\n else if (isLegacyTable) {\n systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(false);\n }\n else {\n systemFieldsMetadata = this.getSystemFieldsMetadataMapping();\n }\n\n this.checkWithRegistry(systemFieldsMetadata);\n\n return systemFieldsMetadata;\n }\n\n // TODO: Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly\n // Ideally this should be reflection based code\n private checkWithRegistry(systemFieldsMetadata: ({ name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; isSystem: boolean; ormType?: undefined; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType: string; relationCoModelSingularName: string; relationCreateInverse: boolean; relationCascade: string; relationModelModuleName: string; })[]) {\n const commonEntityKeys = this.registry.getCommonEntityKeys();\n const systemFieldNames = systemFieldsMetadata.map(field => field.name);\n const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));\n if (missingKeys.length > 0) {\n this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);\n }\n }\n\n private getSystemFieldsMetadataMapping() {\n return [\n {\n name: \"id\",\n displayName: \"Id\",\n type: \"int\",\n isSystem: true,\n },\n {\n name: \"createdAt\",\n displayName: \"Created At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"updatedAt\",\n displayName: \"Updated At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"deletedAt\",\n displayName: \"Deleted At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"deletedTracker\",\n displayName: \"Deleted Tracker\",\n type: \"shortText\",\n isSystem: true,\n },\n {\n name: \"publishedAt\",\n displayName: \"Published At\",\n type: \"datetime\",\n isSystem: true,\n enableAuditTracking:true\n },\n {\n name: \"localeName\",\n displayName: \"Locale\",\n type: \"shortText\",\n isSystem: true,\n },\n {\n name: \"defaultEntityLocaleId\",\n displayName: \"Default Entity Locale Id\",\n type: \"int\",\n isSystem: true,\n },\n {\n name: \"createdBy\",\n displayName: \"Created By\",\n type: \"int\",\n isSystem: true,\n columnName: \"created_by_id\",\n },\n {\n name: \"updatedBy\",\n displayName: \"Updated By\",\n type: \"int\",\n isSystem: true,\n columnName: \"updated_by_id\",\n }\n ];\n }\n\n private getSystemFieldsMetadataMappingForLegacyTable(withId: boolean=true) {\n const systemFieldsMetadata = this.getSystemFieldsMetadataMapping();\n if (!withId) {\n // Remove the id field metadata\n const index = systemFieldsMetadata.findIndex(field => field.name === 'id');\n if (index !== -1) {\n systemFieldsMetadata.splice(index, 1);\n }\n }\n\n // For legacy table, system fields, remove the ormType atribute from the metadata\n // systemFieldsMetadata.forEach(field => {\n // delete field.ormType;\n // });\n\n // Except for createdBy and updatedBy fields, for which we need to keep the columnName as created_by_id and updated_by_id respectively,\n // we need to add a columnName attribute with legacy prefix concatenated with the kebab cased field name of the system field\n systemFieldsMetadata.forEach(field => {\n if (field.name === 'createdBy' || field.name === 'updatedBy') {\n field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}_id`;\n } else {\n field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}`;\n }\n });\n return systemFieldsMetadata;\n }\n\n async loadFieldHierarchy(modelName: any) {\n const model = await this.modelMetadataRepo.findOne({\n where: {\n singularName: modelName,\n },\n relations: {\n fields: true,\n parentModel: {\n fields: true,\n }\n }\n });\n const fields: any[] = [];\n if (model) {\n // Add the fields of the current model\n fields.push(...model.fields);\n\n // Add the fields of the parent model\n if (model.parentModel) {\n fields.push(...model.parentModel.fields);\n }\n }\n return fields;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"model-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/model-metadata-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["// Return the system fields metadata for a model\n\nimport { forwardRef, Inject, Injectable, Logger } from \"@nestjs/common\";\nimport { _ } from \"lodash\";\nimport { LEGACY_TABLE_FIELDS_PREFIX } from \"src/entities/legacy-common.entity\";\nimport { ModelMetadataRepository } from \"src/repository/model-metadata.repository\";\nimport { SolidRegistry } from \"./solid-registry\";\n\n@Injectable()\nexport class ModelMetadataHelperService {\n private readonly logger = new Logger(ModelMetadataHelperService.name);\n\n constructor(\n private readonly registry: SolidRegistry,\n // @InjectRepository(ModelMetadata)\n // private readonly modelMetadataRepo: Repository<ModelMetadata>,\n @Inject(forwardRef(() => ModelMetadataRepository))\n private readonly modelMetadataRepo: ModelMetadataRepository,\n ) {\n }\n\n getSystemFieldsMetadata(isLegacyTable: boolean=false, isLegacyTableWithId: boolean=false): any[] {\n let systemFieldsMetadata: any[];\n if (isLegacyTableWithId) {\n systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(true);\n }\n else if (isLegacyTable) {\n systemFieldsMetadata = this.getSystemFieldsMetadataMappingForLegacyTable(false);\n }\n else {\n systemFieldsMetadata = this.getSystemFieldsMetadataMapping();\n }\n\n this.checkWithRegistry(systemFieldsMetadata);\n\n return systemFieldsMetadata;\n }\n\n // TODO: Do an additional check and add a warning if the common entity keys and system field metadata keys don't match exactly\n // Ideally this should be reflection based code\n private checkWithRegistry(systemFieldsMetadata: ({ name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; isSystem: boolean; ormType?: undefined; relationType?: undefined; relationCoModelSingularName?: undefined; relationCreateInverse?: undefined; relationCascade?: undefined; relationModelModuleName?: undefined; } | { name: string; displayName: string; type: string; ormType: string; isSystem: boolean; relationType: string; relationCoModelSingularName: string; relationCreateInverse: boolean; relationCascade: string; relationModelModuleName: string; })[]) {\n const commonEntityKeys = this.registry.getCommonEntityKeys();\n const systemFieldNames = systemFieldsMetadata.map(field => field.name);\n const missingKeys = commonEntityKeys.filter(key => !systemFieldNames.includes(key));\n if (missingKeys.length > 0) {\n this.logger.warn(`Missing system fields metadata for common entity keys: ${missingKeys.join(', ')}`);\n }\n }\n\n private getSystemFieldsMetadataMapping() {\n return [\n {\n name: \"id\",\n displayName: \"Id\",\n type: \"int\",\n isSystem: true,\n },\n {\n name: \"createdAt\",\n displayName: \"Created At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"updatedAt\",\n displayName: \"Updated At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"deletedAt\",\n displayName: \"Deleted At\",\n type: \"datetime\",\n isSystem: true,\n },\n {\n name: \"deletedTracker\",\n displayName: \"Deleted Tracker\",\n type: \"shortText\",\n isSystem: true,\n },\n {\n name: \"publishedAt\",\n displayName: \"Published At\",\n type: \"datetime\",\n isSystem: true,\n enableAuditTracking:true\n },\n {\n name: \"localeName\",\n displayName: \"Locale\",\n type: \"shortText\",\n isSystem: true,\n },\n {\n name: \"defaultEntityLocaleId\",\n displayName: \"Default Entity Locale Id\",\n type: \"int\",\n isSystem: true,\n },\n {\n name: \"createdBy\",\n displayName: \"Created By\",\n type: \"int\",\n isSystem: true,\n columnName: \"created_by_id\",\n },\n {\n name: \"updatedBy\",\n displayName: \"Updated By\",\n type: \"int\",\n isSystem: true,\n columnName: \"updated_by_id\",\n }\n ];\n }\n\n private getSystemFieldsMetadataMappingForLegacyTable(withId: boolean=true) {\n const systemFieldsMetadata = this.getSystemFieldsMetadataMapping();\n if (!withId) {\n // Remove the id field metadata\n const index = systemFieldsMetadata.findIndex(field => field.name === 'id');\n if (index !== -1) {\n systemFieldsMetadata.splice(index, 1);\n }\n }\n\n // For legacy table, system fields, remove the ormType atribute from the metadata\n // systemFieldsMetadata.forEach(field => {\n // delete field.ormType;\n // });\n\n // Except for createdBy and updatedBy fields, for which we need to keep the columnName as created_by_id and updated_by_id respectively,\n // we need to add a columnName attribute with legacy prefix concatenated with the kebab cased field name of the system field\n systemFieldsMetadata.forEach(field => {\n if (field.name === 'createdBy' || field.name === 'updatedBy') {\n field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}_id`;\n } else {\n field['columnName'] = `${LEGACY_TABLE_FIELDS_PREFIX}_${_.snakeCase(field.name)}`;\n }\n });\n return systemFieldsMetadata;\n }\n\n async loadFieldHierarchy(modelName: any) {\n const model = await this.modelMetadataRepo.findOne({\n where: {\n singularName: modelName,\n },\n relations: {\n fields: true,\n parentModel: {\n fields: true,\n }\n }\n });\n const fields: any[] = [];\n if (model) {\n // Add the fields of the current model\n fields.push(...model.fields);\n\n // Add the fields of the parent model\n if (model.parentModel) {\n fields.push(...model.parentModel.fields);\n }\n }\n return fields;\n }\n}"]}
|
|
@@ -6,5 +6,6 @@ export declare class ModuleMetadataHelperService {
|
|
|
6
6
|
getModuleMetadataConfiguration(configFilePath: string): Promise<any>;
|
|
7
7
|
getModulePath(moduleName: string): Promise<string>;
|
|
8
8
|
getModuleMetadataFilePath(moduleName: string): Promise<string>;
|
|
9
|
+
getModuleMetadataFolderPath(moduleName: string): Promise<string>;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=module-metadata-helper.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-metadata-helper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBACa,2BAA2B;IAExB,OAAO,CAAC,QAAQ,CAAC,WAAW;IADxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;gBAC1C,WAAW,EAAE,WAAW;IAO/C,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAepE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"module-metadata-helper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBACa,2BAA2B;IAExB,OAAO,CAAC,QAAQ,CAAC,WAAW;IADxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;gBAC1C,WAAW,EAAE,WAAW;IAO/C,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAepE,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9D,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiBzE"}
|
|
@@ -91,6 +91,15 @@ let ModuleMetadataHelperService = ModuleMetadataHelperService_1 = class ModuleMe
|
|
|
91
91
|
}
|
|
92
92
|
return filePath;
|
|
93
93
|
}
|
|
94
|
+
async getModuleMetadataFolderPath(moduleName) {
|
|
95
|
+
if (!moduleName) {
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
const dashModuleName = (0, strings_1.dasherize)(moduleName);
|
|
99
|
+
const folderPath = path.resolve(process.cwd(), 'module-metadata', dashModuleName);
|
|
100
|
+
const exists = await this.fileService.pathExists(folderPath);
|
|
101
|
+
return exists ? folderPath : '';
|
|
102
|
+
}
|
|
94
103
|
};
|
|
95
104
|
exports.ModuleMetadataHelperService = ModuleMetadataHelperService;
|
|
96
105
|
exports.ModuleMetadataHelperService = ModuleMetadataHelperService = ModuleMetadataHelperService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAmE;AACnE,2CAAoD;AACpD,gDAAkC;AAClC,2CAA6B;AAC7B,4CAAuD;AACvD,2DAAwD;AAGjD,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAEpC,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QADpC,WAAM,GAAG,IAAI,eAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAO1D,KAAK,CAAC,8BAA8B,CAAC,cAAsB;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,cAAc,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAkB;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,UAAkB;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,cAAc,GAAG,IAAA,mBAAS,EAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,gBAAgB,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAEd,IAAI,cAAc,KAAK,kCAAsB,EAAE,CAAC;gBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,cAAc,gBAAgB,CAAC,CAAC;gBACnH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;gBACpD,OAAO,YAAY,CAAC;YACxB,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"module-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { dasherize } from \"@angular-devkit/core/src/utils/strings\";\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\nimport { SOLID_CORE_MODULE_NAME } from \"src/constants\";\nimport { FileService } from \"src/services/file.service\";\n\n@Injectable()\nexport class ModuleMetadataHelperService {\n private readonly logger = new Logger(ModuleMetadataHelperService.name);\n constructor(private readonly fileService: FileService) { }\n // async getModuleMetadataConfig(moduleName: string): Promise<ModuleMetadata> {\n // const filePath = this.getModuleMetadataFilePath(moduleName);\n // const metadata = await this.getModuleMetadata(filePath);\n // return metadata;\n // }\n\n async getModuleMetadataConfiguration(configFilePath: string): Promise<any> {\n if (!configFilePath) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configFilePath, 'utf8');\n return JSON.parse(fileContent);\n }\n catch (error) {\n this.logger.error(`module metadata configuration non existent at: ${configFilePath}`);\n }\n\n return null;\n }\n\n async getModulePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n return path.resolve(process.cwd(), 'src', moduleName);\n }\n\n async getModuleMetadataFilePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n const dashModuleName = dasherize(moduleName);\n const folderPath = path.resolve(process.cwd(), 'module-metadata', dashModuleName);\n const filePath = path.join(folderPath, `${dashModuleName}-metadata.json`);\n // Check if filePath exists\n const fileExists = await this.fileService.fileExists(filePath);\n // this.logger.debug(`File exists: ${fileExists} at ${filePath}`);\n if (!fileExists) {\n // If the module is solid-core, try the fallback path, in case the current root directory is the solid core project\n if (dashModuleName === SOLID_CORE_MODULE_NAME) {\n const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);\n this.logger.debug(`Fallback path: ${fallbackPath}`);\n return fallbackPath;\n }\n }\n return filePath;\n }\n async getModuleMetadataFolderPath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n\n const dashModuleName = dasherize(moduleName);\n\n const folderPath = path.resolve(\n process.cwd(),\n 'module-metadata',\n dashModuleName,\n );\n\n const exists = await this.fileService.pathExists(folderPath);\n return exists ? folderPath : '';\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB,QAAO,MAAM,EA6B9C,CAAA;AAED,eAAO,MAAM,oCAAoC,QAAO,MAAM,EA+B7D,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAO,MAAM,EAG3C,CAAA"}
|
|
@@ -33,9 +33,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getCoreModuleNames = exports.getDynamicModuleNames = void 0;
|
|
36
|
+
exports.getCoreModuleNames = exports.getDynamicModuleNamesBasedOnMetadata = exports.getDynamicModuleNames = void 0;
|
|
37
|
+
const common_1 = require("@nestjs/common");
|
|
37
38
|
const fs = __importStar(require("fs"));
|
|
38
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const logger = new common_1.Logger('module.helper');
|
|
39
41
|
const getDynamicModuleNames = () => {
|
|
40
42
|
const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];
|
|
41
43
|
const srcPath = path.join(process.cwd(), 'src');
|
|
@@ -47,13 +49,37 @@ const getDynamicModuleNames = () => {
|
|
|
47
49
|
const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);
|
|
48
50
|
if (!isValidDirectory)
|
|
49
51
|
return false;
|
|
50
|
-
|
|
52
|
+
const fullPath = path.join(srcPath, dirent.name);
|
|
53
|
+
const files = fs.readdirSync(fullPath);
|
|
54
|
+
return files.length > 0;
|
|
51
55
|
})
|
|
52
56
|
.map(dirent => dirent.name);
|
|
53
|
-
console.log(`Enabled dynamic modules:`, enabledModules);
|
|
54
57
|
return enabledModules;
|
|
55
58
|
};
|
|
56
59
|
exports.getDynamicModuleNames = getDynamicModuleNames;
|
|
60
|
+
const getDynamicModuleNamesBasedOnMetadata = () => {
|
|
61
|
+
const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];
|
|
62
|
+
const moduleMetadataPath = path.join(process.cwd(), 'module-metadata');
|
|
63
|
+
const coreModuleNames = (0, exports.getCoreModuleNames)();
|
|
64
|
+
const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];
|
|
65
|
+
if (!fs.existsSync(moduleMetadataPath)) {
|
|
66
|
+
logger.warn(`Module metadata path does not exist: ${moduleMetadataPath}`);
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
const moduleMetadataDirectories = fs.readdirSync(moduleMetadataPath, { withFileTypes: true });
|
|
70
|
+
const enabledModules = moduleMetadataDirectories
|
|
71
|
+
.filter(dirent => {
|
|
72
|
+
const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);
|
|
73
|
+
if (!isValidDirectory)
|
|
74
|
+
return false;
|
|
75
|
+
const fullPath = path.join(moduleMetadataPath, dirent.name, `${dirent.name}-metadata.json`);
|
|
76
|
+
const stats = fs.statSync(fullPath, { throwIfNoEntry: false });
|
|
77
|
+
return !!stats && stats.isFile();
|
|
78
|
+
})
|
|
79
|
+
.map(dirent => dirent.name);
|
|
80
|
+
return enabledModules;
|
|
81
|
+
};
|
|
82
|
+
exports.getDynamicModuleNamesBasedOnMetadata = getDynamicModuleNamesBasedOnMetadata;
|
|
57
83
|
const getCoreModuleNames = () => {
|
|
58
84
|
return ['solid-core'];
|
|
59
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;
|
|
1
|
+
{"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport * as fs from 'fs'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\n\nconst logger = new Logger('module.helper');\n\nexport const getDynamicModuleNames = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Adjust if 'src' is in a different location\n const srcPath = path.join(process.cwd(), 'src');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n const directories = fs.readdirSync(srcPath, { withFileTypes: true });\n // const enabledModules = directories\n // .filter(d => d.isDirectory() && !allExcludedModules.includes(d.name))\n // .map(d => d.name);\n\n const enabledModules = directories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n // return true\n const fullPath = path.join(srcPath, dirent.name);\n const files = fs.readdirSync(fullPath);\n // skip if empty directory\n return files.length > 0;\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules:`, enabledModules);\n return enabledModules;\n}\n\nexport const getDynamicModuleNamesBasedOnMetadata = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Find a path that is ../${srcPath}/module-metadata save it in a variable.\n // const srcPath = path.join(process.cwd(), 'src');\n const moduleMetadataPath = path.join(process.cwd(), 'module-metadata');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n // if module-metadata path does not exist, return empty array\n if (!fs.existsSync(moduleMetadataPath)) {\n logger.warn(`Module metadata path does not exist: ${moduleMetadataPath}`);\n return [];\n }\n\n const moduleMetadataDirectories = fs.readdirSync(moduleMetadataPath, { withFileTypes: true });\n const enabledModules = moduleMetadataDirectories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n const fullPath = path.join(moduleMetadataPath, dirent.name, `${dirent.name}-metadata.json`);\n\n const stats = fs.statSync(fullPath, { throwIfNoEntry: false });\n return !!stats && stats.isFile();\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules basis src:`, enabledModules);\n return enabledModules;\n}\n\nexport const getCoreModuleNames = (): string[] => {\n // return ['iam', 'common', 'queues', 'app-builder'];\n return ['solid-core'];\n}"]}
|
|
@@ -5,6 +5,7 @@ import { Locale } from 'src/entities/locale.entity';
|
|
|
5
5
|
import { SecurityRule } from 'src/entities/security-rule.entity';
|
|
6
6
|
import { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';
|
|
7
7
|
import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from "../interfaces";
|
|
8
|
+
import { ObjectLiteral } from 'typeorm';
|
|
8
9
|
type ControllerMetadata = {
|
|
9
10
|
name: string;
|
|
10
11
|
methods: string[];
|
|
@@ -34,6 +35,15 @@ export declare enum RESERVED_SOLID_KEYWORDS {
|
|
|
34
35
|
user = "user",
|
|
35
36
|
locale = "locale"
|
|
36
37
|
}
|
|
38
|
+
export interface TypeOrmEventContext {
|
|
39
|
+
eventType?: string;
|
|
40
|
+
entity?: ObjectLiteral | undefined;
|
|
41
|
+
databaseEntity?: any;
|
|
42
|
+
entityId?: any;
|
|
43
|
+
metadataName?: string;
|
|
44
|
+
updatedColumns?: string[];
|
|
45
|
+
updatedRelations?: string[];
|
|
46
|
+
}
|
|
37
47
|
export interface ComputedFieldMetadata<TContext = any> {
|
|
38
48
|
moduleName: string;
|
|
39
49
|
modelName: string;
|
|
@@ -42,6 +52,7 @@ export interface ComputedFieldMetadata<TContext = any> {
|
|
|
42
52
|
computedFieldTriggerConfig: ComputedFieldTriggerConfig[];
|
|
43
53
|
computedFieldValueProviderName: string;
|
|
44
54
|
computedFieldValueProviderCtxt: TContext;
|
|
55
|
+
eventContext: TypeOrmEventContext;
|
|
45
56
|
}
|
|
46
57
|
export declare class SolidRegistry {
|
|
47
58
|
private seeders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-registry.d.ts","sourceRoot":"","sources":["../../src/helpers/solid-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,mCAAmC,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"solid-registry.d.ts","sourceRoot":"","sources":["../../src/helpers/solid-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-registry.js","sourceRoot":"","sources":["../../src/helpers/solid-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { ComputedFieldTriggerConfig, ComputedFieldValueType } from 'src/dtos/create-field-metadata.dto';\nimport { CommonEntity } from 'src/entities/common.entity';\nimport { Locale } from 'src/entities/locale.entity';\nimport { SecurityRule } from 'src/entities/security-rule.entity';\nimport { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';\nimport { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from \"../interfaces\";\nimport { DatasourceType } from 'src/dtos/create-model-metadata.dto';\n\ntype ControllerMetadata = {\n name: string;\n methods: string[];\n};\n\nexport enum RESERVED_SOLID_KEYWORDS {\n moduleMetadata = \"moduleMetadata\",\n modelMetadata = \"modelMetadata\",\n fieldMetadata = \"fieldMetadata\",\n dataSource = \"dataSource\",\n repository = \"repository\",\n entityManager = \"entityManager\",\n actionMetadata = \"actionMetadata\",\n emailAttachment = \"emailAttachment\",\n emailTemplate = \"emailTemplate\",\n listOfValues = \"listOfValues\",\n mediaStorageProvider = \"mediaStorageProvider\",\n media = \"media\",\n menuItemMetadata = \"menuItemMetadata\",\n mqMessageQueue = \"mqMessageQueue\",\n mqMessage = \"mqMessage\",\n permissionMetadata = \"permissionMetadata\",\n roleMetadata = \"roleMetadata\",\n securityRule = \"securityRule\",\n setting = \"setting\",\n smsTemplate = \"smsTemplate\",\n userMetadata = \"userMetadata\",\n user = \"user\",\n locale = \"locale\"\n}\n\nexport interface ComputedFieldMetadata<TContext = any> {\n moduleName: string; // Name of the module where the computed field is defined\n modelName: string; // Name of the model where the computed field is defined\n fieldName: string; // Name of the field that is computed\n computedFieldValueType: ComputedFieldValueType; // Type of the computed field value (e.g., string, number, etc.)\n computedFieldTriggerConfig: ComputedFieldTriggerConfig[]; // JSON stringified object containing the trigger configuration\n // Example: '{\"models\": [\"User\", \"Product\"], \"operations\": [\"create\", \"update\"]}'\n computedFieldValueProviderName: string; // Name of the provider that computes the field value\n // Example: '{\"contextKey\": \"contextValue\"}'\n computedFieldValueProviderCtxt: TContext; // Context for the computed field value\n}\n\n@Injectable()\nexport class SolidRegistry {\n private seeders: Set<InstanceWrapper> = new Set();\n private scheduledJobProviders: Set<InstanceWrapper> = new Set();\n private selectionProviders: Set<InstanceWrapper> = new Set();\n private computedFieldProviders: Set<InstanceWrapper> = new Set();\n private solidDatabaseModules: Set<InstanceWrapper> = new Set();\n private controllers: Set<ControllerMetadata> = new Set();\n private modules: Set<InstanceWrapper> = new Set();\n private securityRules: SecurityRule[] = [];\n private locales: Locale[] = [];\n private computedFieldMetadata: ComputedFieldMetadata[] = [];\n private dashboardVariableSelectionProviders: Set<InstanceWrapper> = new Set();\n private dashboardQuestionDataProviders: Set<InstanceWrapper> = new Set();\n private mailProviders: Set<InstanceWrapper> = new Set();\n private whatsappProviders: Set<InstanceWrapper> = new Set();\n private securityRuleConfigProviders: Set<InstanceWrapper> = new Set();\n private errorCodeProviders: Set<InstanceWrapper> = new Set();\n\n registerErrorCodeProvider(errorCodeProvider: InstanceWrapper): void {\n this.errorCodeProviders.add(errorCodeProvider);\n }\n\n registerWhatsappProvider(whatsappProvider: InstanceWrapper): void {\n this.whatsappProviders.add(whatsappProvider);\n }\n\n registerSecurityRuleConfigProvider(securityRuleConfigProvider: InstanceWrapper): void {\n this.securityRuleConfigProviders.add(securityRuleConfigProvider);\n }\n\n registerMailProvider(mailProvider: InstanceWrapper): void {\n this.mailProviders.add(mailProvider);\n }\n\n registerController(name: string, methodNames: string[]): void {\n this.controllers.add({ name: name, methods: methodNames });\n }\n\n registerControllers(controllers: Set<ControllerMetadata>): void {\n this.controllers = controllers;\n }\n\n registerSeeder(seeder: InstanceWrapper): void {\n this.seeders.add(seeder);\n }\n\n registerSelectionProvider(selectionProvider: InstanceWrapper): void {\n this.selectionProviders.add(selectionProvider);\n }\n\n registerDashboardVariableSelectionProvider(dashboardSelectionProvider: InstanceWrapper): void {\n this.dashboardVariableSelectionProviders.add(dashboardSelectionProvider);\n }\n\n registerDashboardQuestionDataProvider(dashboardQuestionDataProvider: InstanceWrapper): void {\n this.dashboardQuestionDataProviders.add(dashboardQuestionDataProvider);\n }\n\n registerComputedFieldProvider(computedFieldProvider: InstanceWrapper): void {\n this.computedFieldProviders.add(computedFieldProvider);\n }\n\n registerScheduledJobProvider(scheduledJobProvider: InstanceWrapper): void {\n this.scheduledJobProviders.add(scheduledJobProvider);\n }\n\n registerSolidDatabaseModule(solidDatabaseModule: InstanceWrapper): void {\n this.solidDatabaseModules.add(solidDatabaseModule);\n }\n\n registerModules(modules: InstanceWrapper[]): void {\n this.modules = new Set(modules);\n }\n\n getMailProviders(): Array<InstanceWrapper> {\n return Array.from(this.mailProviders);\n }\n\n getWhatsappProviders(): Array<InstanceWrapper> {\n return Array.from(this.whatsappProviders);\n }\n\n getSecurityRuleConfigProviders(): Array<InstanceWrapper> {\n return Array.from(this.securityRuleConfigProviders);\n }\n\n getSecurityRuleConfigProviderInstance(name: string): ISecurityRuleConfigProvider {\n const securityRuleConfigProviders = this.getSecurityRuleConfigProviders();\n\n for (let i = 0; i < securityRuleConfigProviders.length; i++) {\n const securityRuleConfigProvider = securityRuleConfigProviders[i];\n if (securityRuleConfigProvider.name === name) {\n return securityRuleConfigProvider.instance;\n }\n }\n }\n\n getSeeders(): Array<InstanceWrapper> {\n return Array.from(this.seeders);\n }\n\n getControllers(): ControllerMetadata[] {\n return Array.from(this.controllers);\n }\n\n getSelectionProviders(): Array<InstanceWrapper> {\n return Array.from(this.selectionProviders);\n }\n\n getSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): ISelectionProvider<T> {\n const selectionProviders = this.getSelectionProviders();\n\n for (let i = 0; i < selectionProviders.length; i++) {\n const selectionProvider = selectionProviders[i];\n if (selectionProvider.instance.name() === name) {\n return selectionProvider.instance;\n }\n }\n }\n\n getDashboardVariableSelectionProviders(): Array<InstanceWrapper> {\n return Array.from(this.dashboardVariableSelectionProviders);\n }\n\n getDashboardVariableSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): IDashboardVariableSelectionProvider<T> {\n const dashboardSelectionProviders = this.getDashboardVariableSelectionProviders();\n\n for (let i = 0; i < dashboardSelectionProviders.length; i++) {\n const dashboardSelectionProvider = dashboardSelectionProviders[i];\n if (dashboardSelectionProvider.instance.name() === name) {\n return dashboardSelectionProvider.instance;\n }\n }\n }\n\n getErrorCodeProviders(): Array<InstanceWrapper> {\n return Array.from(this.errorCodeProviders);\n }\n\n getErrorCodeProviderInstance(name: string): IErrorCodeProvider | undefined {\n const providers = this.getErrorCodeProviders();\n for (let i = 0; i < providers.length; i++) {\n const p = providers[i];\n if (p.instance?.name?.() === name) return p.instance as IErrorCodeProvider;\n }\n return undefined;\n }\n\n getDashboardQuestionDataProviders(): Array<InstanceWrapper> {\n return Array.from(this.dashboardQuestionDataProviders)\n }\n\n getDashboardQuestionDataProviderInstance<TContext, TData>(name: string): IDashboardQuestionDataProvider<TContext, TData> {\n const dashboardQuestionDataProviders = this.getDashboardQuestionDataProviders();\n\n for (let i = 0; i < dashboardQuestionDataProviders.length; i++) {\n const dasbhoardQuestionDataProvider = dashboardQuestionDataProviders[i];\n if (dasbhoardQuestionDataProvider.instance.name() === name) {\n return dasbhoardQuestionDataProvider.instance;\n }\n }\n\n }\n\n\n getComputedFieldProviders(): Array<InstanceWrapper> {\n return Array.from(this.computedFieldProviders);\n }\n\n getScheduledJobProviders(): Array<InstanceWrapper> {\n return Array.from(this.scheduledJobProviders);\n }\n\n getScheduledJobProviderInstance(name: string): IScheduledJob {\n const scheduledJobProviders = this.getScheduledJobProviders();\n\n for (let i = 0; i < scheduledJobProviders.length; i++) {\n const scheduledJobProvider = scheduledJobProviders[i];\n if (scheduledJobProvider.name === name) {\n return scheduledJobProvider.instance;\n }\n }\n }\n\n getComputedFieldProvider(name: string): InstanceWrapper {\n const provider = this.getComputedFieldProviders().filter((provider) => provider.name === name).pop();\n if (!provider) {\n throw new Error(`Computed Field Provider with name ${name} not found`);\n }\n return provider\n }\n\n getSolidDatabaseModules(): Array<InstanceWrapper> {\n return Array.from(this.solidDatabaseModules);\n }\n\n getDefaultSolidDatabaseModule(): ISolidDatabaseModule {\n const solidDatabaseModulesAsArray = Array.from(this.solidDatabaseModules);\n for (let i = 0; i < solidDatabaseModulesAsArray.length; i++) {\n const solidDatabaseModule = solidDatabaseModulesAsArray[i];\n const solidDatabaseModuleInstance: ISolidDatabaseModule = solidDatabaseModule.instance;\n if (solidDatabaseModuleInstance.name() === 'default') {\n return solidDatabaseModuleInstance;\n }\n }\n }\n\n getModules(): Array<InstanceWrapper> {\n return Array.from(this.modules);\n }\n\n getModule(name: string): InstanceWrapper {\n const module = this.getModules().filter((module) => module.name === name).pop();\n return module\n }\n\n registerSecurityRules(securityRules: SecurityRule[]) {\n this.securityRules = securityRules;\n }\n\n registerlocales(locales: Locale[]) {\n this.locales = locales;\n }\n\n registerComputedFieldMetadata(computedFieldMetadata: ComputedFieldMetadata[]) {\n this.computedFieldMetadata = computedFieldMetadata;\n }\n\n getComputedFieldMetadata(): ComputedFieldMetadata[] {\n return this.computedFieldMetadata;\n }\n\n //TODO:getlocales from locale model and return default locale where isDefault:true \n getDefaultLocale(): Locale | null {\n return this.locales.find(locale => locale.isDefault === true) || null;\n }\n\n getSecurityRules(modelSingularName: string, roleNames: string[] = []): SecurityRule[] {\n // If no role is provided, return all security rules for the model\n if (roleNames.length === 0) {\n return this.securityRules.filter((rule) => rule.modelMetadata.singularName === modelSingularName);\n }\n // If roles are provided, filter the security rules by model and roles\n return this.securityRules.filter((rule) => {\n return rule.modelMetadata.singularName === modelSingularName && roleNames.includes(rule.role.name);\n });\n }\n\n getCommonEntityKeys(): (keyof CommonEntity | 'createdBy' | 'updatedBy')[] {\n return ['id', 'createdAt', 'updatedAt', 'deletedAt', 'createdBy', 'updatedBy', 'deletedTracker', 'localeName', 'defaultEntityLocaleId', 'publishedAt'];\n // return Reflect.getMetadataKeys(CommonEntity.prototype) as (keyof CommonEntity)[];\n }\n\n}"]}
|
|
1
|
+
{"version":3,"file":"solid-registry.js","sourceRoot":"","sources":["../../src/helpers/solid-registry.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAkB5C,IAAY,uBAwBX;AAxBD,WAAY,uBAAuB;IACjC,4DAAiC,CAAA;IACjC,0DAA+B,CAAA;IAC/B,0DAA+B,CAAA;IAC/B,oDAAyB,CAAA;IACzB,oDAAyB,CAAA;IACzB,0DAA+B,CAAA;IAC/B,4DAAiC,CAAA;IACjC,8DAAmC,CAAA;IACnC,0DAA+B,CAAA;IAC/B,wDAA6B,CAAA;IAC7B,wEAA6C,CAAA;IAC7C,0CAAe,CAAA;IACf,gEAAqC,CAAA;IACrC,4DAAiC,CAAA;IACjC,kDAAuB,CAAA;IACvB,oEAAyC,CAAA;IACzC,wDAA6B,CAAA;IAC7B,wDAA6B,CAAA;IAC7B,8CAAmB,CAAA;IACnB,sDAA2B,CAAA;IAC3B,wDAA6B,CAAA;IAC7B,wCAAa,CAAA;IACb,4CAAiB,CAAA;AACnB,CAAC,EAxBW,uBAAuB,uCAAvB,uBAAuB,QAwBlC;AA0BM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;QACG,YAAO,GAAyB,IAAI,GAAG,EAAE,CAAC;QAC1C,0BAAqB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACxD,uBAAkB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACrD,2BAAsB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACzD,yBAAoB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACvD,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;QACjD,YAAO,GAAyB,IAAI,GAAG,EAAE,CAAC;QAC1C,kBAAa,GAAmB,EAAE,CAAC;QACnC,YAAO,GAAa,EAAE,CAAC;QACvB,0BAAqB,GAA4B,EAAE,CAAC;QACpD,wCAAmC,GAAyB,IAAI,GAAG,EAAE,CAAC;QACtE,mCAA8B,GAAyB,IAAI,GAAG,EAAE,CAAC;QACjE,kBAAa,GAAyB,IAAI,GAAG,EAAE,CAAC;QAChD,sBAAiB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACpD,gCAA2B,GAAyB,IAAI,GAAG,EAAE,CAAC;QAC9D,uBAAkB,GAAyB,IAAI,GAAG,EAAE,CAAC;IA6O/D,CAAC;IA3OC,yBAAyB,CAAC,iBAAkC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAED,wBAAwB,CAAC,gBAAiC;QACxD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC,CAAC,0BAA2C;QAC5E,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACnE,CAAC;IAED,oBAAoB,CAAC,YAA6B;QAChD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB,CAAC,IAAY,EAAE,WAAqB;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB,CAAC,WAAoC;QACtD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,MAAuB;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,yBAAyB,CAAC,iBAAkC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAED,0CAA0C,CAAC,0BAA2C;QACpF,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC3E,CAAC;IAED,qCAAqC,CAAC,6BAA8C;QAClF,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACzE,CAAC;IAED,6BAA6B,CAAC,qBAAsC;QAClE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzD,CAAC;IAED,4BAA4B,CAAC,oBAAqC;QAChE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED,2BAA2B,CAAC,mBAAoC;QAC9D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC;IAED,eAAe,CAAC,OAA0B;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,oBAAoB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAED,8BAA8B;QAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACtD,CAAC;IAED,qCAAqC,CAAC,IAAY;QAChD,MAAM,2BAA2B,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,0BAA0B,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7C,OAAO,0BAA0B,CAAC,QAAQ,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAED,4BAA4B,CAAsC,IAAY;QAC5E,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/C,OAAO,iBAAiB,CAAC,QAAQ,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC9D,CAAC;IAED,6CAA6C,CAAsC,IAAY;QAC7F,MAAM,2BAA2B,GAAG,IAAI,CAAC,sCAAsC,EAAE,CAAC;QAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,0BAA0B,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACxD,OAAO,0BAA0B,CAAC,QAAQ,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI;gBAAE,OAAO,CAAC,CAAC,QAA8B,CAAC;QAC7E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IACxD,CAAC;IAED,wCAAwC,CAAkB,IAAY;QACpE,MAAM,8BAA8B,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEhF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,8BAA8B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,MAAM,6BAA6B,GAAG,8BAA8B,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC3D,OAAO,6BAA6B,CAAC,QAAQ,CAAC;YAChD,CAAC;QACH,CAAC;IAEH,CAAC;IAGD,yBAAyB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC;IAED,wBAAwB;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC;IAED,+BAA+B,CAAC,IAAY;QAC1C,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,oBAAoB,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvC,OAAO,oBAAoB,CAAC,QAAQ,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB,CAAC,IAAY;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACrG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,YAAY,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,uBAAuB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAED,6BAA6B;QAC3B,MAAM,2BAA2B,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,2BAA2B,GAAyB,mBAAmB,CAAC,QAAQ,CAAC;YACvF,IAAI,2BAA2B,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrD,OAAO,2BAA2B,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAChF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,qBAAqB,CAAC,aAA6B;QACjD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,OAAiB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,6BAA6B,CAAC,qBAA8C;QAC1E,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;IAED,wBAAwB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAGD,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,gBAAgB,CAAC,iBAAyB,EAAE,YAAsB,EAAE;QAElE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,KAAK,iBAAiB,CAAC,CAAC;QACpG,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,KAAK,iBAAiB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;IAEzJ,CAAC;CAEF,CAAA;AA7PY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CA6PzB","sourcesContent":["import { Injectable } from '@nestjs/common';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { ComputedFieldTriggerConfig, ComputedFieldValueType } from 'src/dtos/create-field-metadata.dto';\nimport { CommonEntity } from 'src/entities/common.entity';\nimport { Locale } from 'src/entities/locale.entity';\nimport { SecurityRule } from 'src/entities/security-rule.entity';\nimport { IScheduledJob } from 'src/services/scheduled-jobs/scheduled-job.interface';\nimport { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from \"../interfaces\";\nimport { DatasourceType } from 'src/dtos/create-model-metadata.dto';\nimport { ObjectLiteral } from 'typeorm';\nimport { ColumnMetadata } from 'typeorm/metadata/ColumnMetadata';\nimport { RelationMetadata } from 'typeorm/metadata/RelationMetadata';\n\ntype ControllerMetadata = {\n name: string;\n methods: string[];\n};\n\nexport enum RESERVED_SOLID_KEYWORDS {\n moduleMetadata = \"moduleMetadata\",\n modelMetadata = \"modelMetadata\",\n fieldMetadata = \"fieldMetadata\",\n dataSource = \"dataSource\",\n repository = \"repository\",\n entityManager = \"entityManager\",\n actionMetadata = \"actionMetadata\",\n emailAttachment = \"emailAttachment\",\n emailTemplate = \"emailTemplate\",\n listOfValues = \"listOfValues\",\n mediaStorageProvider = \"mediaStorageProvider\",\n media = \"media\",\n menuItemMetadata = \"menuItemMetadata\",\n mqMessageQueue = \"mqMessageQueue\",\n mqMessage = \"mqMessage\",\n permissionMetadata = \"permissionMetadata\",\n roleMetadata = \"roleMetadata\",\n securityRule = \"securityRule\",\n setting = \"setting\",\n smsTemplate = \"smsTemplate\",\n userMetadata = \"userMetadata\",\n user = \"user\",\n locale = \"locale\"\n}\n\nexport interface TypeOrmEventContext {\n eventType?: string;\n entity?: ObjectLiteral | undefined;\n databaseEntity?: any;\n entityId?: any;\n metadataName?: string;\n updatedColumns?: string[];\n updatedRelations?: string[];\n}\n\nexport interface ComputedFieldMetadata<TContext = any> {\n moduleName: string; // Name of the module where the computed field is defined\n modelName: string; // Name of the model where the computed field is defined\n fieldName: string; // Name of the field that is computed\n computedFieldValueType: ComputedFieldValueType; // Type of the computed field value (e.g., string, number, etc.)\n computedFieldTriggerConfig: ComputedFieldTriggerConfig[]; // JSON stringified object containing the trigger configuration\n // Example: '{\"models\": [\"User\", \"Product\"], \"operations\": [\"create\", \"update\"]}'\n computedFieldValueProviderName: string; // Name of the provider that computes the field value\n // Example: '{\"contextKey\": \"contextValue\"}'\n computedFieldValueProviderCtxt: TContext; // Context for the computed field value\n eventContext: TypeOrmEventContext;\n}\n\n@Injectable()\nexport class SolidRegistry {\n private seeders: Set<InstanceWrapper> = new Set();\n private scheduledJobProviders: Set<InstanceWrapper> = new Set();\n private selectionProviders: Set<InstanceWrapper> = new Set();\n private computedFieldProviders: Set<InstanceWrapper> = new Set();\n private solidDatabaseModules: Set<InstanceWrapper> = new Set();\n private controllers: Set<ControllerMetadata> = new Set();\n private modules: Set<InstanceWrapper> = new Set();\n private securityRules: SecurityRule[] = [];\n private locales: Locale[] = [];\n private computedFieldMetadata: ComputedFieldMetadata[] = [];\n private dashboardVariableSelectionProviders: Set<InstanceWrapper> = new Set();\n private dashboardQuestionDataProviders: Set<InstanceWrapper> = new Set();\n private mailProviders: Set<InstanceWrapper> = new Set();\n private whatsappProviders: Set<InstanceWrapper> = new Set();\n private securityRuleConfigProviders: Set<InstanceWrapper> = new Set();\n private errorCodeProviders: Set<InstanceWrapper> = new Set();\n\n registerErrorCodeProvider(errorCodeProvider: InstanceWrapper): void {\n this.errorCodeProviders.add(errorCodeProvider);\n }\n\n registerWhatsappProvider(whatsappProvider: InstanceWrapper): void {\n this.whatsappProviders.add(whatsappProvider);\n }\n\n registerSecurityRuleConfigProvider(securityRuleConfigProvider: InstanceWrapper): void {\n this.securityRuleConfigProviders.add(securityRuleConfigProvider);\n }\n\n registerMailProvider(mailProvider: InstanceWrapper): void {\n this.mailProviders.add(mailProvider);\n }\n\n registerController(name: string, methodNames: string[]): void {\n this.controllers.add({ name: name, methods: methodNames });\n }\n\n registerControllers(controllers: Set<ControllerMetadata>): void {\n this.controllers = controllers;\n }\n\n registerSeeder(seeder: InstanceWrapper): void {\n this.seeders.add(seeder);\n }\n\n registerSelectionProvider(selectionProvider: InstanceWrapper): void {\n this.selectionProviders.add(selectionProvider);\n }\n\n registerDashboardVariableSelectionProvider(dashboardSelectionProvider: InstanceWrapper): void {\n this.dashboardVariableSelectionProviders.add(dashboardSelectionProvider);\n }\n\n registerDashboardQuestionDataProvider(dashboardQuestionDataProvider: InstanceWrapper): void {\n this.dashboardQuestionDataProviders.add(dashboardQuestionDataProvider);\n }\n\n registerComputedFieldProvider(computedFieldProvider: InstanceWrapper): void {\n this.computedFieldProviders.add(computedFieldProvider);\n }\n\n registerScheduledJobProvider(scheduledJobProvider: InstanceWrapper): void {\n this.scheduledJobProviders.add(scheduledJobProvider);\n }\n\n registerSolidDatabaseModule(solidDatabaseModule: InstanceWrapper): void {\n this.solidDatabaseModules.add(solidDatabaseModule);\n }\n\n registerModules(modules: InstanceWrapper[]): void {\n this.modules = new Set(modules);\n }\n\n getMailProviders(): Array<InstanceWrapper> {\n return Array.from(this.mailProviders);\n }\n\n getWhatsappProviders(): Array<InstanceWrapper> {\n return Array.from(this.whatsappProviders);\n }\n\n getSecurityRuleConfigProviders(): Array<InstanceWrapper> {\n return Array.from(this.securityRuleConfigProviders);\n }\n\n getSecurityRuleConfigProviderInstance(name: string): ISecurityRuleConfigProvider {\n const securityRuleConfigProviders = this.getSecurityRuleConfigProviders();\n\n for (let i = 0; i < securityRuleConfigProviders.length; i++) {\n const securityRuleConfigProvider = securityRuleConfigProviders[i];\n if (securityRuleConfigProvider.name === name) {\n return securityRuleConfigProvider.instance;\n }\n }\n }\n\n getSeeders(): Array<InstanceWrapper> {\n return Array.from(this.seeders);\n }\n\n getControllers(): ControllerMetadata[] {\n return Array.from(this.controllers);\n }\n\n getSelectionProviders(): Array<InstanceWrapper> {\n return Array.from(this.selectionProviders);\n }\n\n getSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): ISelectionProvider<T> {\n const selectionProviders = this.getSelectionProviders();\n\n for (let i = 0; i < selectionProviders.length; i++) {\n const selectionProvider = selectionProviders[i];\n if (selectionProvider.instance.name() === name) {\n return selectionProvider.instance;\n }\n }\n }\n\n getDashboardVariableSelectionProviders(): Array<InstanceWrapper> {\n return Array.from(this.dashboardVariableSelectionProviders);\n }\n\n getDashboardVariableSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): IDashboardVariableSelectionProvider<T> {\n const dashboardSelectionProviders = this.getDashboardVariableSelectionProviders();\n\n for (let i = 0; i < dashboardSelectionProviders.length; i++) {\n const dashboardSelectionProvider = dashboardSelectionProviders[i];\n if (dashboardSelectionProvider.instance.name() === name) {\n return dashboardSelectionProvider.instance;\n }\n }\n }\n\n getErrorCodeProviders(): Array<InstanceWrapper> {\n return Array.from(this.errorCodeProviders);\n }\n\n getErrorCodeProviderInstance(name: string): IErrorCodeProvider | undefined {\n const providers = this.getErrorCodeProviders();\n for (let i = 0; i < providers.length; i++) {\n const p = providers[i];\n if (p.instance?.name?.() === name) return p.instance as IErrorCodeProvider;\n }\n return undefined;\n }\n\n getDashboardQuestionDataProviders(): Array<InstanceWrapper> {\n return Array.from(this.dashboardQuestionDataProviders)\n }\n\n getDashboardQuestionDataProviderInstance<TContext, TData>(name: string): IDashboardQuestionDataProvider<TContext, TData> {\n const dashboardQuestionDataProviders = this.getDashboardQuestionDataProviders();\n\n for (let i = 0; i < dashboardQuestionDataProviders.length; i++) {\n const dasbhoardQuestionDataProvider = dashboardQuestionDataProviders[i];\n if (dasbhoardQuestionDataProvider.instance.name() === name) {\n return dasbhoardQuestionDataProvider.instance;\n }\n }\n\n }\n\n\n getComputedFieldProviders(): Array<InstanceWrapper> {\n return Array.from(this.computedFieldProviders);\n }\n\n getScheduledJobProviders(): Array<InstanceWrapper> {\n return Array.from(this.scheduledJobProviders);\n }\n\n getScheduledJobProviderInstance(name: string): IScheduledJob {\n const scheduledJobProviders = this.getScheduledJobProviders();\n\n for (let i = 0; i < scheduledJobProviders.length; i++) {\n const scheduledJobProvider = scheduledJobProviders[i];\n if (scheduledJobProvider.name === name) {\n return scheduledJobProvider.instance;\n }\n }\n }\n\n getComputedFieldProvider(name: string): InstanceWrapper {\n const provider = this.getComputedFieldProviders().filter((provider) => provider.name === name).pop();\n if (!provider) {\n throw new Error(`Computed Field Provider with name ${name} not found`);\n }\n return provider\n }\n\n getSolidDatabaseModules(): Array<InstanceWrapper> {\n return Array.from(this.solidDatabaseModules);\n }\n\n getDefaultSolidDatabaseModule(): ISolidDatabaseModule {\n const solidDatabaseModulesAsArray = Array.from(this.solidDatabaseModules);\n for (let i = 0; i < solidDatabaseModulesAsArray.length; i++) {\n const solidDatabaseModule = solidDatabaseModulesAsArray[i];\n const solidDatabaseModuleInstance: ISolidDatabaseModule = solidDatabaseModule.instance;\n if (solidDatabaseModuleInstance.name() === 'default') {\n return solidDatabaseModuleInstance;\n }\n }\n }\n\n getModules(): Array<InstanceWrapper> {\n return Array.from(this.modules);\n }\n\n getModule(name: string): InstanceWrapper {\n const module = this.getModules().filter((module) => module.name === name).pop();\n return module\n }\n\n registerSecurityRules(securityRules: SecurityRule[]) {\n this.securityRules = securityRules;\n }\n\n registerlocales(locales: Locale[]) {\n this.locales = locales;\n }\n\n registerComputedFieldMetadata(computedFieldMetadata: ComputedFieldMetadata[]) {\n this.computedFieldMetadata = computedFieldMetadata;\n }\n\n getComputedFieldMetadata(): ComputedFieldMetadata[] {\n return this.computedFieldMetadata;\n }\n\n //TODO:getlocales from locale model and return default locale where isDefault:true \n getDefaultLocale(): Locale | null {\n return this.locales.find(locale => locale.isDefault === true) || null;\n }\n\n getSecurityRules(modelSingularName: string, roleNames: string[] = []): SecurityRule[] {\n // If no role is provided, return all security rules for the model\n if (roleNames.length === 0) {\n return this.securityRules.filter((rule) => rule.modelMetadata.singularName === modelSingularName);\n }\n // If roles are provided, filter the security rules by model and roles\n return this.securityRules.filter((rule) => {\n return rule.modelMetadata.singularName === modelSingularName && roleNames.includes(rule.role.name);\n });\n }\n\n getCommonEntityKeys(): (keyof CommonEntity | 'createdBy' | 'updatedBy')[] {\n return ['id', 'createdAt', 'updatedAt', 'deletedAt', 'createdBy', 'updatedBy', 'deletedTracker', 'localeName', 'defaultEntityLocaleId', 'publishedAt'];\n // return Reflect.getMetadataKeys(CommonEntity.prototype) as (keyof CommonEntity)[];\n }\n\n}"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -133,6 +133,7 @@ export * from './entities/dashboard-variable.entity';
|
|
|
133
133
|
export * from './entities/dashboard-question.entity';
|
|
134
134
|
export * from './entities/dashboard-question-sql-dataset-config.entity';
|
|
135
135
|
export * from './entities/ai-interaction.entity';
|
|
136
|
+
export * from './entities/model-sequence.entity';
|
|
136
137
|
export * from './enums/auth-type.enum';
|
|
137
138
|
export * from './decorators/disallow-in-production.decorator';
|
|
138
139
|
export * from './filters/http-exception.filter';
|
|
@@ -271,11 +272,12 @@ export * from './subscribers/audit.subscriber';
|
|
|
271
272
|
export * from './transformers/array-transformer';
|
|
272
273
|
export * from './transformers/boolean-transformer';
|
|
273
274
|
export * from './transformers/integer-transformer';
|
|
275
|
+
export { default as datetimeTransformer } from './transformers/datetime-transformer';
|
|
276
|
+
export * from './transformers/typeorm/local-date-time-transformer';
|
|
274
277
|
export * from './validators/is-parsable-int';
|
|
275
278
|
export * from './constants';
|
|
276
279
|
export * from './interfaces';
|
|
277
280
|
export * from './solid-core.module';
|
|
278
281
|
export * from './winston.logger';
|
|
279
|
-
export { default as datetimeTransformer } from './transformers/datetime-transformer';
|
|
280
282
|
export { ERROR_MESSAGES } from './constants/error-messages';
|
|
281
283
|
//# sourceMappingURL=index.d.ts.map
|