@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
|
@@ -47,8 +47,8 @@ export class SolidTsMorphService {
|
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
49
|
|
|
50
|
-
this.logger.
|
|
51
|
-
Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.
|
|
50
|
+
this.logger.debug(`SolidTsMorphService repoRoot = ${this.repoRoot}`);
|
|
51
|
+
Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.debug(`workspace '${k}' => ${v}`));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
// ---- repo-root discovery ----
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
|
-
import { EntityManager, Repository } from 'typeorm';
|
|
4
|
+
import { EntityManager, In, Repository } from 'typeorm';
|
|
5
5
|
|
|
6
6
|
import { CRUDService } from 'src/services/crud.service';
|
|
7
7
|
import { ModelMetadataService } from 'src/services/model-metadata.service';
|
|
@@ -19,6 +19,7 @@ import { UserActivityHistoryRepository } from 'src/repository/user-activity-hist
|
|
|
19
19
|
@Injectable()
|
|
20
20
|
export class UserActivityHistoryService extends CRUDService<UserActivityHistory> {
|
|
21
21
|
constructor(
|
|
22
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
22
23
|
readonly modelMetadataService: ModelMetadataService,
|
|
23
24
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
24
25
|
readonly configService: ConfigService,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { EntityManager, Repository } from 'typeorm';
|
|
@@ -19,6 +19,7 @@ import { UserViewMetadataRepository } from 'src/repository/user-view-metadata.re
|
|
|
19
19
|
@Injectable()
|
|
20
20
|
export class UserViewMetadataService extends CRUDService<UserViewMetadata> {
|
|
21
21
|
constructor(
|
|
22
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
22
23
|
readonly modelMetadataService: ModelMetadataService,
|
|
23
24
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
24
25
|
readonly configService: ConfigService,
|
|
@@ -42,13 +43,13 @@ export class UserViewMetadataService extends CRUDService<UserViewMetadata> {
|
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
if (existing) {
|
|
45
|
-
existing.layout =
|
|
46
|
+
existing.layout = query.layout;
|
|
46
47
|
return await this.repo.save(existing);
|
|
47
48
|
} else {
|
|
48
49
|
const newEntry = this.repo.create({
|
|
49
50
|
user: { id: activeUser?.sub },
|
|
50
51
|
viewMetadata: { id: query.viewMetadataId },
|
|
51
|
-
layout:
|
|
52
|
+
layout: query.layout
|
|
52
53
|
});
|
|
53
54
|
return await this.repo.save(newEntry);
|
|
54
55
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BadRequestException, Inject, Injectable } from '@nestjs/common';
|
|
1
|
+
import { BadRequestException, forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { ConfigService, ConfigType } from '@nestjs/config';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
|
|
@@ -22,6 +22,7 @@ import { RoleMetadataRepository } from 'src/repository/role-metadata.repository'
|
|
|
22
22
|
@Injectable()
|
|
23
23
|
export class UserService extends CRUDService<User> {
|
|
24
24
|
constructor(
|
|
25
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
25
26
|
readonly modelMetadataService: ModelMetadataService,
|
|
26
27
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
27
28
|
readonly configService: ConfigService,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BadRequestException, Injectable, Logger } from '@nestjs/common';
|
|
1
|
+
import { BadRequestException, forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import { ConfigService } from '@nestjs/config';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
@@ -7,27 +7,27 @@ import { CRUDService } from 'src/services/crud.service';
|
|
|
7
7
|
import { FileService } from "src/services/file.service";
|
|
8
8
|
import { ModelMetadataService } from 'src/services/model-metadata.service';
|
|
9
9
|
import { ModuleMetadataService } from 'src/services/module-metadata.service';
|
|
10
|
-
import { EntityManager } from 'typeorm';
|
|
10
|
+
import { EntityManager, In } from 'typeorm';
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
import { classify } from '@angular-devkit/core/src/utils/strings';
|
|
14
14
|
import { Locale } from 'src/entities/locale.entity';
|
|
15
15
|
import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
|
|
16
16
|
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
17
|
-
import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
|
|
18
17
|
import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
|
|
19
18
|
import { ViewMetadataRepository } from 'src/repository/view-metadata.repository';
|
|
20
19
|
import { UpdateViewMetadataDto } from '../dtos/update-view-metadata.dto';
|
|
21
20
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
22
21
|
import { ViewMetadata } from '../entities/view-metadata.entity';
|
|
23
22
|
import { ActionMetadataService } from './action-metadata.service';
|
|
23
|
+
import { MenuItemMetadataService } from './menu-item-metadata.service';
|
|
24
24
|
import { SolidIntrospectService } from './solid-introspect.service';
|
|
25
25
|
import { UserViewMetadataService } from './user-view-metadata.service';
|
|
26
|
-
import { MenuItemMetadataService } from './menu-item-metadata.service';
|
|
27
26
|
|
|
28
27
|
@Injectable()
|
|
29
28
|
export class ViewMetadataService extends CRUDService<ViewMetadata> {
|
|
30
29
|
constructor(
|
|
30
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
31
31
|
readonly modelMetadataService: ModelMetadataService,
|
|
32
32
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
33
33
|
readonly configService: ConfigService,
|
|
@@ -46,6 +46,7 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
|
|
|
46
46
|
// private readonly fieldMetadataRepo: Repository<FieldMetadata>,
|
|
47
47
|
// @InjectRepository(ModelMetadata)
|
|
48
48
|
// private readonly modelMetadataRepo: Repository<ModelMetadata>,
|
|
49
|
+
@Inject(forwardRef(() => ModelMetadataRepository))
|
|
49
50
|
private readonly modelMetadataRepo: ModelMetadataRepository,
|
|
50
51
|
private readonly modelMetadataHelperService: ModelMetadataHelperService,
|
|
51
52
|
readonly moduleRef: ModuleRef
|
|
@@ -4,7 +4,8 @@ import { join } from 'path';
|
|
|
4
4
|
import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
|
|
5
5
|
import { WinstonTypeORMLogger } from './winston.logger';
|
|
6
6
|
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
|
|
7
|
-
|
|
7
|
+
import { parseBooleanEnv } from './helpers/environment.helper';
|
|
8
|
+
import { Logger } from 'winston';
|
|
8
9
|
@Module({
|
|
9
10
|
imports: [
|
|
10
11
|
TypeOrmModule.forRootAsync({
|
|
@@ -47,9 +48,9 @@ import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
|
|
|
47
48
|
// autoLoadEntities: true,
|
|
48
49
|
entities: entities,
|
|
49
50
|
// your entities will be synced with the database (recommended: disable in prod)
|
|
50
|
-
synchronize:
|
|
51
|
-
logging:
|
|
52
|
-
|
|
51
|
+
synchronize: parseBooleanEnv('DEFAULT_DATABASE_SYNCHRONIZE'),
|
|
52
|
+
logging: parseBooleanEnv('DEFAULT_DATABASE_LOGGING'),
|
|
53
|
+
logger: parseBooleanEnv('DEFAULT_DATABASE_LOGGING') ? new WinstonTypeORMLogger(logger) : undefined, // Pass in the custom WinstonLogger
|
|
53
54
|
namingStrategy: new SnakeNamingStrategy(),
|
|
54
55
|
// subscribers: subscribers
|
|
55
56
|
}
|
package/src/solid-core.module.ts
CHANGED
|
@@ -328,6 +328,15 @@ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
|
|
|
328
328
|
import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
|
|
329
329
|
import { MediaStorageProviderMetadataRepository } from './repository/media-storage-provider-metadata.repository';
|
|
330
330
|
import { McpCommand } from './commands/mcp.command';
|
|
331
|
+
import { FixturesService } from './services/fixtures.service';
|
|
332
|
+
import { FixturesSetupCommand } from './commands/fixtures/fixtures-setup.command';
|
|
333
|
+
import { FixturesTearDownCommand } from './commands/fixtures/fixtures-tear-down.command';
|
|
334
|
+
import { DatabaseBootstrapService } from './services/database/database-bootstrap.service';
|
|
335
|
+
import { SequenceNumComputedFieldProvider } from './services/computed-fields/entity/sequence-num-computed-field-provider';
|
|
336
|
+
import { ModelSequence } from './entities/model-sequence.entity';
|
|
337
|
+
import { ModelSequenceService } from './services/model-sequence.service';
|
|
338
|
+
import { ModelSequenceController } from './controllers/model-sequence.controller';
|
|
339
|
+
import { ModelSequenceRepository } from './repository/model-sequence.repository';
|
|
331
340
|
|
|
332
341
|
|
|
333
342
|
@Global()
|
|
@@ -369,6 +378,7 @@ import { McpCommand } from './commands/mcp.command';
|
|
|
369
378
|
UserActivityHistory,
|
|
370
379
|
UserViewMetadata,
|
|
371
380
|
ViewMetadata,
|
|
381
|
+
ModelSequence,
|
|
372
382
|
]),
|
|
373
383
|
ConfigModule.forFeature(appBuilderConfig),
|
|
374
384
|
ConfigModule.forFeature(commonConfig),
|
|
@@ -443,6 +453,7 @@ import { McpCommand } from './commands/mcp.command';
|
|
|
443
453
|
UserController,
|
|
444
454
|
UserViewMetadataController,
|
|
445
455
|
ViewMetadataController,
|
|
456
|
+
ModelSequenceController,
|
|
446
457
|
],
|
|
447
458
|
providers: [
|
|
448
459
|
{
|
|
@@ -702,6 +713,13 @@ import { McpCommand } from './commands/mcp.command';
|
|
|
702
713
|
ModuleMetadataRepository,
|
|
703
714
|
ActionMetadataRepository,
|
|
704
715
|
MediaStorageProviderMetadataRepository,
|
|
716
|
+
FixturesService,
|
|
717
|
+
FixturesSetupCommand,
|
|
718
|
+
FixturesTearDownCommand,
|
|
719
|
+
DatabaseBootstrapService,
|
|
720
|
+
SequenceNumComputedFieldProvider,
|
|
721
|
+
ModelSequenceService,
|
|
722
|
+
ModelSequenceRepository,
|
|
705
723
|
],
|
|
706
724
|
exports: [
|
|
707
725
|
AiInteractionService,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable, Scope } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable, Scope } from '@nestjs/common';
|
|
2
2
|
import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
|
|
3
3
|
import { lowerFirst } from 'src/helpers/string.helper';
|
|
4
4
|
import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
|
|
@@ -21,6 +21,7 @@ export class AuditSubscriber implements EntitySubscriberInterface {
|
|
|
21
21
|
private readonly chatterMessageService: ChatterMessageService,
|
|
22
22
|
// @InjectRepository(ModelMetadata)
|
|
23
23
|
// private readonly modelMetadataRepo: Repository<ModelMetadata>,
|
|
24
|
+
@Inject(forwardRef(() => ModelMetadataRepository))
|
|
24
25
|
private readonly modelMetadataRepo: ModelMetadataRepository,
|
|
25
26
|
private readonly modelMetadataHelperService: ModelMetadataHelperService,
|
|
26
27
|
) {
|
|
@@ -61,7 +62,7 @@ export class AuditSubscriber implements EntitySubscriberInterface {
|
|
|
61
62
|
|
|
62
63
|
const auditFields = modelFields.filter(field =>
|
|
63
64
|
field.enableAuditTracking &&
|
|
64
|
-
!['mediaSingle', 'mediaMultiple', '
|
|
65
|
+
!['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
|
|
65
66
|
!(field.type === 'relation' && field.relationType === 'one-to-many')
|
|
66
67
|
);
|
|
67
68
|
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { camelize } from "@angular-devkit/core/src/utils/strings";
|
|
2
2
|
import { forwardRef, Inject, Injectable, InternalServerErrorException, Logger, Scope } from "@nestjs/common";
|
|
3
|
+
import { model } from "mongoose";
|
|
3
4
|
import { ComputedFieldTriggerOperation } from "src/dtos/create-field-metadata.dto";
|
|
4
|
-
import { ComputedFieldMetadata, SolidRegistry } from "src/helpers/solid-registry";
|
|
5
|
+
import { ComputedFieldMetadata, SolidRegistry, TypeOrmEventContext } from "src/helpers/solid-registry";
|
|
5
6
|
import { IEntityPreComputeFieldProvider } from "src/interfaces";
|
|
6
7
|
import { PublisherFactory } from "src/services/queues/publisher-factory.service";
|
|
7
|
-
import { DataSource, EntitySubscriberInterface, InsertEvent, UpdateEvent } from "typeorm";
|
|
8
|
+
import { DataSource, EntitySubscriberInterface, InsertEvent, RemoveEvent, UpdateEvent } from "typeorm";
|
|
8
9
|
|
|
9
10
|
// Create an interface i.e ComputedFieldEvaluationPayload which has same fields as the ComputedFieldMetadata and an additional field for the database entity
|
|
10
11
|
export interface ComputedFieldEvaluationPayload extends ComputedFieldMetadata {
|
|
11
12
|
databaseEntity: any;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
@Injectable({scope: Scope.TRANSIENT})
|
|
15
|
+
@Injectable({ scope: Scope.TRANSIENT })
|
|
15
16
|
// @EventSubscriber()
|
|
16
17
|
export class ComputedEntityFieldSubscriber implements EntitySubscriberInterface {
|
|
17
18
|
private readonly logger = new Logger(this.constructor.name);
|
|
@@ -33,54 +34,66 @@ export class ComputedEntityFieldSubscriber implements EntitySubscriberInterface
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
async beforeInsert(event: InsertEvent<any>): Promise<any> {
|
|
36
|
-
|
|
37
|
+
const modelName = camelize(event.metadata?.name ?? event.entity?.constructor?.name ?? '');
|
|
38
|
+
const eventContext = this.sanitizeEventContext(event, 'beforeInsert');
|
|
39
|
+
await this.handleComputedFieldEvaluation(event.entity, ComputedFieldTriggerOperation.beforeInsert, modelName, eventContext);
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
async beforeUpdate(event: UpdateEvent<any>): Promise<any> {
|
|
40
|
-
|
|
43
|
+
const modelName = camelize(event.metadata?.name ?? event.entity?.constructor?.name ?? '');
|
|
44
|
+
const eventContext = this.sanitizeEventContext(event, 'beforeUpdate');
|
|
45
|
+
// await this.handleComputedFieldEvaluation(event.databaseEntity, ComputedFieldTriggerOperation.beforeUpdate, modelName, eventContext);
|
|
46
|
+
await this.handleComputedFieldEvaluation(event.entity, ComputedFieldTriggerOperation.beforeUpdate, modelName, eventContext);
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
afterInsert(event: InsertEvent<any>) {
|
|
44
|
-
|
|
50
|
+
const modelName = camelize(event.metadata?.name ?? event.entity?.constructor?.name ?? '');
|
|
51
|
+
const eventContext = this.sanitizeEventContext(event, 'afterInsert');
|
|
52
|
+
this.handleComputedFieldEvaluationJob(event.entity, ComputedFieldTriggerOperation.afterInsert, modelName, eventContext);
|
|
45
53
|
}
|
|
46
54
|
|
|
47
55
|
afterUpdate(event: UpdateEvent<any>) {
|
|
48
|
-
|
|
56
|
+
const modelName = camelize(event.metadata?.name ?? event.entity?.constructor?.name ?? event.databaseEntity?.constructor?.name ?? '');
|
|
57
|
+
const eventContext = this.sanitizeEventContext(event, 'afterUpdate');
|
|
58
|
+
// this.handleComputedFieldEvaluationJob(event.databaseEntity, ComputedFieldTriggerOperation.afterUpdate, modelName, eventContext);
|
|
59
|
+
this.handleComputedFieldEvaluationJob(event.entity, ComputedFieldTriggerOperation.afterUpdate, modelName, eventContext);
|
|
49
60
|
}
|
|
50
61
|
|
|
51
|
-
afterRemove(event: any) {
|
|
52
|
-
|
|
62
|
+
afterRemove(event: RemoveEvent<any>) {
|
|
63
|
+
const modelName = camelize(event.metadata?.name ?? event.entity?.constructor?.name ?? event.databaseEntity?.constructor?.name ?? '');
|
|
64
|
+
const eventContext = this.sanitizeEventContext(event, 'afterRemove');
|
|
65
|
+
this.handleComputedFieldEvaluationJob(event.databaseEntity, ComputedFieldTriggerOperation.afterRemove, modelName, eventContext);
|
|
53
66
|
}
|
|
54
67
|
|
|
55
68
|
//FIXME: Need to add support for beforeRemove, beforeSoftRemove, afterSoftRemove, beforeRecover, afterRecover
|
|
56
69
|
|
|
57
|
-
private async handleComputedFieldEvaluation(entity: any, currentOperation: ComputedFieldTriggerOperation): Promise<void> {
|
|
70
|
+
private async handleComputedFieldEvaluation(entity: any, currentOperation: ComputedFieldTriggerOperation, modelName: string, eventContext?: TypeOrmEventContext): Promise<void> {
|
|
58
71
|
if (!entity) {
|
|
59
72
|
return;
|
|
60
73
|
}
|
|
61
74
|
const computedFieldsTobeEvaluated = this.getComputedFieldsForEvaluation(
|
|
62
75
|
this.solidRegistry.getComputedFieldMetadata(),
|
|
63
76
|
currentOperation,
|
|
64
|
-
|
|
77
|
+
modelName
|
|
65
78
|
);
|
|
66
79
|
//TODO: We can add a feature i.e dependsOn, where we can check if the computed field depends on other computed fields and evaluate them first
|
|
67
80
|
await Promise.all(
|
|
68
|
-
computedFieldsTobeEvaluated.map(c => this.evaluateComputedField(c, entity))
|
|
81
|
+
computedFieldsTobeEvaluated.map(c => this.evaluateComputedField(this.attachContext(c, eventContext), entity))
|
|
69
82
|
)
|
|
70
83
|
}
|
|
71
84
|
|
|
72
|
-
private handleComputedFieldEvaluationJob(entity: any, currentOperation: ComputedFieldTriggerOperation) {
|
|
85
|
+
private handleComputedFieldEvaluationJob(entity: any, currentOperation: ComputedFieldTriggerOperation, modelName: string, eventContext?: TypeOrmEventContext) {
|
|
73
86
|
if (!entity) {
|
|
74
87
|
return;
|
|
75
88
|
}
|
|
76
89
|
const computedFieldsTobeEvaluated = this.getComputedFieldsForEvaluation(
|
|
77
90
|
this.solidRegistry.getComputedFieldMetadata(),
|
|
78
91
|
currentOperation,
|
|
79
|
-
|
|
92
|
+
modelName
|
|
80
93
|
);
|
|
81
94
|
//TODO: We can add a feature i.e dependsOn, where we can check if the computed field depends on other computed fields and evaluate them first
|
|
82
95
|
for (const computedField of computedFieldsTobeEvaluated) {
|
|
83
|
-
this.enqueueComputedFieldEvaluationJob(computedField, entity);
|
|
96
|
+
this.enqueueComputedFieldEvaluationJob(this.attachContext(computedField, eventContext), entity, eventContext);
|
|
84
97
|
}
|
|
85
98
|
}
|
|
86
99
|
|
|
@@ -114,15 +127,45 @@ export class ComputedEntityFieldSubscriber implements EntitySubscriberInterface
|
|
|
114
127
|
}
|
|
115
128
|
}
|
|
116
129
|
|
|
117
|
-
private enqueueComputedFieldEvaluationJob(computedField: ComputedFieldMetadata<any>, databaseEntity: any) {
|
|
130
|
+
private enqueueComputedFieldEvaluationJob(computedField: ComputedFieldMetadata<any>, databaseEntity: any, eventContext?: any) {
|
|
118
131
|
const payload = {
|
|
119
132
|
...computedField,
|
|
120
133
|
databaseEntity,
|
|
134
|
+
// eventContext,
|
|
121
135
|
};
|
|
122
|
-
this.publisherFactory.publish({payload}, 'ComputedFieldEvaluationPublisher')
|
|
136
|
+
this.publisherFactory.publish({ payload }, 'ComputedFieldEvaluationPublisher')
|
|
123
137
|
// this.computedFieldPublisher.publish({
|
|
124
138
|
// payload
|
|
125
139
|
// });
|
|
126
140
|
}
|
|
127
141
|
|
|
142
|
+
private attachContext<T extends ComputedFieldMetadata<any>>(computedField: T, eventContext?: any): T {
|
|
143
|
+
if (!eventContext) return computedField;
|
|
144
|
+
return {
|
|
145
|
+
...computedField,
|
|
146
|
+
computedFieldValueProviderCtxt: {
|
|
147
|
+
...(computedField.computedFieldValueProviderCtxt || {}),
|
|
148
|
+
},
|
|
149
|
+
eventContext,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private sanitizeEventContext(event: any, eventType: string): TypeOrmEventContext {
|
|
154
|
+
if (!event) return undefined;
|
|
155
|
+
const base: TypeOrmEventContext = {
|
|
156
|
+
metadataName: event.metadata?.name,
|
|
157
|
+
entityId: event.entityId ?? event.entity?.id ?? event.databaseEntity?.id,
|
|
158
|
+
eventType: eventType,
|
|
159
|
+
};
|
|
160
|
+
if (event.updatedColumns) {
|
|
161
|
+
base.updatedColumns = event.updatedColumns.map((c: any) => c.propertyName);
|
|
162
|
+
}
|
|
163
|
+
if (event.updatedRelations) {
|
|
164
|
+
base.updatedRelations = event.updatedRelations.map((r: any) => r.propertyName);
|
|
165
|
+
}
|
|
166
|
+
if (event.entity) base.entity = event.entity;
|
|
167
|
+
if (event.databaseEntity) base.databaseEntity = event.databaseEntity;
|
|
168
|
+
return base;
|
|
169
|
+
}
|
|
170
|
+
|
|
128
171
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
2
|
+
import utc from "dayjs/plugin/utc";
|
|
3
|
+
import timezone from "dayjs/plugin/timezone";
|
|
4
|
+
|
|
5
|
+
dayjs.extend(utc);
|
|
6
|
+
dayjs.extend(timezone);
|
|
7
|
+
|
|
8
|
+
const SOLIDX_TZ = process.env.SOLIDX_TIMEZONE || "Asia/Kolkata";
|
|
9
|
+
|
|
10
|
+
export const LocalDateTimeTransformer = {
|
|
11
|
+
// DB → Entity
|
|
12
|
+
from(value: Date | string | null): Date | null {
|
|
13
|
+
if (!value) return null;
|
|
14
|
+
|
|
15
|
+
// SQL Server driver may give Date or string
|
|
16
|
+
const d = dayjs(value);
|
|
17
|
+
|
|
18
|
+
// Interpret DB value as SOLIDX_TZ wall time,
|
|
19
|
+
// then convert to a real UTC instant
|
|
20
|
+
return d.tz(SOLIDX_TZ, true).utc().toDate();
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
// Entity → DB
|
|
24
|
+
to(value: Date | null): Date | null {
|
|
25
|
+
if (!value) return null;
|
|
26
|
+
|
|
27
|
+
// Convert the instant back into SOLIDX_TZ wall time
|
|
28
|
+
return dayjs(value).tz(SOLIDX_TZ).toDate();
|
|
29
|
+
},
|
|
30
|
+
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|