@pangza/express 0.0.0-stage → 1.0.2
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/Application/callbackArgs.d.ts +5 -0
- package/Application/callbackArgs.d.ts.map +1 -0
- package/Application/callbackArgs.js +98 -0
- package/Application/callbackArgs.js.map +1 -0
- package/Application/decorators.d.ts +29 -0
- package/Application/decorators.d.ts.map +1 -0
- package/Application/decorators.js +181 -0
- package/Application/decorators.js.map +1 -0
- package/Application/index.d.ts +58 -0
- package/Application/index.d.ts.map +1 -0
- package/Application/index.js +573 -0
- package/Application/index.js.map +1 -0
- package/Application/interceptors.d.ts +27 -0
- package/Application/interceptors.d.ts.map +1 -0
- package/Application/interceptors.js +58 -0
- package/Application/interceptors.js.map +1 -0
- package/Application/lifecycle.d.ts +8 -0
- package/Application/lifecycle.d.ts.map +1 -0
- package/Application/lifecycle.js +96 -0
- package/Application/lifecycle.js.map +1 -0
- package/Application/metadata.d.ts +32 -0
- package/Application/metadata.d.ts.map +1 -0
- package/Application/metadata.js +230 -0
- package/Application/metadata.js.map +1 -0
- package/Application/processGuards.d.ts +2 -0
- package/Application/processGuards.d.ts.map +1 -0
- package/Application/processGuards.js +18 -0
- package/Application/processGuards.js.map +1 -0
- package/Application/types.d.ts +42 -0
- package/Application/types.d.ts.map +1 -0
- package/Application/types.js +13 -0
- package/Application/types.js.map +1 -0
- package/Application/warmup.d.ts +2 -0
- package/Application/warmup.d.ts.map +1 -0
- package/Application/warmup.js +78 -0
- package/Application/warmup.js.map +1 -0
- package/Auth/AuthUtil.d.ts +36 -0
- package/Auth/AuthUtil.d.ts.map +1 -0
- package/Auth/AuthUtil.js +305 -0
- package/Auth/AuthUtil.js.map +1 -0
- package/Auth/context.d.ts +5 -0
- package/Auth/context.d.ts.map +1 -0
- package/Auth/context.js +10 -0
- package/Auth/context.js.map +1 -0
- package/Auth/errors.d.ts +15 -0
- package/Auth/errors.d.ts.map +1 -0
- package/Auth/errors.js +34 -0
- package/Auth/errors.js.map +1 -0
- package/Auth/flag.d.ts +2 -0
- package/Auth/flag.d.ts.map +1 -0
- package/Auth/flag.js +5 -0
- package/Auth/flag.js.map +1 -0
- package/Auth/index.d.ts +11 -0
- package/Auth/index.d.ts.map +1 -0
- package/Auth/index.js +128 -0
- package/Auth/index.js.map +1 -0
- package/Auth/store.d.ts +47 -0
- package/Auth/store.d.ts.map +1 -0
- package/Auth/store.js +151 -0
- package/Auth/store.js.map +1 -0
- package/Auth/token.d.ts +10 -0
- package/Auth/token.d.ts.map +1 -0
- package/Auth/token.js +74 -0
- package/Auth/token.js.map +1 -0
- package/Auth/types.d.ts +76 -0
- package/Auth/types.d.ts.map +1 -0
- package/Auth/types.js +3 -0
- package/Auth/types.js.map +1 -0
- package/Exception/decorators.d.ts +4 -0
- package/Exception/decorators.d.ts.map +1 -0
- package/Exception/decorators.js +40 -0
- package/Exception/decorators.js.map +1 -0
- package/Exception/handler.d.ts +3 -0
- package/Exception/handler.d.ts.map +1 -0
- package/Exception/handler.js +96 -0
- package/Exception/handler.js.map +1 -0
- package/Exception/index.d.ts +9 -0
- package/Exception/index.d.ts.map +1 -0
- package/Exception/index.js +34 -0
- package/Exception/index.js.map +1 -0
- package/Exception/registry.d.ts +6 -0
- package/Exception/registry.d.ts.map +1 -0
- package/Exception/registry.js +60 -0
- package/Exception/registry.js.map +1 -0
- package/Exception/types.d.ts +27 -0
- package/Exception/types.d.ts.map +1 -0
- package/Exception/types.js +15 -0
- package/Exception/types.js.map +1 -0
- package/Json/ObjectMapper.d.ts +13 -0
- package/Json/ObjectMapper.d.ts.map +1 -0
- package/Json/ObjectMapper.js +184 -0
- package/Json/ObjectMapper.js.map +1 -0
- package/Json/beanKeys.d.ts +3 -0
- package/Json/beanKeys.d.ts.map +1 -0
- package/Json/beanKeys.js +29 -0
- package/Json/beanKeys.js.map +1 -0
- package/Json/convert.d.ts +11 -0
- package/Json/convert.d.ts.map +1 -0
- package/Json/convert.js +89 -0
- package/Json/convert.js.map +1 -0
- package/Json/decorators.d.ts +15 -0
- package/Json/decorators.d.ts.map +1 -0
- package/Json/decorators.js +80 -0
- package/Json/decorators.js.map +1 -0
- package/Json/index.d.ts +13 -0
- package/Json/index.d.ts.map +1 -0
- package/Json/index.js +39 -0
- package/Json/index.js.map +1 -0
- package/Json/types.d.ts +27 -0
- package/Json/types.d.ts.map +1 -0
- package/Json/types.js +11 -0
- package/Json/types.js.map +1 -0
- package/Log/decorators.d.ts +3 -0
- package/Log/decorators.d.ts.map +1 -0
- package/Log/decorators.js +10 -0
- package/Log/decorators.js.map +1 -0
- package/Log/flag.d.ts +2 -0
- package/Log/flag.d.ts.map +1 -0
- package/Log/flag.js +5 -0
- package/Log/flag.js.map +1 -0
- package/Log/index.d.ts +9 -0
- package/Log/index.d.ts.map +1 -0
- package/Log/index.js +33 -0
- package/Log/index.js.map +1 -0
- package/Log/ip.d.ts +14 -0
- package/Log/ip.d.ts.map +1 -0
- package/Log/ip.js +125 -0
- package/Log/ip.js.map +1 -0
- package/Log/recorder.d.ts +18 -0
- package/Log/recorder.d.ts.map +1 -0
- package/Log/recorder.js +144 -0
- package/Log/recorder.js.map +1 -0
- package/Log/types.d.ts +53 -0
- package/Log/types.d.ts.map +1 -0
- package/Log/types.js +21 -0
- package/Log/types.js.map +1 -0
- package/Logger/index.d.ts +18 -0
- package/Logger/index.d.ts.map +1 -0
- package/Logger/index.js +150 -0
- package/Logger/index.js.map +1 -0
- package/Logger/types.d.ts +13 -0
- package/Logger/types.d.ts.map +1 -0
- package/Logger/types.js +3 -0
- package/Logger/types.js.map +1 -0
- package/ORM/BaseMapper.d.ts +54 -0
- package/ORM/BaseMapper.d.ts.map +1 -0
- package/ORM/BaseMapper.js +593 -0
- package/ORM/BaseMapper.js.map +1 -0
- package/ORM/DataSource.d.ts +47 -0
- package/ORM/DataSource.d.ts.map +1 -0
- package/ORM/DataSource.js +336 -0
- package/ORM/DataSource.js.map +1 -0
- package/ORM/Db.d.ts +43 -0
- package/ORM/Db.d.ts.map +1 -0
- package/ORM/Db.js +198 -0
- package/ORM/Db.js.map +1 -0
- package/ORM/IdType.d.ts +10 -0
- package/ORM/IdType.d.ts.map +1 -0
- package/ORM/IdType.js +22 -0
- package/ORM/IdType.js.map +1 -0
- package/ORM/QueryWrapper.d.ts +58 -0
- package/ORM/QueryWrapper.d.ts.map +1 -0
- package/ORM/QueryWrapper.js +289 -0
- package/ORM/QueryWrapper.js.map +1 -0
- package/ORM/config.d.ts +6 -0
- package/ORM/config.d.ts.map +1 -0
- package/ORM/config.js +70 -0
- package/ORM/config.js.map +1 -0
- package/ORM/dialect.d.ts +24 -0
- package/ORM/dialect.d.ts.map +1 -0
- package/ORM/dialect.js +169 -0
- package/ORM/dialect.js.map +1 -0
- package/ORM/enable.d.ts +4 -0
- package/ORM/enable.d.ts.map +1 -0
- package/ORM/enable.js +23 -0
- package/ORM/enable.js.map +1 -0
- package/ORM/entityDecorators.d.ts +39 -0
- package/ORM/entityDecorators.d.ts.map +1 -0
- package/ORM/entityDecorators.js +131 -0
- package/ORM/entityDecorators.js.map +1 -0
- package/ORM/errors.d.ts +9 -0
- package/ORM/errors.d.ts.map +1 -0
- package/ORM/errors.js +20 -0
- package/ORM/errors.js.map +1 -0
- package/ORM/fieldSelect.d.ts +25 -0
- package/ORM/fieldSelect.d.ts.map +1 -0
- package/ORM/fieldSelect.js +49 -0
- package/ORM/fieldSelect.js.map +1 -0
- package/ORM/fill.d.ts +6 -0
- package/ORM/fill.d.ts.map +1 -0
- package/ORM/fill.js +45 -0
- package/ORM/fill.js.map +1 -0
- package/ORM/flag.d.ts +4 -0
- package/ORM/flag.d.ts.map +1 -0
- package/ORM/flag.js +14 -0
- package/ORM/flag.js.map +1 -0
- package/ORM/hydrate.d.ts +12 -0
- package/ORM/hydrate.d.ts.map +1 -0
- package/ORM/hydrate.js +304 -0
- package/ORM/hydrate.js.map +1 -0
- package/ORM/identifier.d.ts +8 -0
- package/ORM/identifier.d.ts.map +1 -0
- package/ORM/identifier.js +47 -0
- package/ORM/identifier.js.map +1 -0
- package/ORM/index.d.ts +41 -0
- package/ORM/index.d.ts.map +1 -0
- package/ORM/index.js +119 -0
- package/ORM/index.js.map +1 -0
- package/ORM/relation.d.ts +53 -0
- package/ORM/relation.d.ts.map +1 -0
- package/ORM/relation.js +143 -0
- package/ORM/relation.js.map +1 -0
- package/ORM/resultMap.d.ts +3 -0
- package/ORM/resultMap.d.ts.map +1 -0
- package/ORM/resultMap.js +21 -0
- package/ORM/resultMap.js.map +1 -0
- package/ORM/security.d.ts +5 -0
- package/ORM/security.d.ts.map +1 -0
- package/ORM/security.js +39 -0
- package/ORM/security.js.map +1 -0
- package/ORM/sqlDecorators.d.ts +15 -0
- package/ORM/sqlDecorators.d.ts.map +1 -0
- package/ORM/sqlDecorators.js +106 -0
- package/ORM/sqlDecorators.js.map +1 -0
- package/ORM/sqlLog.d.ts +20 -0
- package/ORM/sqlLog.d.ts.map +1 -0
- package/ORM/sqlLog.js +172 -0
- package/ORM/sqlLog.js.map +1 -0
- package/ORM/sqlTemplate.d.ts +13 -0
- package/ORM/sqlTemplate.d.ts.map +1 -0
- package/ORM/sqlTemplate.js +89 -0
- package/ORM/sqlTemplate.js.map +1 -0
- package/ORM/table.d.ts +8 -0
- package/ORM/table.d.ts.map +1 -0
- package/ORM/table.js +45 -0
- package/ORM/table.js.map +1 -0
- package/ORM/tableSearch.d.ts +43 -0
- package/ORM/tableSearch.d.ts.map +1 -0
- package/ORM/tableSearch.js +205 -0
- package/ORM/tableSearch.js.map +1 -0
- package/ORM/transactional.d.ts +7 -0
- package/ORM/transactional.d.ts.map +1 -0
- package/ORM/transactional.js +43 -0
- package/ORM/transactional.js.map +1 -0
- package/ORM/types.d.ts +92 -0
- package/ORM/types.d.ts.map +1 -0
- package/ORM/types.js +3 -0
- package/ORM/types.js.map +1 -0
- package/ORM/xml/MapperXml.d.ts +10 -0
- package/ORM/xml/MapperXml.d.ts.map +1 -0
- package/ORM/xml/MapperXml.js +79 -0
- package/ORM/xml/MapperXml.js.map +1 -0
- package/ORM/xml/execute.d.ts +10 -0
- package/ORM/xml/execute.d.ts.map +1 -0
- package/ORM/xml/execute.js +53 -0
- package/ORM/xml/execute.js.map +1 -0
- package/ORM/xml/index.d.ts +11 -0
- package/ORM/xml/index.d.ts.map +1 -0
- package/ORM/xml/index.js +29 -0
- package/ORM/xml/index.js.map +1 -0
- package/ORM/xml/loadMappers.d.ts +10 -0
- package/ORM/xml/loadMappers.d.ts.map +1 -0
- package/ORM/xml/loadMappers.js +162 -0
- package/ORM/xml/loadMappers.js.map +1 -0
- package/ORM/xml/parseMapperXml.d.ts +3 -0
- package/ORM/xml/parseMapperXml.d.ts.map +1 -0
- package/ORM/xml/parseMapperXml.js +217 -0
- package/ORM/xml/parseMapperXml.js.map +1 -0
- package/ORM/xml/registry.d.ts +15 -0
- package/ORM/xml/registry.d.ts.map +1 -0
- package/ORM/xml/registry.js +57 -0
- package/ORM/xml/registry.js.map +1 -0
- package/ORM/xml/renderSql.d.ts +4 -0
- package/ORM/xml/renderSql.d.ts.map +1 -0
- package/ORM/xml/renderSql.js +178 -0
- package/ORM/xml/renderSql.js.map +1 -0
- package/ORM/xml/types.d.ts +50 -0
- package/ORM/xml/types.d.ts.map +1 -0
- package/ORM/xml/types.js +3 -0
- package/ORM/xml/types.js.map +1 -0
- package/ORM/xml/xmlMapper.d.ts +10 -0
- package/ORM/xml/xmlMapper.d.ts.map +1 -0
- package/ORM/xml/xmlMapper.js +44 -0
- package/ORM/xml/xmlMapper.js.map +1 -0
- package/README.md +41 -2
- package/Redis/Redis.d.ts +65 -0
- package/Redis/Redis.d.ts.map +1 -0
- package/Redis/Redis.js +622 -0
- package/Redis/Redis.js.map +1 -0
- package/Redis/cache.d.ts +4 -0
- package/Redis/cache.d.ts.map +1 -0
- package/Redis/cache.js +70 -0
- package/Redis/cache.js.map +1 -0
- package/Redis/decorators.d.ts +5 -0
- package/Redis/decorators.d.ts.map +1 -0
- package/Redis/decorators.js +20 -0
- package/Redis/decorators.js.map +1 -0
- package/Redis/enable.d.ts +4 -0
- package/Redis/enable.d.ts.map +1 -0
- package/Redis/enable.js +22 -0
- package/Redis/enable.js.map +1 -0
- package/Redis/errors.d.ts +9 -0
- package/Redis/errors.d.ts.map +1 -0
- package/Redis/errors.js +20 -0
- package/Redis/errors.js.map +1 -0
- package/Redis/flag.d.ts +4 -0
- package/Redis/flag.d.ts.map +1 -0
- package/Redis/flag.js +14 -0
- package/Redis/flag.js.map +1 -0
- package/Redis/index.d.ts +11 -0
- package/Redis/index.d.ts.map +1 -0
- package/Redis/index.js +42 -0
- package/Redis/index.js.map +1 -0
- package/Redis/rateLimit.d.ts +8 -0
- package/Redis/rateLimit.d.ts.map +1 -0
- package/Redis/rateLimit.js +82 -0
- package/Redis/rateLimit.js.map +1 -0
- package/Redis/redisson/RCountDownLatch.d.ts +12 -0
- package/Redis/redisson/RCountDownLatch.d.ts.map +1 -0
- package/Redis/redisson/RCountDownLatch.js +48 -0
- package/Redis/redisson/RCountDownLatch.js.map +1 -0
- package/Redis/redisson/RFairLock.d.ts +4 -0
- package/Redis/redisson/RFairLock.d.ts.map +1 -0
- package/Redis/redisson/RFairLock.js +29 -0
- package/Redis/redisson/RFairLock.js.map +1 -0
- package/Redis/redisson/RLock.d.ts +34 -0
- package/Redis/redisson/RLock.d.ts.map +1 -0
- package/Redis/redisson/RLock.js +146 -0
- package/Redis/redisson/RLock.js.map +1 -0
- package/Redis/redisson/RMultiLock.d.ts +15 -0
- package/Redis/redisson/RMultiLock.d.ts.map +1 -0
- package/Redis/redisson/RMultiLock.js +90 -0
- package/Redis/redisson/RMultiLock.js.map +1 -0
- package/Redis/redisson/RReadWriteLock.d.ts +9 -0
- package/Redis/redisson/RReadWriteLock.d.ts.map +1 -0
- package/Redis/redisson/RReadWriteLock.js +51 -0
- package/Redis/redisson/RReadWriteLock.js.map +1 -0
- package/Redis/redisson/RSemaphore.d.ts +13 -0
- package/Redis/redisson/RSemaphore.d.ts.map +1 -0
- package/Redis/redisson/RSemaphore.js +54 -0
- package/Redis/redisson/RSemaphore.js.map +1 -0
- package/Redis/redisson/Redisson.d.ts +30 -0
- package/Redis/redisson/Redisson.d.ts.map +1 -0
- package/Redis/redisson/Redisson.js +93 -0
- package/Redis/redisson/Redisson.js.map +1 -0
- package/Redis/redisson/index.d.ts +12 -0
- package/Redis/redisson/index.d.ts.map +1 -0
- package/Redis/redisson/index.js +32 -0
- package/Redis/redisson/index.js.map +1 -0
- package/Redis/redisson/objects.d.ts +116 -0
- package/Redis/redisson/objects.d.ts.map +1 -0
- package/Redis/redisson/objects.js +384 -0
- package/Redis/redisson/objects.js.map +1 -0
- package/Redis/redisson/scripts.d.ts +13 -0
- package/Redis/redisson/scripts.d.ts.map +1 -0
- package/Redis/redisson/scripts.js +187 -0
- package/Redis/redisson/scripts.js.map +1 -0
- package/Redis/redisson/types.d.ts +129 -0
- package/Redis/redisson/types.d.ts.map +1 -0
- package/Redis/redisson/types.js +8 -0
- package/Redis/redisson/types.js.map +1 -0
- package/Redis/redisson/utils.d.ts +9 -0
- package/Redis/redisson/utils.d.ts.map +1 -0
- package/Redis/redisson/utils.js +78 -0
- package/Redis/redisson/utils.js.map +1 -0
- package/Redis/types.d.ts +82 -0
- package/Redis/types.d.ts.map +1 -0
- package/Redis/types.js +23 -0
- package/Redis/types.js.map +1 -0
- package/Service/BaseService.d.ts +18 -0
- package/Service/BaseService.d.ts.map +1 -0
- package/Service/BaseService.js +46 -0
- package/Service/BaseService.js.map +1 -0
- package/Service/MapperType.d.ts +18 -0
- package/Service/MapperType.d.ts.map +1 -0
- package/Service/MapperType.js +46 -0
- package/Service/MapperType.js.map +1 -0
- package/Service/bean.d.ts +16 -0
- package/Service/bean.d.ts.map +1 -0
- package/Service/bean.js +72 -0
- package/Service/bean.js.map +1 -0
- package/Service/container.d.ts +18 -0
- package/Service/container.d.ts.map +1 -0
- package/Service/container.js +66 -0
- package/Service/container.js.map +1 -0
- package/Service/decorators.d.ts +12 -0
- package/Service/decorators.d.ts.map +1 -0
- package/Service/decorators.js +148 -0
- package/Service/decorators.js.map +1 -0
- package/Service/index.d.ts +11 -0
- package/Service/index.d.ts.map +1 -0
- package/Service/index.js +32 -0
- package/Service/index.js.map +1 -0
- package/Service/types.d.ts +19 -0
- package/Service/types.d.ts.map +1 -0
- package/Service/types.js +18 -0
- package/Service/types.js.map +1 -0
- package/Validate/decorators.d.ts +18 -0
- package/Validate/decorators.d.ts.map +1 -0
- package/Validate/decorators.js +77 -0
- package/Validate/decorators.js.map +1 -0
- package/Validate/engine.d.ts +5 -0
- package/Validate/engine.d.ts.map +1 -0
- package/Validate/engine.js +78 -0
- package/Validate/engine.js.map +1 -0
- package/Validate/index.d.ts +6 -0
- package/Validate/index.d.ts.map +1 -0
- package/Validate/index.js +28 -0
- package/Validate/index.js.map +1 -0
- package/Validate/rules.d.ts +11 -0
- package/Validate/rules.d.ts.map +1 -0
- package/Validate/rules.js +120 -0
- package/Validate/rules.js.map +1 -0
- package/Validate/types.d.ts +22 -0
- package/Validate/types.d.ts.map +1 -0
- package/Validate/types.js +17 -0
- package/Validate/types.js.map +1 -0
- package/config/index.d.ts +104 -0
- package/config/index.d.ts.map +1 -0
- package/config/index.js +330 -0
- package/config/index.js.map +1 -0
- package/encrypt/AESUtil.d.ts +5 -0
- package/encrypt/AESUtil.d.ts.map +1 -0
- package/encrypt/AESUtil.js +36 -0
- package/encrypt/AESUtil.js.map +1 -0
- package/encrypt/DynamicAesKeyManager.d.ts +9 -0
- package/encrypt/DynamicAesKeyManager.d.ts.map +1 -0
- package/encrypt/DynamicAesKeyManager.js +46 -0
- package/encrypt/DynamicAesKeyManager.js.map +1 -0
- package/encrypt/index.d.ts +3 -0
- package/encrypt/index.d.ts.map +1 -0
- package/encrypt/index.js +8 -0
- package/encrypt/index.js.map +1 -0
- package/index.d.ts +31 -0
- package/index.d.ts.map +1 -0
- package/index.js +260 -0
- package/index.js.map +1 -0
- package/langchain/decorators.d.ts +2 -0
- package/langchain/decorators.d.ts.map +1 -0
- package/langchain/decorators.js +6 -0
- package/langchain/decorators.js.map +1 -0
- package/langchain/index.d.ts +1 -0
- package/langchain/index.d.ts.map +1 -0
- package/langchain/index.js +2 -0
- package/langchain/index.js.map +1 -0
- package/package.json +110 -4
- package/schedule/ScheduleManager.d.ts +25 -0
- package/schedule/ScheduleManager.d.ts.map +1 -0
- package/schedule/ScheduleManager.js +125 -0
- package/schedule/ScheduleManager.js.map +1 -0
- package/types/enums.d.ts +11 -0
- package/types/enums.d.ts.map +1 -0
- package/types/enums.js +15 -0
- package/types/enums.js.map +1 -0
- package/utils/case.d.ts +6 -0
- package/utils/case.d.ts.map +1 -0
- package/utils/case.js +32 -0
- package/utils/case.js.map +1 -0
- package/utils/entity/PageResult/index.d.ts +20 -0
- package/utils/entity/PageResult/index.d.ts.map +1 -0
- package/utils/entity/PageResult/index.js +15 -0
- package/utils/entity/PageResult/index.js.map +1 -0
- package/utils/entity/ResponseData/index.d.ts +11 -0
- package/utils/entity/ResponseData/index.d.ts.map +1 -0
- package/utils/entity/ResponseData/index.js +25 -0
- package/utils/entity/ResponseData/index.js.map +1 -0
- package/utils/id.d.ts +2 -0
- package/utils/id.d.ts.map +1 -0
- package/utils/id.js +9 -0
- package/utils/id.js.map +1 -0
package/ORM/dialect.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlServerDialect = exports.PostgresqlDialect = exports.MysqlDialect = void 0;
|
|
4
|
+
exports.getDialect = getDialect;
|
|
5
|
+
function replaceQuestionMarks(sql, to) {
|
|
6
|
+
let i = 0;
|
|
7
|
+
return sql.replace(/\?/g, () => to(++i));
|
|
8
|
+
}
|
|
9
|
+
exports.MysqlDialect = {
|
|
10
|
+
type: "mysql",
|
|
11
|
+
quoteIdent(name) {
|
|
12
|
+
return `\`${name}\``;
|
|
13
|
+
},
|
|
14
|
+
convertPlaceholders(sql) {
|
|
15
|
+
return sql;
|
|
16
|
+
},
|
|
17
|
+
likeEscapeClause() {
|
|
18
|
+
return " ESCAPE '\\\\'";
|
|
19
|
+
},
|
|
20
|
+
appendLimitOffset(sql, limit, offset = 0) {
|
|
21
|
+
if (offset > 0)
|
|
22
|
+
return `${sql} LIMIT ${limit} OFFSET ${offset}`;
|
|
23
|
+
return `${sql} LIMIT ${limit}`;
|
|
24
|
+
},
|
|
25
|
+
listColumnsSql(table) {
|
|
26
|
+
return {
|
|
27
|
+
sql: `SHOW COLUMNS FROM ${this.quoteIdent(table)}`,
|
|
28
|
+
params: [],
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
parseColumnNames(rows) {
|
|
32
|
+
return rows.map((r) => String(r.Field ?? r.field ?? ""));
|
|
33
|
+
},
|
|
34
|
+
prepareInsert(sql) {
|
|
35
|
+
return { sql, returning: false };
|
|
36
|
+
},
|
|
37
|
+
extractInsertId(result) {
|
|
38
|
+
const header = result;
|
|
39
|
+
return Number(header?.insertId ?? 0);
|
|
40
|
+
},
|
|
41
|
+
extractAffectedRows(result) {
|
|
42
|
+
const header = result;
|
|
43
|
+
return Number(header?.affectedRows ?? 0);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
exports.PostgresqlDialect = {
|
|
47
|
+
type: "postgresql",
|
|
48
|
+
quoteIdent(name) {
|
|
49
|
+
return `"${name}"`;
|
|
50
|
+
},
|
|
51
|
+
convertPlaceholders(sql) {
|
|
52
|
+
return replaceQuestionMarks(sql, (i) => `$${i}`);
|
|
53
|
+
},
|
|
54
|
+
likeEscapeClause() {
|
|
55
|
+
return " ESCAPE '\\'";
|
|
56
|
+
},
|
|
57
|
+
appendLimitOffset(sql, limit, offset = 0) {
|
|
58
|
+
if (offset > 0)
|
|
59
|
+
return `${sql} LIMIT ${limit} OFFSET ${offset}`;
|
|
60
|
+
return `${sql} LIMIT ${limit}`;
|
|
61
|
+
},
|
|
62
|
+
listColumnsSql(table) {
|
|
63
|
+
return {
|
|
64
|
+
sql: `SELECT column_name AS "Field" FROM information_schema.columns WHERE table_schema = current_schema() AND table_name = ?`,
|
|
65
|
+
params: [table],
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
parseColumnNames(rows) {
|
|
69
|
+
return rows.map((r) => String(r.Field ?? r.field ?? r.column_name ?? ""));
|
|
70
|
+
},
|
|
71
|
+
prepareInsert(sql, idColumn) {
|
|
72
|
+
return {
|
|
73
|
+
sql: `${sql} RETURNING ${this.quoteIdent(idColumn)}`,
|
|
74
|
+
returning: true,
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
extractInsertId(result, idColumn, returning) {
|
|
78
|
+
if (returning && Array.isArray(result) && result[0]) {
|
|
79
|
+
const row = result[0];
|
|
80
|
+
return Number(row[idColumn] ?? 0);
|
|
81
|
+
}
|
|
82
|
+
return 0;
|
|
83
|
+
},
|
|
84
|
+
extractAffectedRows(result) {
|
|
85
|
+
if (Array.isArray(result))
|
|
86
|
+
return result.length;
|
|
87
|
+
const header = result;
|
|
88
|
+
return Number(header?.rowCount ?? header?.affectedRows ?? 0);
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
exports.SqlServerDialect = {
|
|
92
|
+
type: "sqlserver",
|
|
93
|
+
quoteIdent(name) {
|
|
94
|
+
return `[${name}]`;
|
|
95
|
+
},
|
|
96
|
+
convertPlaceholders(sql) {
|
|
97
|
+
return replaceQuestionMarks(sql, (i) => `@p${i}`);
|
|
98
|
+
},
|
|
99
|
+
likeEscapeClause() {
|
|
100
|
+
return " ESCAPE '\\'";
|
|
101
|
+
},
|
|
102
|
+
appendLimitOffset(sql, limit, offset = 0, hasOrderBy = false) {
|
|
103
|
+
const order = hasOrderBy ? "" : " ORDER BY (SELECT NULL)";
|
|
104
|
+
return `${sql}${order} OFFSET ${offset} ROWS FETCH NEXT ${limit} ROWS ONLY`;
|
|
105
|
+
},
|
|
106
|
+
listColumnsSql(table) {
|
|
107
|
+
return {
|
|
108
|
+
sql: `SELECT COLUMN_NAME AS [Field] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?`,
|
|
109
|
+
params: [table],
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
parseColumnNames(rows) {
|
|
113
|
+
return rows.map((r) => String(r.Field ?? r.field ?? r.COLUMN_NAME ?? ""));
|
|
114
|
+
},
|
|
115
|
+
prepareInsert(sql, idColumn) {
|
|
116
|
+
const upper = sql.toUpperCase();
|
|
117
|
+
const valuesIdx = upper.lastIndexOf(" VALUES");
|
|
118
|
+
if (valuesIdx < 0) {
|
|
119
|
+
return { sql, returning: false };
|
|
120
|
+
}
|
|
121
|
+
const head = sql.slice(0, valuesIdx);
|
|
122
|
+
const tail = sql.slice(valuesIdx);
|
|
123
|
+
return {
|
|
124
|
+
sql: `${head} OUTPUT INSERTED.${this.quoteIdent(idColumn)}${tail}`,
|
|
125
|
+
returning: true,
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
extractInsertId(result, idColumn, returning) {
|
|
129
|
+
if (returning && Array.isArray(result) && result[0]) {
|
|
130
|
+
const row = result[0];
|
|
131
|
+
return Number(row[idColumn] ?? 0);
|
|
132
|
+
}
|
|
133
|
+
return 0;
|
|
134
|
+
},
|
|
135
|
+
extractAffectedRows(result) {
|
|
136
|
+
if (Array.isArray(result))
|
|
137
|
+
return result.length;
|
|
138
|
+
const header = result;
|
|
139
|
+
if (Array.isArray(header?.rowsAffected)) {
|
|
140
|
+
return Number(header.rowsAffected[0] ?? 0);
|
|
141
|
+
}
|
|
142
|
+
return Number(header?.affectedRows ?? 0);
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
const DIALECTS = {
|
|
146
|
+
mysql: exports.MysqlDialect,
|
|
147
|
+
postgresql: exports.PostgresqlDialect,
|
|
148
|
+
sqlserver: exports.SqlServerDialect,
|
|
149
|
+
};
|
|
150
|
+
function getDialect(type = "mysql") {
|
|
151
|
+
const key = String(type || "mysql").toLowerCase();
|
|
152
|
+
const map = {
|
|
153
|
+
mysql: "mysql",
|
|
154
|
+
mariadb: "mysql",
|
|
155
|
+
postgres: "postgresql",
|
|
156
|
+
postgresql: "postgresql",
|
|
157
|
+
pg: "postgresql",
|
|
158
|
+
mssql: "sqlserver",
|
|
159
|
+
sqlserver: "sqlserver",
|
|
160
|
+
"sql-server": "sqlserver",
|
|
161
|
+
};
|
|
162
|
+
const resolved = map[key] ?? key;
|
|
163
|
+
const dialect = DIALECTS[resolved];
|
|
164
|
+
if (!dialect) {
|
|
165
|
+
throw new Error(`不支持的数据库类型: ${type}`);
|
|
166
|
+
}
|
|
167
|
+
return dialect;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=dialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../../../src/framework/ORM/dialect.ts"],"names":[],"mappings":"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"}
|
package/ORM/enable.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NextFunction, Request, Response } from "express";
|
|
2
|
+
import type { DataSourceConfig } from "./DataSource";
|
|
3
|
+
export declare function EnableOrm(config?: DataSourceConfig): (_req: Request, _res: Response, next: NextFunction) => void;
|
|
4
|
+
//# sourceMappingURL=enable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/enable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAWrD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,UAMvB,OAAO,QAAQ,QAAQ,QAAQ,YAAY,UAUtE"}
|
package/ORM/enable.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EnableOrm = EnableOrm;
|
|
7
|
+
const Db_1 = __importDefault(require("./Db"));
|
|
8
|
+
const flag_1 = require("./flag");
|
|
9
|
+
function EnableOrm(config) {
|
|
10
|
+
(0, flag_1.markOrmEnabled)(true);
|
|
11
|
+
if (config) {
|
|
12
|
+
Db_1.default.register("default", config);
|
|
13
|
+
}
|
|
14
|
+
const middleware = (_req, _res, next) => {
|
|
15
|
+
next();
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(middleware, flag_1.ORM_MODULE_FLAG, {
|
|
18
|
+
value: true,
|
|
19
|
+
enumerable: false,
|
|
20
|
+
});
|
|
21
|
+
return middleware;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=enable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../../src/framework/ORM/enable.ts"],"names":[],"mappings":";;;;;AAaA,8BAgBC;AA5BD,8CAAsB;AAEtB,iCAAyD;AAUzD,SAAgB,SAAS,CAAC,MAAyB;IACjD,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;IACrB,IAAI,MAAM,EAAE,CAAC;QACX,YAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QACvE,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,sBAAe,EAAE;QACjD,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { IdType, type IdTypeValue } from "./IdType";
|
|
3
|
+
export type FieldFillValue = unknown | (() => unknown) | (() => Promise<unknown>);
|
|
4
|
+
export interface TableIdOptions {
|
|
5
|
+
value?: string;
|
|
6
|
+
type?: IdTypeValue;
|
|
7
|
+
}
|
|
8
|
+
export interface TableFieldOptions {
|
|
9
|
+
value?: string;
|
|
10
|
+
exist?: boolean;
|
|
11
|
+
insertFill?: FieldFillValue;
|
|
12
|
+
updateFill?: FieldFillValue;
|
|
13
|
+
}
|
|
14
|
+
export interface EntityFieldMeta {
|
|
15
|
+
property: string;
|
|
16
|
+
column: string;
|
|
17
|
+
id?: boolean;
|
|
18
|
+
idType?: IdType;
|
|
19
|
+
exist: boolean;
|
|
20
|
+
insertFill?: FieldFillValue;
|
|
21
|
+
updateFill?: FieldFillValue;
|
|
22
|
+
}
|
|
23
|
+
export interface EntityTableMeta {
|
|
24
|
+
tableName: string;
|
|
25
|
+
idColumn: string;
|
|
26
|
+
fields: EntityFieldMeta[];
|
|
27
|
+
}
|
|
28
|
+
type Ctor = Function;
|
|
29
|
+
export declare function TableName(tableName: string): ClassDecorator;
|
|
30
|
+
export declare function TableId(valueOrOptions?: string | TableIdOptions): PropertyDecorator;
|
|
31
|
+
export declare function getEntityIdField(entity: Ctor): EntityFieldMeta | undefined;
|
|
32
|
+
export declare function TableField(valueOrOptions?: string | TableFieldOptions): PropertyDecorator;
|
|
33
|
+
export declare function getTableName(entity: Ctor): string | undefined;
|
|
34
|
+
export declare function getEntityFields(entity: Ctor): EntityFieldMeta[];
|
|
35
|
+
export declare function getEntityTableMeta(entity: Ctor): EntityTableMeta | undefined;
|
|
36
|
+
export declare function resolveFieldFill(fill: FieldFillValue | undefined): Promise<unknown>;
|
|
37
|
+
export declare function applyEntityFieldFills(entityClass: Ctor | undefined, row: Record<string, any>, mode: "insert" | "update"): Promise<void>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=entityDecorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityDecorators.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/entityDecorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAiB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGnE,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,CAAC,MAAM,OAAO,CAAC,GACf,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE7B,MAAM,WAAW,cAAc;IAE7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAEhC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,OAAO,CAAC;IAKhB,UAAU,CAAC,EAAE,cAAc,CAAC;IAK5B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAE9B,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,EAAE,CAAC,EAAE,OAAO,CAAC;IAEb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAKD,KAAK,IAAI,GAAG,QAAQ,CAAC;AAoBrB,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAM3D;AAMD,wBAAgB,OAAO,CACrB,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,GACvC,iBAAiB,CAsBnB;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,SAAS,CAE1E;AAMD,wBAAgB,UAAU,CACxB,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAC1C,iBAAiB,CAqBnB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,GAAG,eAAe,EAAE,CAE/D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,SAAS,CAU5E;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,GAAG,SAAS,GAC/B,OAAO,CAAC,OAAO,CAAC,CAMlB;AAOD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,IAAI,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACxB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableName = TableName;
|
|
4
|
+
exports.TableId = TableId;
|
|
5
|
+
exports.getEntityIdField = getEntityIdField;
|
|
6
|
+
exports.TableField = TableField;
|
|
7
|
+
exports.getTableName = getTableName;
|
|
8
|
+
exports.getEntityFields = getEntityFields;
|
|
9
|
+
exports.getEntityTableMeta = getEntityTableMeta;
|
|
10
|
+
exports.resolveFieldFill = resolveFieldFill;
|
|
11
|
+
exports.applyEntityFieldFills = applyEntityFieldFills;
|
|
12
|
+
require("reflect-metadata");
|
|
13
|
+
const beanKeys_1 = require("../Json/beanKeys");
|
|
14
|
+
const IdType_1 = require("./IdType");
|
|
15
|
+
const TABLE_NAME_KEY = Symbol.for("pangza.orm.tableName");
|
|
16
|
+
const FIELDS_KEY = Symbol.for("pangza.orm.entityFields");
|
|
17
|
+
function fieldMap(ctor) {
|
|
18
|
+
return (Reflect.getOwnMetadata(FIELDS_KEY, ctor) ?? {});
|
|
19
|
+
}
|
|
20
|
+
function saveField(ctor, meta) {
|
|
21
|
+
const map = { ...fieldMap(ctor), [meta.property]: meta };
|
|
22
|
+
Reflect.defineMetadata(FIELDS_KEY, map, ctor);
|
|
23
|
+
(0, beanKeys_1.addBeanKey)(ctor, meta.property);
|
|
24
|
+
}
|
|
25
|
+
function TableName(tableName) {
|
|
26
|
+
return (ctor) => {
|
|
27
|
+
const name = String(tableName).trim();
|
|
28
|
+
if (!name)
|
|
29
|
+
throw new Error("@TableName 不能为空");
|
|
30
|
+
Reflect.defineMetadata(TABLE_NAME_KEY, name, ctor);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function TableId(valueOrOptions) {
|
|
34
|
+
return (target, propertyKey) => {
|
|
35
|
+
const property = String(propertyKey);
|
|
36
|
+
let column = property;
|
|
37
|
+
let idType = IdType_1.IdType.NONE;
|
|
38
|
+
if (typeof valueOrOptions === "string") {
|
|
39
|
+
column = valueOrOptions || property;
|
|
40
|
+
}
|
|
41
|
+
else if (valueOrOptions) {
|
|
42
|
+
if (valueOrOptions.value)
|
|
43
|
+
column = valueOrOptions.value;
|
|
44
|
+
if (valueOrOptions.type != null) {
|
|
45
|
+
idType = (0, IdType_1.resolveIdType)(valueOrOptions.type);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const ctor = target.constructor;
|
|
49
|
+
saveField(ctor, {
|
|
50
|
+
property,
|
|
51
|
+
column,
|
|
52
|
+
id: true,
|
|
53
|
+
idType,
|
|
54
|
+
exist: true,
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function getEntityIdField(entity) {
|
|
59
|
+
return getEntityFields(entity).find((f) => f.id);
|
|
60
|
+
}
|
|
61
|
+
function TableField(valueOrOptions) {
|
|
62
|
+
return (target, propertyKey) => {
|
|
63
|
+
const property = String(propertyKey);
|
|
64
|
+
let options = {};
|
|
65
|
+
if (typeof valueOrOptions === "string") {
|
|
66
|
+
options = { value: valueOrOptions };
|
|
67
|
+
}
|
|
68
|
+
else if (valueOrOptions) {
|
|
69
|
+
options = valueOrOptions;
|
|
70
|
+
}
|
|
71
|
+
const ctor = target.constructor;
|
|
72
|
+
const prev = fieldMap(ctor)[property];
|
|
73
|
+
saveField(ctor, {
|
|
74
|
+
property,
|
|
75
|
+
column: options.value || property,
|
|
76
|
+
id: prev?.id,
|
|
77
|
+
idType: prev?.idType,
|
|
78
|
+
exist: options.exist !== false,
|
|
79
|
+
insertFill: options.insertFill,
|
|
80
|
+
updateFill: options.updateFill,
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function getTableName(entity) {
|
|
85
|
+
return Reflect.getOwnMetadata(TABLE_NAME_KEY, entity);
|
|
86
|
+
}
|
|
87
|
+
function getEntityFields(entity) {
|
|
88
|
+
return Object.values(fieldMap(entity));
|
|
89
|
+
}
|
|
90
|
+
function getEntityTableMeta(entity) {
|
|
91
|
+
const tableName = getTableName(entity);
|
|
92
|
+
if (!tableName)
|
|
93
|
+
return undefined;
|
|
94
|
+
const fields = getEntityFields(entity);
|
|
95
|
+
const idField = fields.find((f) => f.id);
|
|
96
|
+
return {
|
|
97
|
+
tableName,
|
|
98
|
+
idColumn: idField?.column ?? "id",
|
|
99
|
+
fields,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async function resolveFieldFill(fill) {
|
|
103
|
+
if (fill === undefined)
|
|
104
|
+
return undefined;
|
|
105
|
+
if (typeof fill === "function") {
|
|
106
|
+
return await fill();
|
|
107
|
+
}
|
|
108
|
+
return fill;
|
|
109
|
+
}
|
|
110
|
+
async function applyEntityFieldFills(entityClass, row, mode) {
|
|
111
|
+
if (!entityClass)
|
|
112
|
+
return;
|
|
113
|
+
const fields = getEntityFields(entityClass);
|
|
114
|
+
for (const field of fields) {
|
|
115
|
+
if (!field.exist)
|
|
116
|
+
continue;
|
|
117
|
+
const fill = mode === "insert" ? field.insertFill : field.updateFill;
|
|
118
|
+
if (fill === undefined)
|
|
119
|
+
continue;
|
|
120
|
+
const colKey = field.column;
|
|
121
|
+
const propKey = field.property;
|
|
122
|
+
const current = row[colKey] !== undefined ? row[colKey] : row[propKey];
|
|
123
|
+
if (current !== undefined)
|
|
124
|
+
continue;
|
|
125
|
+
const value = await resolveFieldFill(fill);
|
|
126
|
+
if (value === undefined || value === null)
|
|
127
|
+
continue;
|
|
128
|
+
row[colKey] = value;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=entityDecorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityDecorators.js","sourceRoot":"","sources":["../../../../src/framework/ORM/entityDecorators.ts"],"names":[],"mappings":"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"}
|
package/ORM/errors.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ResponseCode } from "../types/enums";
|
|
2
|
+
export declare class OrmError extends Error {
|
|
3
|
+
readonly code: ResponseCode;
|
|
4
|
+
constructor(message: string, code?: ResponseCode);
|
|
5
|
+
}
|
|
6
|
+
export declare class OptimisticLockError extends OrmError {
|
|
7
|
+
constructor(message?: string);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiC;CAKrE;AAGD,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,SAAkB;CAItC"}
|
package/ORM/errors.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OptimisticLockError = exports.OrmError = void 0;
|
|
4
|
+
const enums_1 = require("../types/enums");
|
|
5
|
+
class OrmError extends Error {
|
|
6
|
+
constructor(message, code = enums_1.ResponseCode.ERROR) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "OrmError";
|
|
9
|
+
this.code = code;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.OrmError = OrmError;
|
|
13
|
+
class OptimisticLockError extends OrmError {
|
|
14
|
+
constructor(message = "数据已被修改,请刷新后重试") {
|
|
15
|
+
super(message, enums_1.ResponseCode.CONFLICT);
|
|
16
|
+
this.name = "OptimisticLockError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.OptimisticLockError = OptimisticLockError;
|
|
20
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/framework/ORM/errors.ts"],"names":[],"mappings":";;;AAAA,mDAAuD;AAGvD,MAAa,QAAS,SAAQ,KAAK;IAGjC,YAAY,OAAe,EAAE,OAAqB,oBAAY,CAAC,KAAK;QAClE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AARD,4BAQC;AAGD,MAAa,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,OAAO,GAAG,eAAe;QACnC,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
export interface FieldSelectOptions {
|
|
3
|
+
many?: boolean;
|
|
4
|
+
column?: string;
|
|
5
|
+
depth?: number;
|
|
6
|
+
eager?: boolean;
|
|
7
|
+
datasource?: string;
|
|
8
|
+
db?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FieldSelectMeta {
|
|
11
|
+
property: string;
|
|
12
|
+
sql: string;
|
|
13
|
+
many: boolean;
|
|
14
|
+
column?: string;
|
|
15
|
+
depth: number;
|
|
16
|
+
eager: boolean;
|
|
17
|
+
datasource?: string;
|
|
18
|
+
db?: string;
|
|
19
|
+
}
|
|
20
|
+
type Ctor = Function;
|
|
21
|
+
export declare function registerFieldSelect(ctor: Ctor, property: string, sql: string, options?: FieldSelectOptions): void;
|
|
22
|
+
export declare function getFieldSelects(ctor: Ctor): FieldSelectMeta[];
|
|
23
|
+
export declare function getFieldSelect(ctor: Ctor, property: string): FieldSelectMeta | undefined;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=fieldSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldSelect.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/fieldSelect.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,MAAM,WAAW,kBAAkB;IAMjC,IAAI,CAAC,EAAE,OAAO,CAAC;IAMf,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAID,KAAK,IAAI,GAAG,QAAQ,CAAC;AAWrB,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CAkCN;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,EAAE,CAE7D;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,GACf,eAAe,GAAG,SAAS,CAE7B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerFieldSelect = registerFieldSelect;
|
|
4
|
+
exports.getFieldSelects = getFieldSelects;
|
|
5
|
+
exports.getFieldSelect = getFieldSelect;
|
|
6
|
+
require("reflect-metadata");
|
|
7
|
+
const beanKeys_1 = require("../Json/beanKeys");
|
|
8
|
+
const FIELD_SELECT_KEY = Symbol.for("pangza.orm.fieldSelect");
|
|
9
|
+
function fieldSelectMap(ctor) {
|
|
10
|
+
return (Reflect.getOwnMetadata(FIELD_SELECT_KEY, ctor) ?? {});
|
|
11
|
+
}
|
|
12
|
+
function registerFieldSelect(ctor, property, sql, options = {}) {
|
|
13
|
+
const template = String(sql).trim();
|
|
14
|
+
if (!template) {
|
|
15
|
+
throw new Error("@Select 字段 SQL 不能为空");
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const { getRelation } = require("./relation");
|
|
19
|
+
if (getRelation(ctor, property)) {
|
|
20
|
+
throw new Error(`字段 @Select(${property}) 与关联装饰器不能同时用于同一属性`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
if (err instanceof Error && /不能同时/.test(err.message))
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
(0, beanKeys_1.addBeanKey)(ctor, property);
|
|
28
|
+
const map = {
|
|
29
|
+
...fieldSelectMap(ctor),
|
|
30
|
+
[property]: {
|
|
31
|
+
property,
|
|
32
|
+
sql: template,
|
|
33
|
+
many: options.many === true,
|
|
34
|
+
column: options.column?.trim() || undefined,
|
|
35
|
+
depth: Math.max(0, options.depth ?? 0),
|
|
36
|
+
eager: options.eager !== false,
|
|
37
|
+
datasource: options.datasource?.trim() || undefined,
|
|
38
|
+
db: options.db?.trim() || undefined,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
Reflect.defineMetadata(FIELD_SELECT_KEY, map, ctor);
|
|
42
|
+
}
|
|
43
|
+
function getFieldSelects(ctor) {
|
|
44
|
+
return Object.values(fieldSelectMap(ctor));
|
|
45
|
+
}
|
|
46
|
+
function getFieldSelect(ctor, property) {
|
|
47
|
+
return fieldSelectMap(ctor)[property];
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=fieldSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldSelect.js","sourceRoot":"","sources":["../../../../src/framework/ORM/fieldSelect.ts"],"names":[],"mappings":";;AA0DA,kDAuCC;AAGD,0CAEC;AAED,wCAKC;AA7GD,4BAA0B;AAC1B,wDAAuD;AA4CvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAI9D,SAAS,cAAc,CAAC,IAAU;IAChC,OAAO,CACJ,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAEhC,IAAI,EAAE,CACrB,CAAC;AACJ,CAAC;AAGD,SAAgB,mBAAmB,CACjC,IAAU,EACV,QAAgB,EAChB,GAAW,EACX,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAE3C,CAAC;QACF,IAAI,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,cAAc,QAAQ,oBAAoB,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IACD,IAAA,qBAAU,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG;QACV,GAAG,cAAc,CAAC,IAAI,CAAC;QACvB,CAAC,QAAQ,CAAC,EAAE;YACV,QAAQ;YACR,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI;YAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS;YAC3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,SAAS;YACnD,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,SAAS;SACpC;KACF,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAGD,SAAgB,eAAe,CAAC,IAAU;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,cAAc,CAC5B,IAAU,EACV,QAAgB;IAEhB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
|
package/ORM/fill.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { getOrmConfig } from "./config";
|
|
2
|
+
import type { ResolvedOrmConfig } from "./types";
|
|
3
|
+
export declare function applyInsertFill(entity: Record<string, any>, cfg: ResolvedOrmConfig, fillEnabled: boolean): Promise<void>;
|
|
4
|
+
export declare function applyUpdateFill(entity: Record<string, any>, cfg: ResolvedOrmConfig, fillEnabled: boolean): Promise<void>;
|
|
5
|
+
export { getOrmConfig };
|
|
6
|
+
//# sourceMappingURL=fill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/fill.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA0BjD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,EAAE,iBAAiB,EACtB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CASf;AAGD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,EAAE,iBAAiB,EACtB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/ORM/fill.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrmConfig = void 0;
|
|
4
|
+
exports.applyInsertFill = applyInsertFill;
|
|
5
|
+
exports.applyUpdateFill = applyUpdateFill;
|
|
6
|
+
const AuthUtil_1 = require("../Auth/AuthUtil");
|
|
7
|
+
const config_1 = require("./config");
|
|
8
|
+
Object.defineProperty(exports, "getOrmConfig", { enumerable: true, get: function () { return config_1.getOrmConfig; } });
|
|
9
|
+
function now() {
|
|
10
|
+
return new Date();
|
|
11
|
+
}
|
|
12
|
+
function assignIfAbsent(entity, field, value) {
|
|
13
|
+
if (!field || value === undefined || value === null)
|
|
14
|
+
return;
|
|
15
|
+
if (entity[field] === undefined) {
|
|
16
|
+
entity[field] = value;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function currentUser() {
|
|
20
|
+
try {
|
|
21
|
+
return await AuthUtil_1.AuthUtil.getLoginIdDefaultNull();
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function applyInsertFill(entity, cfg, fillEnabled) {
|
|
28
|
+
if (fillEnabled) {
|
|
29
|
+
const user = await currentUser();
|
|
30
|
+
assignIfAbsent(entity, cfg.fillCreateTime, now());
|
|
31
|
+
assignIfAbsent(entity, cfg.fillUpdateTime, now());
|
|
32
|
+
assignIfAbsent(entity, cfg.fillCreateBy, user);
|
|
33
|
+
assignIfAbsent(entity, cfg.fillUpdateBy, user);
|
|
34
|
+
}
|
|
35
|
+
await (0, config_1.getMetaObjectHandler)()?.insert?.(entity);
|
|
36
|
+
}
|
|
37
|
+
async function applyUpdateFill(entity, cfg, fillEnabled) {
|
|
38
|
+
if (fillEnabled) {
|
|
39
|
+
const user = await currentUser();
|
|
40
|
+
assignIfAbsent(entity, cfg.fillUpdateTime, now());
|
|
41
|
+
assignIfAbsent(entity, cfg.fillUpdateBy, user);
|
|
42
|
+
}
|
|
43
|
+
await (0, config_1.getMetaObjectHandler)()?.update?.(entity);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=fill.js.map
|
package/ORM/fill.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.js","sourceRoot":"","sources":["../../../../src/framework/ORM/fill.ts"],"names":[],"mappings":";;;AA4BA,0CAaC;AAGD,0CAWC;AAvDD,wDAAqD;AACrD,qCAA8D;AAwDrD,6FAxDsB,qBAAY,OAwDtB;AArDrB,SAAS,GAAG;IACV,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CACrB,MAA2B,EAC3B,KAAyB,EACzB,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAC5D,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,OAAO,MAAM,mBAAQ,CAAC,qBAAqB,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAGM,KAAK,UAAU,eAAe,CACnC,MAA2B,EAC3B,GAAsB,EACtB,WAAoB;IAEpB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;QACjC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/C,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAA,6BAAoB,GAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAGM,KAAK,UAAU,eAAe,CACnC,MAA2B,EAC3B,GAAsB,EACtB,WAAoB;IAEpB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;QACjC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,IAAA,6BAAoB,GAAE,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC"}
|
package/ORM/flag.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/flag.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,eAAkC,CAAC;AAI/D,wBAAgB,cAAc,CAAC,OAAO,UAAO,GAAG,IAAI,CAEnD;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
package/ORM/flag.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ORM_MODULE_FLAG = void 0;
|
|
4
|
+
exports.markOrmEnabled = markOrmEnabled;
|
|
5
|
+
exports.isOrmEnabled = isOrmEnabled;
|
|
6
|
+
exports.ORM_MODULE_FLAG = Symbol.for("pangza.orm.module");
|
|
7
|
+
let ormEnabled = false;
|
|
8
|
+
function markOrmEnabled(enabled = true) {
|
|
9
|
+
ormEnabled = enabled;
|
|
10
|
+
}
|
|
11
|
+
function isOrmEnabled() {
|
|
12
|
+
return ormEnabled;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=flag.js.map
|
package/ORM/flag.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flag.js","sourceRoot":"","sources":["../../../../src/framework/ORM/flag.ts"],"names":[],"mappings":";;;AAKA,wCAEC;AAED,oCAEC;AAVY,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAE/D,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAgB,cAAc,CAAC,OAAO,GAAG,IAAI;IAC3C,UAAU,GAAG,OAAO,CAAC;AACvB,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/ORM/hydrate.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface HydrateFieldSelectOptions {
|
|
2
|
+
maxDepth?: number;
|
|
3
|
+
includeLazy?: boolean;
|
|
4
|
+
properties?: string[];
|
|
5
|
+
datasource?: string;
|
|
6
|
+
relations?: boolean | string[];
|
|
7
|
+
}
|
|
8
|
+
export type HydrateRelationsOptions = HydrateFieldSelectOptions;
|
|
9
|
+
export declare function buildRowParamContext(row: Record<string, unknown>, entity?: Function): Record<string, unknown>;
|
|
10
|
+
export declare function hydrateFieldSelects<T extends Record<string, any>>(entity: Function | undefined, rows: T[], options?: HydrateFieldSelectOptions | number): Promise<T[]>;
|
|
11
|
+
export declare function hydrateRelations<T extends Record<string, any>>(entity: Function | undefined, rows: T[], options?: HydrateRelationsOptions): Promise<T[]>;
|
|
12
|
+
//# sourceMappingURL=hydrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../../../src/framework/ORM/hydrate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,yBAAyB;IAExC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAOpB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAchE,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,CAAC,EAAE,QAAQ,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AA2TD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrE,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,GAAE,yBAAyB,GAAG,MAAW,GAC/C,OAAO,CAAC,CAAC,EAAE,CAAC,CAoCd;AAMD,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClE,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,CAAC,EAAE,CAAC,CAad"}
|