@nest-omni/core 4.1.3-2 → 4.1.3-20
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/audit/audit.module.d.ts +10 -0
- package/audit/audit.module.js +63 -1
- package/audit/controllers/audit.controller.d.ts +88 -0
- package/audit/controllers/audit.controller.js +74 -0
- package/audit/decorators/audit-action.decorator.d.ts +74 -0
- package/audit/decorators/audit-action.decorator.js +42 -0
- package/audit/decorators/audit-controller.decorator.d.ts +9 -1
- package/audit/decorators/audit-controller.decorator.js +11 -2
- package/audit/decorators/audit-operation.decorator.d.ts +45 -0
- package/audit/decorators/audit-operation.decorator.js +49 -0
- package/audit/decorators/entity-audit.decorator.d.ts +85 -1
- package/audit/decorators/entity-audit.decorator.js +153 -3
- package/audit/decorators/index.d.ts +2 -0
- package/audit/decorators/index.js +2 -0
- package/audit/dto/audit-log-query.dto.d.ts +3 -0
- package/audit/dto/audit-log-query.dto.js +3 -0
- package/audit/dto/begin-transaction.dto.d.ts +3 -0
- package/audit/dto/begin-transaction.dto.js +3 -0
- package/audit/dto/compare-entities.dto.d.ts +3 -0
- package/audit/dto/compare-entities.dto.js +3 -0
- package/audit/dto/pre-check-restore.dto.d.ts +3 -0
- package/audit/dto/pre-check-restore.dto.js +3 -0
- package/audit/dto/restore-entity.dto.d.ts +3 -0
- package/audit/dto/restore-entity.dto.js +3 -0
- package/audit/entities/audit-action-summary.entity.d.ts +23 -0
- package/audit/entities/audit-action-summary.entity.js +101 -0
- package/audit/entities/entity-audit-log.entity.d.ts +11 -0
- package/audit/entities/entity-audit-log.entity.js +57 -2
- package/audit/entities/entity-transaction.entity.d.ts +11 -2
- package/audit/entities/entity-transaction.entity.js +42 -3
- package/audit/entities/index.d.ts +3 -0
- package/audit/entities/index.js +3 -0
- package/audit/entities/manual-operation-log.entity.d.ts +4 -0
- package/audit/entities/manual-operation-log.entity.js +12 -1
- package/audit/entities/operation-template.entity.d.ts +4 -0
- package/audit/entities/operation-template.entity.js +4 -0
- package/audit/enums/audit.enums.d.ts +37 -6
- package/audit/enums/audit.enums.js +40 -7
- package/audit/index.d.ts +4 -1
- package/audit/index.js +34 -1
- package/audit/interceptors/audit-action.interceptor.d.ts +38 -0
- package/audit/interceptors/audit-action.interceptor.js +215 -0
- package/audit/interceptors/audit.interceptor.d.ts +15 -0
- package/audit/interceptors/audit.interceptor.js +23 -1
- package/audit/interceptors/index.d.ts +1 -0
- package/audit/interceptors/index.js +1 -0
- package/audit/interfaces/audit.interfaces.d.ts +187 -2
- package/audit/services/audit-action.service.d.ts +141 -0
- package/audit/services/audit-action.service.js +244 -0
- package/audit/services/audit-context.service.d.ts +97 -0
- package/audit/services/audit-context.service.js +185 -0
- package/audit/services/audit-strategy.service.d.ts +6 -0
- package/audit/services/audit-strategy.service.js +13 -0
- package/audit/services/entity-audit.service.d.ts +230 -3
- package/audit/services/entity-audit.service.js +607 -14
- package/audit/services/index.d.ts +3 -0
- package/audit/services/index.js +3 -0
- package/audit/services/manual-audit-log.service.d.ts +134 -9
- package/audit/services/manual-audit-log.service.js +157 -40
- package/audit/services/multi-database.service.d.ts +9 -2
- package/audit/services/multi-database.service.js +9 -21
- package/audit/services/operation-description.service.d.ts +71 -2
- package/audit/services/operation-description.service.js +231 -20
- package/audit/services/transaction-audit.service.d.ts +30 -0
- package/audit/services/transaction-audit.service.js +53 -5
- package/audit/subscribers/entity-audit.subscriber.d.ts +19 -0
- package/audit/subscribers/entity-audit.subscriber.js +76 -1
- package/cache/cache-metrics.service.d.ts +67 -0
- package/cache/cache-metrics.service.js +68 -4
- package/cache/cache-serialization.service.d.ts +31 -0
- package/cache/cache-serialization.service.js +25 -0
- package/cache/cache.constants.d.ts +9 -0
- package/cache/cache.constants.js +9 -0
- package/cache/cache.health.d.ts +26 -0
- package/cache/cache.health.js +30 -0
- package/cache/cache.module.d.ts +82 -2
- package/cache/cache.module.js +76 -5
- package/cache/cache.service.d.ts +140 -0
- package/cache/cache.service.js +169 -0
- package/cache/cache.warmup.service.d.ts +39 -0
- package/cache/cache.warmup.service.js +32 -0
- package/cache/decorators/cache-evict.decorator.d.ts +47 -0
- package/cache/decorators/cache-evict.decorator.js +56 -0
- package/cache/decorators/cache-put.decorator.d.ts +34 -0
- package/cache/decorators/cache-put.decorator.js +39 -0
- package/cache/decorators/cacheable.decorator.d.ts +40 -0
- package/cache/decorators/cacheable.decorator.js +55 -0
- package/cache/dependencies/callback.dependency.d.ts +33 -0
- package/cache/dependencies/callback.dependency.js +39 -1
- package/cache/dependencies/chain.dependency.d.ts +28 -0
- package/cache/dependencies/chain.dependency.js +34 -0
- package/cache/dependencies/db.dependency.d.ts +83 -7
- package/cache/dependencies/db.dependency.js +89 -14
- package/cache/dependencies/file.dependency.d.ts +32 -0
- package/cache/dependencies/file.dependency.js +34 -0
- package/cache/dependencies/tag.dependency.d.ts +75 -4
- package/cache/dependencies/tag.dependency.js +145 -11
- package/cache/dependencies/time.dependency.d.ts +43 -0
- package/cache/dependencies/time.dependency.js +43 -0
- package/cache/examples/basic-usage.d.ts +15 -0
- package/cache/examples/basic-usage.js +62 -8
- package/cache/index.js +9 -0
- package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
- package/cache/interfaces/cache-options.interface.d.ts +89 -0
- package/cache/interfaces/cache-options.interface.js +6 -0
- package/cache/interfaces/cache-provider.interface.d.ts +78 -0
- package/cache/providers/base-cache.provider.d.ts +14 -0
- package/cache/providers/base-cache.provider.js +16 -0
- package/cache/providers/cls-cache.provider.d.ts +20 -0
- package/cache/providers/cls-cache.provider.js +28 -0
- package/cache/providers/memory-cache.provider.d.ts +43 -0
- package/cache/providers/memory-cache.provider.js +66 -0
- package/cache/providers/redis-cache.provider.d.ts +26 -0
- package/cache/providers/redis-cache.provider.js +29 -0
- package/cache/utils/dependency-manager.util.d.ts +52 -0
- package/cache/utils/dependency-manager.util.js +59 -0
- package/cache/utils/key-generator.util.d.ts +42 -0
- package/cache/utils/key-generator.util.js +53 -1
- package/common/abstract.entity.d.ts +14 -0
- package/common/abstract.entity.js +14 -0
- package/common/boilerplate.polyfill.d.ts +142 -0
- package/common/boilerplate.polyfill.js +18 -1
- package/common/dto/dto-container.d.ts +16 -0
- package/common/dto/dto-container.js +20 -0
- package/common/dto/dto-decorators.d.ts +18 -0
- package/common/dto/dto-decorators.js +14 -0
- package/common/dto/dto-extensions.d.ts +11 -0
- package/common/dto/dto-extensions.js +9 -0
- package/common/dto/dto-service-accessor.d.ts +17 -0
- package/common/dto/dto-service-accessor.js +18 -0
- package/common/dto/dto-transformer.d.ts +12 -0
- package/common/dto/dto-transformer.js +9 -0
- package/common/dto/index.js +2 -0
- package/common/examples/paginate-and-map.example.d.ts +6 -0
- package/common/examples/paginate-and-map.example.js +26 -0
- package/common/utils.d.ts +15 -0
- package/common/utils.js +15 -0
- package/constants/language-code.js +1 -0
- package/decorators/field.decorators.d.ts +1 -1
- package/decorators/field.decorators.js +8 -1
- package/decorators/property.decorators.js +1 -0
- package/decorators/public-route.decorator.js +1 -0
- package/decorators/transform.decorators.d.ts +27 -0
- package/decorators/transform.decorators.js +29 -0
- package/decorators/translate.decorator.js +1 -0
- package/decorators/user.decorator.js +1 -0
- package/decorators/validator.decorators.d.ts +8 -18
- package/decorators/validator.decorators.js +22 -190
- package/file-upload/controllers/file-access.controller.d.ts +23 -0
- package/file-upload/controllers/file-access.controller.js +128 -0
- package/file-upload/decorators/column.decorator.d.ts +151 -0
- package/file-upload/decorators/column.decorator.js +273 -0
- package/file-upload/decorators/csv-data.decorator.d.ts +30 -0
- package/file-upload/decorators/csv-data.decorator.js +85 -0
- package/file-upload/decorators/csv-import.decorator.d.ts +34 -0
- package/file-upload/decorators/csv-import.decorator.js +24 -0
- package/file-upload/decorators/examples/column-mapping.example.d.ts +76 -0
- package/file-upload/decorators/examples/column-mapping.example.js +122 -0
- package/file-upload/decorators/excel-data.decorator.d.ts +30 -0
- package/file-upload/decorators/excel-data.decorator.js +85 -0
- package/file-upload/decorators/file-upload.decorator.d.ts +83 -0
- package/file-upload/decorators/file-upload.decorator.js +172 -0
- package/file-upload/decorators/index.d.ts +5 -0
- package/file-upload/decorators/index.js +38 -0
- package/file-upload/decorators/process.decorator.d.ts +40 -0
- package/file-upload/decorators/process.decorator.js +52 -0
- package/file-upload/decorators/validate-data.decorator.d.ts +91 -0
- package/file-upload/decorators/validate-data.decorator.js +39 -0
- package/file-upload/dto/create-file.dto.d.ts +24 -0
- package/file-upload/dto/create-file.dto.js +112 -0
- package/file-upload/dto/find-files.dto.d.ts +15 -0
- package/file-upload/dto/find-files.dto.js +76 -0
- package/file-upload/dto/index.d.ts +4 -0
- package/file-upload/dto/index.js +20 -0
- package/file-upload/dto/pagination.dto.d.ts +7 -0
- package/file-upload/dto/pagination.dto.js +39 -0
- package/file-upload/dto/update-file.dto.d.ts +15 -0
- package/file-upload/dto/update-file.dto.js +67 -0
- package/file-upload/entities/file-metadata.entity.d.ts +25 -0
- package/file-upload/entities/file-metadata.entity.js +76 -0
- package/file-upload/entities/file.entity.d.ts +114 -0
- package/file-upload/entities/file.entity.js +350 -0
- package/file-upload/entities/index.d.ts +2 -0
- package/file-upload/entities/index.js +18 -0
- package/file-upload/enums/file-type.enum.d.ts +72 -0
- package/file-upload/enums/file-type.enum.js +212 -0
- package/file-upload/exceptions/file-upload.exception.d.ts +57 -0
- package/file-upload/exceptions/file-upload.exception.js +120 -0
- package/file-upload/exceptions/index.d.ts +1 -0
- package/file-upload/exceptions/index.js +17 -0
- package/file-upload/file-upload.module.d.ts +89 -0
- package/file-upload/file-upload.module.js +292 -0
- package/file-upload/index.d.ts +37 -0
- package/file-upload/index.js +77 -0
- package/file-upload/interceptors/file-upload.interceptor.d.ts +101 -0
- package/file-upload/interceptors/file-upload.interceptor.js +594 -0
- package/file-upload/interceptors/index.d.ts +1 -0
- package/file-upload/interceptors/index.js +17 -0
- package/file-upload/interfaces/custom-file-type.interface.d.ts +72 -0
- package/file-upload/interfaces/custom-file-type.interface.js +2 -0
- package/file-upload/interfaces/file-buffer.interface.d.ts +72 -0
- package/file-upload/interfaces/file-buffer.interface.js +2 -0
- package/file-upload/interfaces/file-entity.interface.d.ts +142 -0
- package/file-upload/interfaces/file-entity.interface.js +28 -0
- package/file-upload/interfaces/file-metadata.interface.d.ts +21 -0
- package/file-upload/interfaces/file-metadata.interface.js +2 -0
- package/file-upload/interfaces/file-processor.interface.d.ts +93 -0
- package/file-upload/interfaces/file-processor.interface.js +2 -0
- package/file-upload/interfaces/file-upload-options.interface.d.ts +74 -0
- package/file-upload/interfaces/file-upload-options.interface.js +5 -0
- package/file-upload/interfaces/index.d.ts +7 -0
- package/file-upload/interfaces/index.js +24 -0
- package/file-upload/interfaces/processor-options.interface.d.ts +102 -0
- package/file-upload/interfaces/processor-options.interface.js +2 -0
- package/file-upload/interfaces/storage-provider.interface.d.ts +239 -0
- package/file-upload/interfaces/storage-provider.interface.js +2 -0
- package/file-upload/interfaces/upload-options.interface.d.ts +19 -0
- package/file-upload/interfaces/upload-options.interface.js +2 -0
- package/file-upload/processors/csv.processor.d.ts +98 -0
- package/file-upload/processors/csv.processor.js +391 -0
- package/file-upload/processors/excel.processor.d.ts +130 -0
- package/file-upload/processors/excel.processor.js +547 -0
- package/file-upload/processors/image.processor.d.ts +199 -0
- package/file-upload/processors/image.processor.js +377 -0
- package/file-upload/providers/index.d.ts +2 -0
- package/file-upload/providers/index.js +18 -0
- package/file-upload/providers/local-storage.provider.d.ts +98 -0
- package/file-upload/providers/local-storage.provider.js +484 -0
- package/file-upload/providers/s3-storage.provider.d.ts +87 -0
- package/file-upload/providers/s3-storage.provider.js +455 -0
- package/file-upload/services/file-signature-validator.service.d.ts +118 -0
- package/file-upload/services/file-signature-validator.service.js +376 -0
- package/file-upload/services/file.service.d.ts +193 -0
- package/file-upload/services/file.service.js +638 -0
- package/file-upload/services/index.d.ts +4 -0
- package/file-upload/services/index.js +20 -0
- package/file-upload/services/malicious-file-detector.service.d.ts +300 -0
- package/file-upload/services/malicious-file-detector.service.js +1234 -0
- package/file-upload/services/mime-registry.service.d.ts +47 -0
- package/file-upload/services/mime-registry.service.js +167 -0
- package/file-upload/utils/checksum.util.d.ts +28 -0
- package/file-upload/utils/checksum.util.js +65 -0
- package/file-upload/utils/dynamic-import.util.d.ts +54 -0
- package/file-upload/utils/dynamic-import.util.js +156 -0
- package/file-upload/utils/filename.util.d.ts +59 -0
- package/file-upload/utils/filename.util.js +184 -0
- package/file-upload/utils/filepath.util.d.ts +70 -0
- package/file-upload/utils/filepath.util.js +152 -0
- package/file-upload/utils/index.d.ts +4 -0
- package/file-upload/utils/index.js +20 -0
- package/filters/constraint-errors.js +1 -0
- package/helpers/common.helper.d.ts +13 -0
- package/helpers/common.helper.js +13 -0
- package/http-client/config/http-client.config.d.ts +20 -0
- package/http-client/config/http-client.config.js +48 -21
- package/http-client/decorators/http-client.decorators.d.ts +55 -14
- package/http-client/decorators/http-client.decorators.js +154 -78
- package/http-client/entities/http-log.entity.d.ts +217 -8
- package/http-client/entities/http-log.entity.js +7 -22
- package/http-client/errors/http-client.errors.d.ts +57 -0
- package/http-client/errors/http-client.errors.js +58 -0
- package/http-client/examples/advanced-usage.example.d.ts +40 -0
- package/http-client/examples/advanced-usage.example.js +53 -61
- package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
- package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
- package/http-client/examples/basic-usage.example.d.ts +60 -0
- package/http-client/examples/basic-usage.example.js +60 -0
- package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
- package/http-client/examples/multi-api-configuration.example.js +76 -5
- package/http-client/examples/proxy-from-environment.example.d.ts +133 -0
- package/http-client/examples/proxy-from-environment.example.js +409 -0
- package/http-client/http-client.module.d.ts +48 -2
- package/http-client/http-client.module.js +147 -68
- package/http-client/index.d.ts +1 -1
- package/http-client/index.js +8 -0
- package/http-client/interfaces/api-client-config.interface.d.ts +80 -45
- package/http-client/interfaces/api-client-config.interface.js +3 -0
- package/http-client/interfaces/http-client-config.interface.d.ts +109 -52
- package/http-client/services/api-client-registry.service.d.ts +50 -11
- package/http-client/services/api-client-registry.service.js +90 -250
- package/http-client/services/circuit-breaker.service.d.ts +115 -2
- package/http-client/services/circuit-breaker.service.js +237 -7
- package/http-client/services/http-client.service.d.ts +124 -14
- package/http-client/services/http-client.service.js +437 -148
- package/http-client/services/http-log-query.service.d.ts +83 -0
- package/http-client/services/http-log-query.service.js +121 -13
- package/http-client/services/http-replay.service.d.ts +101 -0
- package/http-client/services/http-replay.service.js +86 -0
- package/http-client/services/index.d.ts +0 -1
- package/http-client/services/index.js +0 -1
- package/http-client/services/log-cleanup.service.d.ts +63 -0
- package/http-client/services/log-cleanup.service.js +54 -2
- package/http-client/services/logging.service.d.ts +116 -7
- package/http-client/services/logging.service.js +349 -86
- package/http-client/utils/call-stack-extractor.util.d.ts +63 -0
- package/http-client/utils/call-stack-extractor.util.js +83 -0
- package/http-client/utils/context-extractor.util.d.ts +49 -0
- package/http-client/utils/context-extractor.util.js +52 -0
- package/http-client/utils/curl-generator.util.d.ts +21 -0
- package/http-client/utils/curl-generator.util.js +44 -3
- package/http-client/utils/index.d.ts +1 -0
- package/http-client/utils/index.js +1 -0
- package/http-client/utils/proxy-environment.util.d.ts +42 -0
- package/http-client/utils/proxy-environment.util.js +148 -0
- package/http-client/utils/request-id.util.d.ts +18 -0
- package/http-client/utils/request-id.util.js +20 -0
- package/http-client/utils/retry-recorder.util.d.ts +42 -0
- package/http-client/utils/retry-recorder.util.js +44 -0
- package/http-client/utils/security-validator.util.d.ts +118 -0
- package/http-client/utils/security-validator.util.js +352 -0
- package/index.d.ts +3 -1
- package/index.js +12 -1
- package/interceptors/translation-interceptor.service.js +5 -0
- package/package.json +11 -7
- package/providers/context.provider.js +2 -0
- package/providers/generator.provider.d.ts +4 -0
- package/providers/generator.provider.js +4 -0
- package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
- package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
- package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
- package/redis-lock/examples/lock-strategy.examples.js +130 -15
- package/redis-lock/index.d.ts +2 -0
- package/redis-lock/index.js +8 -1
- package/redis-lock/lock-heartbeat.service.d.ts +80 -0
- package/redis-lock/lock-heartbeat.service.js +232 -0
- package/redis-lock/redis-lock.decorator.d.ts +101 -0
- package/redis-lock/redis-lock.decorator.js +120 -0
- package/redis-lock/redis-lock.module.d.ts +66 -0
- package/redis-lock/redis-lock.module.js +175 -70
- package/redis-lock/redis-lock.service.d.ts +282 -0
- package/redis-lock/redis-lock.service.js +343 -20
- package/setup/bootstrap.setup.d.ts +1 -0
- package/setup/bootstrap.setup.js +21 -0
- package/setup/index.d.ts +1 -0
- package/setup/index.js +1 -0
- package/setup/mode.setup.d.ts +44 -0
- package/setup/mode.setup.js +44 -0
- package/setup/run-in-mode.decorator.d.ts +56 -0
- package/setup/run-in-mode.decorator.js +92 -0
- package/setup/schedule.decorator.d.ts +227 -0
- package/setup/schedule.decorator.js +240 -12
- package/setup/worker.decorator.d.ts +86 -0
- package/setup/worker.decorator.js +97 -0
- package/shared/index.d.ts +1 -1
- package/shared/index.js +1 -1
- package/shared/{serviceRegistryModule.js → service-registry.module.js} +19 -17
- package/shared/services/api-config.service.d.ts +3 -0
- package/shared/services/api-config.service.js +21 -9
- package/shared/services/index.d.ts +0 -1
- package/shared/services/index.js +0 -1
- package/validator-json/decorators.d.ts +17 -0
- package/validator-json/decorators.js +17 -2
- package/validator-json/default.d.ts +6 -0
- package/validator-json/default.js +30 -2
- package/validator-json/defaultConverters.js +1 -0
- package/validator-json/options.d.ts +23 -0
- package/validators/common-validators.d.ts +143 -0
- package/validators/common-validators.js +249 -0
- package/validators/custom-validate.examples.d.ts +23 -0
- package/validators/custom-validate.examples.js +78 -6
- package/validators/custom-validate.validator.d.ts +108 -0
- package/validators/custom-validate.validator.js +85 -0
- package/validators/file-mimetype.validator.d.ts +0 -2
- package/validators/file-mimetype.validator.js +4 -6
- package/validators/index.d.ts +1 -0
- package/validators/index.js +1 -0
- package/validators/is-exists.validator.d.ts +26 -6
- package/validators/is-exists.validator.js +30 -7
- package/validators/is-unique.validator.d.ts +33 -7
- package/validators/is-unique.validator.js +59 -17
- package/validators/skip-empty.validator.d.ts +5 -0
- package/validators/skip-empty.validator.js +5 -0
- package/vault/interfaces/vault-options.interface.d.ts +9 -0
- package/vault/vault-config.loader.d.ts +30 -0
- package/vault/vault-config.loader.js +48 -1
- package/vault/vault-config.service.d.ts +53 -0
- package/vault/vault-config.service.js +57 -0
- package/vault/vault.module.d.ts +4 -0
- package/vault/vault.module.js +4 -0
- package/decorators/examples/validation-decorators.example.d.ts +0 -69
- package/decorators/examples/validation-decorators.example.js +0 -331
- package/http-client/services/cache.service.d.ts +0 -24
- package/http-client/services/cache.service.js +0 -264
- package/shared/services/validator.service.d.ts +0 -3
- package/shared/services/validator.service.js +0 -20
- /package/shared/{serviceRegistryModule.d.ts → service-registry.module.d.ts} +0 -0
|
@@ -3,3 +3,6 @@ export * from './audit-strategy.service';
|
|
|
3
3
|
export * from './entity-audit.service';
|
|
4
4
|
export * from './transaction-audit.service';
|
|
5
5
|
export * from './multi-database.service';
|
|
6
|
+
export * from './operation-description.service';
|
|
7
|
+
export * from './manual-audit-log.service';
|
|
8
|
+
export * from './audit-action.service';
|
package/audit/services/index.js
CHANGED
|
@@ -19,3 +19,6 @@ __exportStar(require("./audit-strategy.service"), exports);
|
|
|
19
19
|
__exportStar(require("./entity-audit.service"), exports);
|
|
20
20
|
__exportStar(require("./transaction-audit.service"), exports);
|
|
21
21
|
__exportStar(require("./multi-database.service"), exports);
|
|
22
|
+
__exportStar(require("./operation-description.service"), exports);
|
|
23
|
+
__exportStar(require("./manual-audit-log.service"), exports);
|
|
24
|
+
__exportStar(require("./audit-action.service"), exports);
|
|
@@ -2,23 +2,148 @@ import { Repository, DataSource } from 'typeorm';
|
|
|
2
2
|
import { ManualOperationLogEntity, EntityTransactionEntity } from '../entities';
|
|
3
3
|
import { AuditContextService } from './audit-context.service';
|
|
4
4
|
import { ManualLogOptions } from '../interfaces';
|
|
5
|
+
import { AuditTransactionStatus } from '../enums';
|
|
6
|
+
/**
|
|
7
|
+
* 手动审计日志服务
|
|
8
|
+
*
|
|
9
|
+
* 提供标准的依赖注入方式记录操作日志
|
|
10
|
+
* @deprecated 静态方法已废弃,请使用依赖注入方式
|
|
11
|
+
*/
|
|
5
12
|
export declare class ManualAuditLogService {
|
|
6
13
|
private readonly manualLogRepository;
|
|
7
14
|
private readonly transactionRepository;
|
|
8
15
|
private readonly contextService;
|
|
9
16
|
private readonly dataSource;
|
|
10
|
-
private static instance;
|
|
11
17
|
constructor(manualLogRepository: Repository<ManualOperationLogEntity>, transactionRepository: Repository<EntityTransactionEntity>, contextService: AuditContextService, dataSource: DataSource);
|
|
12
|
-
|
|
18
|
+
/**
|
|
19
|
+
* 记录操作日志
|
|
20
|
+
*
|
|
21
|
+
* @description
|
|
22
|
+
* 支持三种记录模式:
|
|
23
|
+
* 1. 模板键模式:从数据库查找模板
|
|
24
|
+
* 2. 直接描述模式:直接传入字符串或多语言描述
|
|
25
|
+
* 3. 内联模板模式:传入多语言模板 + 参数
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // 模式1:模板键模式
|
|
29
|
+
* await this.manualAuditLogService.log({
|
|
30
|
+
* templateKey: 'user.login',
|
|
31
|
+
* descriptionParams: {
|
|
32
|
+
* username: 'john.doe',
|
|
33
|
+
* loginTime: new Date().toISOString(),
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // 模式2:直接描述模式(字符串)
|
|
39
|
+
* await this.manualAuditLogService.log({
|
|
40
|
+
* description: '用户登录系统',
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // 模式2:直接描述模式(多语言)
|
|
45
|
+
* await this.manualAuditLogService.log({
|
|
46
|
+
* description: {
|
|
47
|
+
* zh: '用户登录系统',
|
|
48
|
+
* en: 'User logged in',
|
|
49
|
+
* },
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // 模式3:内联模板模式
|
|
54
|
+
* await this.manualAuditLogService.log({
|
|
55
|
+
* descriptionTemplate: {
|
|
56
|
+
* zh: '用户 {username} 在 {time} 登录了系统',
|
|
57
|
+
* en: 'User {username} logged in at {time}',
|
|
58
|
+
* },
|
|
59
|
+
* descriptionParams: {
|
|
60
|
+
* username: 'john.doe',
|
|
61
|
+
* time: new Date().toISOString(),
|
|
62
|
+
* },
|
|
63
|
+
* });
|
|
64
|
+
*/
|
|
65
|
+
log(options: ManualLogOptions): Promise<ManualOperationLogEntity>;
|
|
66
|
+
/**
|
|
67
|
+
* 实例方法:记录操作日志
|
|
68
|
+
*/
|
|
13
69
|
logOperation(options: ManualLogOptions): Promise<ManualOperationLogEntity>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
70
|
+
/**
|
|
71
|
+
* 开始事务
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const txId = await this.manualAuditLogService.beginTransaction('user-123', 'John Doe');
|
|
76
|
+
*
|
|
77
|
+
* await this.manualAuditLogService.log({
|
|
78
|
+
* templateKey: 'order.create',
|
|
79
|
+
* descriptionParams: { orderId: 'order-1' },
|
|
80
|
+
* transactionId: txId,
|
|
81
|
+
* autoCreateTransaction: false,
|
|
82
|
+
* });
|
|
83
|
+
*
|
|
84
|
+
* await this.manualAuditLogService.log({
|
|
85
|
+
* templateKey: 'payment.process',
|
|
86
|
+
* descriptionParams: { paymentId: 'pay-1' },
|
|
87
|
+
* transactionId: txId,
|
|
88
|
+
* autoCreateTransaction: false,
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* await this.manualAuditLogService.commitTransaction(txId);
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
beginTransaction(userId?: string, username?: string): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* 提交事务
|
|
97
|
+
*/
|
|
98
|
+
commitTransaction(transactionId: string): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* 回滚事务
|
|
101
|
+
*/
|
|
102
|
+
rollbackTransaction(transactionId: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* 创建事务
|
|
105
|
+
*/
|
|
106
|
+
createTransaction(userId?: string, username?: string): Promise<string>;
|
|
107
|
+
/**
|
|
108
|
+
* 更新事务状态
|
|
109
|
+
*/
|
|
110
|
+
updateTransactionStatus(transactionId: string, status: AuditTransactionStatus): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* 生成事务ID
|
|
113
|
+
*/
|
|
19
114
|
private generateTransactionId;
|
|
20
|
-
|
|
21
|
-
|
|
115
|
+
/**
|
|
116
|
+
* 批量记录操作日志
|
|
117
|
+
*
|
|
118
|
+
* @description
|
|
119
|
+
* 批量记录多个操作,支持所有三种记录模式
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* // 混合使用多种模式
|
|
124
|
+
* await this.manualAuditLogService.logBatch([
|
|
125
|
+
* {
|
|
126
|
+
* templateKey: 'product.update',
|
|
127
|
+
* descriptionParams: { productId: 'p1', field: 'price' },
|
|
128
|
+
* },
|
|
129
|
+
* {
|
|
130
|
+
* description: '批量更新库存',
|
|
131
|
+
* },
|
|
132
|
+
* {
|
|
133
|
+
* descriptionTemplate: {
|
|
134
|
+
* zh: '更新产品 {productId} 的 {field}',
|
|
135
|
+
* en: 'Update {field} of product {productId}',
|
|
136
|
+
* },
|
|
137
|
+
* descriptionParams: { productId: 'p3', field: 'stock' },
|
|
138
|
+
* },
|
|
139
|
+
* ]);
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
logBatch(operations: ManualLogOptions[], sharedTransactionId?: string): Promise<ManualOperationLogEntity[]>;
|
|
143
|
+
/**
|
|
144
|
+
* 查询操作日志
|
|
145
|
+
*/
|
|
146
|
+
findLogs(options: {
|
|
22
147
|
templateKey?: string;
|
|
23
148
|
userId?: string;
|
|
24
149
|
transactionId?: string;
|
|
@@ -20,7 +20,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
20
20
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
|
-
var ManualAuditLogService_1;
|
|
24
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
24
|
exports.ManualAuditLogService = void 0;
|
|
26
25
|
const common_1 = require("@nestjs/common");
|
|
@@ -30,46 +29,109 @@ const entities_1 = require("../entities");
|
|
|
30
29
|
const audit_context_service_1 = require("./audit-context.service");
|
|
31
30
|
const enums_1 = require("../enums");
|
|
32
31
|
const crypto_1 = require("crypto");
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* 手动审计日志服务
|
|
34
|
+
*
|
|
35
|
+
* 提供标准的依赖注入方式记录操作日志
|
|
36
|
+
* @deprecated 静态方法已废弃,请使用依赖注入方式
|
|
37
|
+
*/
|
|
38
|
+
let ManualAuditLogService = class ManualAuditLogService {
|
|
34
39
|
constructor(manualLogRepository, transactionRepository, contextService, dataSource) {
|
|
35
40
|
this.manualLogRepository = manualLogRepository;
|
|
36
41
|
this.transactionRepository = transactionRepository;
|
|
37
42
|
this.contextService = contextService;
|
|
38
43
|
this.dataSource = dataSource;
|
|
39
|
-
ManualAuditLogService_1.instance = this;
|
|
40
44
|
}
|
|
41
|
-
|
|
45
|
+
/**
|
|
46
|
+
* 记录操作日志
|
|
47
|
+
*
|
|
48
|
+
* @description
|
|
49
|
+
* 支持三种记录模式:
|
|
50
|
+
* 1. 模板键模式:从数据库查找模板
|
|
51
|
+
* 2. 直接描述模式:直接传入字符串或多语言描述
|
|
52
|
+
* 3. 内联模板模式:传入多语言模板 + 参数
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // 模式1:模板键模式
|
|
56
|
+
* await this.manualAuditLogService.log({
|
|
57
|
+
* templateKey: 'user.login',
|
|
58
|
+
* descriptionParams: {
|
|
59
|
+
* username: 'john.doe',
|
|
60
|
+
* loginTime: new Date().toISOString(),
|
|
61
|
+
* },
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // 模式2:直接描述模式(字符串)
|
|
66
|
+
* await this.manualAuditLogService.log({
|
|
67
|
+
* description: '用户登录系统',
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* // 模式2:直接描述模式(多语言)
|
|
72
|
+
* await this.manualAuditLogService.log({
|
|
73
|
+
* description: {
|
|
74
|
+
* zh: '用户登录系统',
|
|
75
|
+
* en: 'User logged in',
|
|
76
|
+
* },
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // 模式3:内联模板模式
|
|
81
|
+
* await this.manualAuditLogService.log({
|
|
82
|
+
* descriptionTemplate: {
|
|
83
|
+
* zh: '用户 {username} 在 {time} 登录了系统',
|
|
84
|
+
* en: 'User {username} logged in at {time}',
|
|
85
|
+
* },
|
|
86
|
+
* descriptionParams: {
|
|
87
|
+
* username: 'john.doe',
|
|
88
|
+
* time: new Date().toISOString(),
|
|
89
|
+
* },
|
|
90
|
+
* });
|
|
91
|
+
*/
|
|
92
|
+
log(options) {
|
|
42
93
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
|
|
44
|
-
throw new Error('ManualAuditLogService is not initialized. Make sure AuditModule is imported.');
|
|
45
|
-
}
|
|
46
|
-
return ManualAuditLogService_1.instance.logOperation(options);
|
|
94
|
+
return this.logOperation(options);
|
|
47
95
|
});
|
|
48
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* 实例方法:记录操作日志
|
|
99
|
+
*/
|
|
49
100
|
logOperation(options) {
|
|
50
101
|
return __awaiter(this, void 0, void 0, function* () {
|
|
51
102
|
const { templateKey, description, descriptionTemplate, descriptionParams, userId, username, requestIp, rollbackActions, transactionId, autoCreateTransaction = true, } = options;
|
|
103
|
+
// 验证参数:至少提供一种模式
|
|
52
104
|
if (!templateKey && !description && !descriptionTemplate) {
|
|
53
105
|
throw new Error('ManualAuditLogService.log() requires one of: templateKey, description, or descriptionTemplate');
|
|
54
106
|
}
|
|
107
|
+
// 验证参数冲突
|
|
55
108
|
const modeCount = [templateKey, description, descriptionTemplate].filter(Boolean).length;
|
|
56
109
|
if (modeCount > 1) {
|
|
57
110
|
throw new Error('ManualAuditLogService.log() accepts only one mode: use either templateKey, description, or descriptionTemplate');
|
|
58
111
|
}
|
|
112
|
+
// 获取当前上下文(如果有)
|
|
59
113
|
const context = yield this.contextService.getCurrentContext();
|
|
114
|
+
// 合并用户信息(优先使用传入的参数)
|
|
60
115
|
const finalUserId = userId || context.userId || 'system';
|
|
61
116
|
const finalUsername = username || context.username || 'system';
|
|
62
117
|
const finalRequestIp = requestIp || context.requestIp || 'unknown';
|
|
118
|
+
// 生成或使用事务ID
|
|
63
119
|
let finalTransactionId = transactionId || context.transactionId;
|
|
64
120
|
if (!finalTransactionId && autoCreateTransaction) {
|
|
121
|
+
// 自动创建事务
|
|
65
122
|
finalTransactionId = yield this.createTransaction(finalUserId, finalUsername);
|
|
66
123
|
}
|
|
124
|
+
// 创建手动操作日志
|
|
67
125
|
const manualLog = this.manualLogRepository.create({
|
|
68
126
|
transactionId: finalTransactionId,
|
|
127
|
+
// 模式1: 模板键模式
|
|
69
128
|
operationTemplateKey: templateKey || null,
|
|
70
129
|
descriptionParams: descriptionParams || null,
|
|
130
|
+
// 模式2: 直接描���模式
|
|
71
131
|
directDescription: description || null,
|
|
132
|
+
// 模式3: 内联模板模式
|
|
72
133
|
inlineTemplate: descriptionTemplate || null,
|
|
134
|
+
// 通用字段
|
|
73
135
|
userId: finalUserId,
|
|
74
136
|
username: finalUsername,
|
|
75
137
|
requestIp: finalRequestIp,
|
|
@@ -78,30 +140,54 @@ let ManualAuditLogService = ManualAuditLogService_1 = class ManualAuditLogServic
|
|
|
78
140
|
return this.manualLogRepository.save(manualLog);
|
|
79
141
|
});
|
|
80
142
|
}
|
|
81
|
-
|
|
143
|
+
/**
|
|
144
|
+
* 开始事务
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* const txId = await this.manualAuditLogService.beginTransaction('user-123', 'John Doe');
|
|
149
|
+
*
|
|
150
|
+
* await this.manualAuditLogService.log({
|
|
151
|
+
* templateKey: 'order.create',
|
|
152
|
+
* descriptionParams: { orderId: 'order-1' },
|
|
153
|
+
* transactionId: txId,
|
|
154
|
+
* autoCreateTransaction: false,
|
|
155
|
+
* });
|
|
156
|
+
*
|
|
157
|
+
* await this.manualAuditLogService.log({
|
|
158
|
+
* templateKey: 'payment.process',
|
|
159
|
+
* descriptionParams: { paymentId: 'pay-1' },
|
|
160
|
+
* transactionId: txId,
|
|
161
|
+
* autoCreateTransaction: false,
|
|
162
|
+
* });
|
|
163
|
+
*
|
|
164
|
+
* await this.manualAuditLogService.commitTransaction(txId);
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
beginTransaction(userId, username) {
|
|
82
168
|
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
|
|
84
|
-
throw new Error('ManualAuditLogService is not initialized');
|
|
85
|
-
}
|
|
86
|
-
return ManualAuditLogService_1.instance.createTransaction(userId, username);
|
|
169
|
+
return this.createTransaction(userId, username);
|
|
87
170
|
});
|
|
88
171
|
}
|
|
89
|
-
|
|
172
|
+
/**
|
|
173
|
+
* 提交事务
|
|
174
|
+
*/
|
|
175
|
+
commitTransaction(transactionId) {
|
|
90
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
|
|
92
|
-
throw new Error('ManualAuditLogService is not initialized');
|
|
93
|
-
}
|
|
94
|
-
yield ManualAuditLogService_1.instance.updateTransactionStatus(transactionId, enums_1.TransactionStatus.COMMITTED);
|
|
177
|
+
yield this.updateTransactionStatus(transactionId, enums_1.AuditTransactionStatus.COMMITTED);
|
|
95
178
|
});
|
|
96
179
|
}
|
|
97
|
-
|
|
180
|
+
/**
|
|
181
|
+
* 回滚事务
|
|
182
|
+
*/
|
|
183
|
+
rollbackTransaction(transactionId) {
|
|
98
184
|
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
-
|
|
100
|
-
throw new Error('ManualAuditLogService is not initialized');
|
|
101
|
-
}
|
|
102
|
-
yield ManualAuditLogService_1.instance.updateTransactionStatus(transactionId, enums_1.TransactionStatus.ROLLED_BACK);
|
|
185
|
+
yield this.updateTransactionStatus(transactionId, enums_1.AuditTransactionStatus.ROLLED_BACK);
|
|
103
186
|
});
|
|
104
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* 创建事务
|
|
190
|
+
*/
|
|
105
191
|
createTransaction(userId, username) {
|
|
106
192
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
193
|
const context = yield this.contextService.getCurrentContext();
|
|
@@ -110,46 +196,77 @@ let ManualAuditLogService = ManualAuditLogService_1 = class ManualAuditLogServic
|
|
|
110
196
|
userId: userId || context.userId || 'system',
|
|
111
197
|
username: username || context.username || 'system',
|
|
112
198
|
requestIp: context.requestIp || 'unknown',
|
|
113
|
-
status: enums_1.
|
|
199
|
+
status: enums_1.AuditTransactionStatus.PENDING,
|
|
114
200
|
entities: [],
|
|
115
201
|
});
|
|
116
202
|
const saved = yield this.transactionRepository.save(transaction);
|
|
117
203
|
return saved.id;
|
|
118
204
|
});
|
|
119
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* 更新事务状态
|
|
208
|
+
*/
|
|
120
209
|
updateTransactionStatus(transactionId, status) {
|
|
121
210
|
return __awaiter(this, void 0, void 0, function* () {
|
|
122
211
|
yield this.transactionRepository.update({ id: transactionId }, { status });
|
|
123
212
|
});
|
|
124
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* 生成事务ID
|
|
216
|
+
*/
|
|
125
217
|
generateTransactionId() {
|
|
126
218
|
return `txn-${Date.now()}-${(0, crypto_1.randomBytes)(8).toString('hex')}`;
|
|
127
219
|
}
|
|
128
|
-
|
|
220
|
+
/**
|
|
221
|
+
* 批量记录操作日志
|
|
222
|
+
*
|
|
223
|
+
* @description
|
|
224
|
+
* 批量记录多个操作,支持所有三种记录模式
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```typescript
|
|
228
|
+
* // 混合使用多种模式
|
|
229
|
+
* await this.manualAuditLogService.logBatch([
|
|
230
|
+
* {
|
|
231
|
+
* templateKey: 'product.update',
|
|
232
|
+
* descriptionParams: { productId: 'p1', field: 'price' },
|
|
233
|
+
* },
|
|
234
|
+
* {
|
|
235
|
+
* description: '批量更新库存',
|
|
236
|
+
* },
|
|
237
|
+
* {
|
|
238
|
+
* descriptionTemplate: {
|
|
239
|
+
* zh: '更新产品 {productId} 的 {field}',
|
|
240
|
+
* en: 'Update {field} of product {productId}',
|
|
241
|
+
* },
|
|
242
|
+
* descriptionParams: { productId: 'p3', field: 'stock' },
|
|
243
|
+
* },
|
|
244
|
+
* ]);
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
logBatch(operations, sharedTransactionId) {
|
|
129
248
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
const transactionId = sharedTransactionId ||
|
|
134
|
-
(yield ManualAuditLogService_1.instance.createTransaction());
|
|
249
|
+
// 创建共享事务ID
|
|
250
|
+
const transactionId = sharedTransactionId || (yield this.createTransaction());
|
|
135
251
|
const results = [];
|
|
136
252
|
for (const operation of operations) {
|
|
137
|
-
const result = yield
|
|
253
|
+
const result = yield this.logOperation(Object.assign(Object.assign({}, operation), { transactionId, autoCreateTransaction: false }));
|
|
138
254
|
results.push(result);
|
|
139
255
|
}
|
|
256
|
+
// 自动提交事务(如果是自动创建的)
|
|
140
257
|
if (!sharedTransactionId) {
|
|
141
|
-
yield
|
|
258
|
+
yield this.updateTransactionStatus(transactionId, enums_1.AuditTransactionStatus.COMMITTED);
|
|
142
259
|
}
|
|
143
260
|
return results;
|
|
144
261
|
});
|
|
145
262
|
}
|
|
146
|
-
|
|
263
|
+
/**
|
|
264
|
+
* 查询操作日志
|
|
265
|
+
*/
|
|
266
|
+
findLogs(options) {
|
|
147
267
|
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
-
if (!ManualAuditLogService_1.instance) {
|
|
149
|
-
throw new Error('ManualAuditLogService is not initialized');
|
|
150
|
-
}
|
|
151
268
|
const { templateKey, userId, transactionId, startTime, endTime, limit = 100 } = options;
|
|
152
|
-
const query =
|
|
269
|
+
const query = this.manualLogRepository
|
|
153
270
|
.createQueryBuilder('log')
|
|
154
271
|
.orderBy('log.createdAt', 'DESC')
|
|
155
272
|
.take(limit);
|
|
@@ -173,10 +290,10 @@ let ManualAuditLogService = ManualAuditLogService_1 = class ManualAuditLogServic
|
|
|
173
290
|
}
|
|
174
291
|
};
|
|
175
292
|
exports.ManualAuditLogService = ManualAuditLogService;
|
|
176
|
-
exports.ManualAuditLogService = ManualAuditLogService =
|
|
293
|
+
exports.ManualAuditLogService = ManualAuditLogService = __decorate([
|
|
177
294
|
(0, common_1.Injectable)(),
|
|
178
|
-
__param(0, (0, typeorm_1.InjectRepository)(entities_1.ManualOperationLogEntity
|
|
179
|
-
__param(1, (0, typeorm_1.InjectRepository)(entities_1.EntityTransactionEntity
|
|
295
|
+
__param(0, (0, typeorm_1.InjectRepository)(entities_1.ManualOperationLogEntity)),
|
|
296
|
+
__param(1, (0, typeorm_1.InjectRepository)(entities_1.EntityTransactionEntity)),
|
|
180
297
|
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
181
298
|
typeorm_2.Repository,
|
|
182
299
|
audit_context_service_1.AuditContextService,
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
1
|
import { ModuleRef } from '@nestjs/core';
|
|
2
|
+
/**
|
|
3
|
+
* 多数据库连接管理服务
|
|
4
|
+
*/
|
|
3
5
|
export declare class MultiDatabaseService {
|
|
4
6
|
private readonly moduleRef;
|
|
5
7
|
private readonly config?;
|
|
6
8
|
constructor(moduleRef: ModuleRef, config?: any);
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* 获取所有监听的数据库连接
|
|
11
|
+
*/
|
|
8
12
|
getMonitoredConnections(): string[];
|
|
13
|
+
/**
|
|
14
|
+
* 获取审计日志存储的数据库连接
|
|
15
|
+
*/
|
|
9
16
|
getAuditConnection(): string;
|
|
10
17
|
}
|
|
@@ -11,40 +11,28 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
15
|
exports.MultiDatabaseService = void 0;
|
|
25
16
|
const common_1 = require("@nestjs/common");
|
|
26
|
-
const typeorm_1 = require("@nestjs/typeorm");
|
|
27
17
|
const core_1 = require("@nestjs/core");
|
|
18
|
+
/**
|
|
19
|
+
* 多数据库连接管理服务
|
|
20
|
+
*/
|
|
28
21
|
let MultiDatabaseService = class MultiDatabaseService {
|
|
29
22
|
constructor(moduleRef, config) {
|
|
30
23
|
this.moduleRef = moduleRef;
|
|
31
24
|
this.config = config;
|
|
32
25
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const dataSource = this.moduleRef.get((0, typeorm_1.getDataSourceToken)(connectionName), { strict: false });
|
|
37
|
-
return dataSource;
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
throw new Error(`Failed to get DataSource for connection: ${connectionName}`);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
26
|
+
/**
|
|
27
|
+
* 获取所有监听的数据库连接
|
|
28
|
+
*/
|
|
44
29
|
getMonitoredConnections() {
|
|
45
30
|
var _a, _b;
|
|
46
31
|
return ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.connections) === null || _b === void 0 ? void 0 : _b.monitored) || ['default'];
|
|
47
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* 获取审计日志存储的数据库连接
|
|
35
|
+
*/
|
|
48
36
|
getAuditConnection() {
|
|
49
37
|
var _a, _b;
|
|
50
38
|
return ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.connections) === null || _b === void 0 ? void 0 : _b.audit) || 'default';
|
|
@@ -1,21 +1,90 @@
|
|
|
1
1
|
import { Repository } from 'typeorm';
|
|
2
2
|
import { OperationTemplateEntity, EntityTransactionEntity, EntityAuditLogEntity, ManualOperationLogEntity } from '../entities';
|
|
3
3
|
import { ChangeDetail, TransactionDescription } from '../interfaces';
|
|
4
|
+
import { CacheService } from '../../cache';
|
|
5
|
+
/**
|
|
6
|
+
* 操作描述服务
|
|
7
|
+
* 负责根据模板和参数动态生成多语言描述
|
|
8
|
+
*/
|
|
4
9
|
export declare class OperationDescriptionService {
|
|
5
10
|
private readonly templateRepository;
|
|
6
11
|
private readonly transactionRepository;
|
|
7
12
|
private readonly auditLogRepository;
|
|
8
13
|
private readonly manualOperationRepository;
|
|
9
|
-
private
|
|
10
|
-
|
|
14
|
+
private readonly cacheService;
|
|
15
|
+
private readonly CACHE_NAMESPACE;
|
|
16
|
+
private readonly CACHE_TTL;
|
|
17
|
+
constructor(templateRepository: Repository<OperationTemplateEntity>, transactionRepository: Repository<EntityTransactionEntity>, auditLogRepository: Repository<EntityAuditLogEntity>, manualOperationRepository: Repository<ManualOperationLogEntity>, cacheService: CacheService);
|
|
18
|
+
/**
|
|
19
|
+
* 动态生成操作名称
|
|
20
|
+
* @param templateKey 模板键
|
|
21
|
+
* @param language 语言
|
|
22
|
+
* @returns 操作名称
|
|
23
|
+
*/
|
|
11
24
|
generateOperationName(templateKey: string, language?: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* 动态生成操作描述
|
|
27
|
+
* @param templateKey 模板键
|
|
28
|
+
* @param descriptionParams 描述参数
|
|
29
|
+
* @param language 语言
|
|
30
|
+
* @returns 描述文本
|
|
31
|
+
*/
|
|
12
32
|
generateDescription(templateKey: string, descriptionParams: Record<string, any>, language?: string): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* 动态生成变更详情
|
|
35
|
+
* @param changeDetails 变更详情列表
|
|
36
|
+
* @param language 语言
|
|
37
|
+
* @returns 格式化的变更详情
|
|
38
|
+
*/
|
|
13
39
|
generateChangeDetails(changeDetails: ChangeDetail[], language?: string): Promise<any[]>;
|
|
40
|
+
/**
|
|
41
|
+
* 获取事务描述(包含所有变更)
|
|
42
|
+
* @param transactionId 事务ID
|
|
43
|
+
* @param language 语言
|
|
44
|
+
* @returns 事务描述对象
|
|
45
|
+
*/
|
|
14
46
|
getTransactionDescription(transactionId: string, language?: string): Promise<TransactionDescription>;
|
|
47
|
+
/**
|
|
48
|
+
* 批量获取事务描述
|
|
49
|
+
* @param transactionIds 事务ID列表
|
|
50
|
+
* @param language 语言
|
|
51
|
+
* @returns 事务描述映射
|
|
52
|
+
*/
|
|
15
53
|
batchGetTransactionDescriptions(transactionIds: string[], language?: string): Promise<Record<string, TransactionDescription>>;
|
|
54
|
+
/**
|
|
55
|
+
* 填充模板
|
|
56
|
+
* @param template 模板字符串
|
|
57
|
+
* @param params 参数
|
|
58
|
+
* @returns 填充后的字符串
|
|
59
|
+
*/
|
|
16
60
|
private fillTemplate;
|
|
61
|
+
/**
|
|
62
|
+
* 格式化显示值
|
|
63
|
+
* @param value 原始值
|
|
64
|
+
* @param displayValue 显示值
|
|
65
|
+
* @returns 格式化后的值
|
|
66
|
+
*/
|
|
17
67
|
private formatDisplayValue;
|
|
68
|
+
/**
|
|
69
|
+
* 获取操作模板(使用统一缓存服务)
|
|
70
|
+
* @param templateKey 模板键
|
|
71
|
+
* @returns 操作模板
|
|
72
|
+
*/
|
|
18
73
|
private getOperationTemplate;
|
|
74
|
+
/**
|
|
75
|
+
* 获取模板字符串(仅返回模板文本,不填充参数)
|
|
76
|
+
* @param templateKey 模板键
|
|
77
|
+
* @param language 语言
|
|
78
|
+
* @returns 模板字符串
|
|
79
|
+
*/
|
|
80
|
+
getTemplate(templateKey: string, language?: string): Promise<string | null>;
|
|
81
|
+
/**
|
|
82
|
+
* 清除模板缓存
|
|
83
|
+
*/
|
|
19
84
|
clearTemplateCache(): void;
|
|
85
|
+
/**
|
|
86
|
+
* 预加载模板到缓存
|
|
87
|
+
* @param templateKeys 模板键列表
|
|
88
|
+
*/
|
|
20
89
|
preloadTemplates(templateKeys: string[]): Promise<void>;
|
|
21
90
|
}
|