aws-service-stack 0.18.421 → 0.18.425
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_examples/controller/local-task-controller.d.ts +17 -0
- package/dist/_examples/controller/local-task-controller.d.ts.map +1 -0
- package/dist/_examples/controller/local-task-controller.js +87 -0
- package/dist/_examples/controller/local-task-controller.js.map +1 -0
- package/dist/_examples/controller/order/order-config.d.ts +7 -0
- package/dist/_examples/controller/order/order-config.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-config.js +54 -0
- package/dist/_examples/controller/order/order-config.js.map +1 -0
- package/dist/_examples/controller/order/order-controller-cron.d.ts +8 -0
- package/dist/_examples/controller/order/order-controller-cron.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-controller-cron.js +58 -0
- package/dist/_examples/controller/order/order-controller-cron.js.map +1 -0
- package/dist/_examples/controller/order/order-controller-streamer.d.ts +7 -0
- package/dist/_examples/controller/order/order-controller-streamer.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-controller-streamer.js +60 -0
- package/dist/_examples/controller/order/order-controller-streamer.js.map +1 -0
- package/dist/_examples/controller/order/order-controller.d.ts +15 -0
- package/dist/_examples/controller/order/order-controller.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-controller.js +121 -0
- package/dist/_examples/controller/order/order-controller.js.map +1 -0
- package/dist/_examples/controller/order/order-cron.d.ts +6 -0
- package/dist/_examples/controller/order/order-cron.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-cron.js +57 -0
- package/dist/_examples/controller/order/order-cron.js.map +1 -0
- package/dist/_examples/controller/order/order-crud.d.ts +5 -0
- package/dist/_examples/controller/order/order-crud.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-crud.js +57 -0
- package/dist/_examples/controller/order/order-crud.js.map +1 -0
- package/dist/_examples/controller/order/order-streamer.d.ts +5 -0
- package/dist/_examples/controller/order/order-streamer.d.ts.map +1 -0
- package/dist/_examples/controller/order/order-streamer.js +57 -0
- package/dist/_examples/controller/order/order-streamer.js.map +1 -0
- package/dist/_examples/controller/order-item/order-item-config.d.ts +7 -0
- package/dist/_examples/controller/order-item/order-item-config.d.ts.map +1 -0
- package/dist/_examples/controller/order-item/order-item-config.js +43 -0
- package/dist/_examples/controller/order-item/order-item-config.js.map +1 -0
- package/dist/_examples/controller/order-item/order-item-controller-streamer.d.ts +7 -0
- package/dist/_examples/controller/order-item/order-item-controller-streamer.d.ts.map +1 -0
- package/dist/_examples/controller/order-item/order-item-controller-streamer.js +60 -0
- package/dist/_examples/controller/order-item/order-item-controller-streamer.js.map +1 -0
- package/dist/_examples/controller/order-item/order-item-controller.d.ts +12 -0
- package/dist/_examples/controller/order-item/order-item-controller.d.ts.map +1 -0
- package/dist/_examples/controller/order-item/order-item-controller.js +78 -0
- package/dist/_examples/controller/order-item/order-item-controller.js.map +1 -0
- package/dist/_examples/controller/order-item/order-item-crud.d.ts +5 -0
- package/dist/_examples/controller/order-item/order-item-crud.d.ts.map +1 -0
- package/dist/_examples/controller/order-item/order-item-crud.js +57 -0
- package/dist/_examples/controller/order-item/order-item-crud.js.map +1 -0
- package/dist/_examples/controller/order-item/order-item-streamer.d.ts +5 -0
- package/dist/_examples/controller/order-item/order-item-streamer.d.ts.map +1 -0
- package/dist/_examples/controller/order-item/order-item-streamer.js +57 -0
- package/dist/_examples/controller/order-item/order-item-streamer.js.map +1 -0
- package/dist/_examples/controller/profile/profile-crud-simple.d.ts +1 -0
- package/dist/_examples/controller/profile/profile-crud-simple.d.ts.map +1 -0
- package/dist/_examples/controller/profile/profile-crud.d.ts +2 -1
- package/dist/_examples/controller/profile/profile-crud.d.ts.map +1 -0
- package/dist/_examples/controller/profile/profile.config.d.ts +1 -0
- package/dist/_examples/controller/profile/profile.config.d.ts.map +1 -0
- package/dist/_examples/controller/profile/profile.config.js +20 -45
- package/dist/_examples/controller/profile/profile.config.js.map +1 -1
- package/dist/_examples/controller/profile/profile.controller.d.ts +4 -3
- package/dist/_examples/controller/profile/profile.controller.d.ts.map +1 -0
- package/dist/_examples/controller/profile/profile.controller.js +10 -3
- package/dist/_examples/controller/profile/profile.controller.js.map +1 -1
- package/dist/_examples/model-shared/example.model.d.ts +1 -0
- package/dist/_examples/model-shared/example.model.d.ts.map +1 -0
- package/dist/_examples/model-shared/order.model.d.ts +74 -0
- package/dist/_examples/model-shared/order.model.d.ts.map +1 -0
- package/dist/_examples/model-shared/order.model.js +12 -0
- package/dist/_examples/model-shared/order.model.js.map +1 -0
- package/dist/_examples/repositories/order/order-db.repo.d.ts +8 -0
- package/dist/_examples/repositories/order/order-db.repo.d.ts.map +1 -0
- package/dist/_examples/repositories/order/order-db.repo.interface.d.ts +5 -0
- package/dist/_examples/repositories/order/order-db.repo.interface.d.ts.map +1 -0
- package/dist/_examples/repositories/order/order-db.repo.interface.js +3 -0
- package/dist/_examples/repositories/order/order-db.repo.interface.js.map +1 -0
- package/dist/_examples/repositories/order/order-db.repo.js +20 -0
- package/dist/_examples/repositories/order/order-db.repo.js.map +1 -0
- package/dist/_examples/repositories/order/order-item-db.repo.d.ts +8 -0
- package/dist/_examples/repositories/order/order-item-db.repo.d.ts.map +1 -0
- package/dist/_examples/repositories/order/order-item-db.repo.interface.d.ts +5 -0
- package/dist/_examples/repositories/order/order-item-db.repo.interface.d.ts.map +1 -0
- package/dist/_examples/repositories/order/order-item-db.repo.interface.js +3 -0
- package/dist/_examples/repositories/order/order-item-db.repo.interface.js.map +1 -0
- package/dist/_examples/repositories/order/order-item-db.repo.js +20 -0
- package/dist/_examples/repositories/order/order-item-db.repo.js.map +1 -0
- package/dist/_examples/repositories/profile/profile-repo-db.d.ts +1 -0
- package/dist/_examples/repositories/profile/profile-repo-db.d.ts.map +1 -0
- package/dist/_examples/repositories/profile/profile-repo-db.interface.d.ts +1 -0
- package/dist/_examples/repositories/profile/profile-repo-db.interface.d.ts.map +1 -0
- package/dist/_examples/service/order/order-item-service-stream.d.ts +13 -0
- package/dist/_examples/service/order/order-item-service-stream.d.ts.map +1 -0
- package/dist/_examples/service/order/order-item-service-stream.interface.d.ts +5 -0
- package/dist/_examples/service/order/order-item-service-stream.interface.d.ts.map +1 -0
- package/dist/_examples/service/order/order-item-service-stream.interface.js +3 -0
- package/dist/_examples/service/order/order-item-service-stream.interface.js.map +1 -0
- package/dist/_examples/service/order/order-item-service-stream.js +81 -0
- package/dist/_examples/service/order/order-item-service-stream.js.map +1 -0
- package/dist/_examples/service/order/order-item-service.d.ts +16 -0
- package/dist/_examples/service/order/order-item-service.d.ts.map +1 -0
- package/dist/_examples/service/order/order-item-service.interface.d.ts +14 -0
- package/dist/_examples/service/order/order-item-service.interface.d.ts.map +1 -0
- package/dist/_examples/service/order/order-item-service.interface.js +3 -0
- package/dist/_examples/service/order/order-item-service.interface.js.map +1 -0
- package/dist/_examples/service/order/order-item-service.js +120 -0
- package/dist/_examples/service/order/order-item-service.js.map +1 -0
- package/dist/_examples/service/order/order-service-stream.d.ts +12 -0
- package/dist/_examples/service/order/order-service-stream.d.ts.map +1 -0
- package/dist/_examples/service/order/order-service-stream.interface.d.ts +5 -0
- package/dist/_examples/service/order/order-service-stream.interface.d.ts.map +1 -0
- package/dist/_examples/service/order/order-service-stream.interface.js +3 -0
- package/dist/_examples/service/order/order-service-stream.interface.js.map +1 -0
- package/dist/_examples/service/order/order-service-stream.js +80 -0
- package/dist/_examples/service/order/order-service-stream.js.map +1 -0
- package/dist/_examples/service/order/order-service.d.ts +19 -0
- package/dist/_examples/service/order/order-service.d.ts.map +1 -0
- package/dist/_examples/service/order/order-service.interface.d.ts +14 -0
- package/dist/_examples/service/order/order-service.interface.d.ts.map +1 -0
- package/dist/_examples/service/order/order-service.interface.js +3 -0
- package/dist/_examples/service/order/order-service.interface.js.map +1 -0
- package/dist/_examples/service/order/order-service.js +127 -0
- package/dist/_examples/service/order/order-service.js.map +1 -0
- package/dist/_examples/service/profile-service.d.ts +3 -3
- package/dist/_examples/service/profile-service.d.ts.map +1 -0
- package/dist/_examples/service/profile-service.interface.d.ts +2 -1
- package/dist/_examples/service/profile-service.interface.d.ts.map +1 -0
- package/dist/_examples/service/profile-service.interface.js.map +1 -1
- package/dist/_examples/service/profile-service.js +14 -14
- package/dist/_examples/service/profile-service.js.map +1 -1
- package/dist/controller/base-controller.d.ts +1 -0
- package/dist/controller/base-controller.d.ts.map +1 -0
- package/dist/controller/base-controller.js +14 -13
- package/dist/controller/base-controller.js.map +1 -1
- package/dist/controller/controller-api.d.ts +1 -0
- package/dist/controller/controller-api.d.ts.map +1 -0
- package/dist/controller/controller-api.js +14 -14
- package/dist/controller/controller-api.js.map +1 -1
- package/dist/controller/controller-request.d.ts +1 -0
- package/dist/controller/controller-request.d.ts.map +1 -0
- package/dist/controller/controller-request.js +2 -2
- package/dist/controller/controller-request.js.map +1 -1
- package/dist/controller/controller-role.d.ts +1 -0
- package/dist/controller/controller-role.d.ts.map +1 -0
- package/dist/controller/controller-role.js +7 -5
- package/dist/controller/controller-role.js.map +1 -1
- package/dist/controller/controller-stream.d.ts +1 -0
- package/dist/controller/controller-stream.d.ts.map +1 -0
- package/dist/controller/index.d.ts +1 -0
- package/dist/controller/index.d.ts.map +1 -0
- package/dist/exception/errors.d.ts +28 -11
- package/dist/exception/errors.d.ts.map +1 -0
- package/dist/exception/errors.js +35 -8
- package/dist/exception/errors.js.map +1 -1
- package/dist/exception/exception-handler.d.ts +6 -0
- package/dist/exception/exception-handler.d.ts.map +1 -0
- package/dist/exception/exception-handler.js +3 -1
- package/dist/exception/exception-handler.js.map +1 -1
- package/dist/exception/index.d.ts +1 -0
- package/dist/exception/index.d.ts.map +1 -0
- package/dist/function/cognito/cognito.function.d.ts +1 -0
- package/dist/function/cognito/cognito.function.d.ts.map +1 -0
- package/dist/function/cognito/index.d.ts +1 -0
- package/dist/function/cognito/index.d.ts.map +1 -0
- package/dist/function/index.d.ts +1 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/logger.d.ts +1 -0
- package/dist/function/logger.d.ts.map +1 -0
- package/dist/function/s3/index.d.ts +1 -0
- package/dist/function/s3/index.d.ts.map +1 -0
- package/dist/function/s3/s3.function.d.ts +1 -0
- package/dist/function/s3/s3.function.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/model/base.config.d.ts +1 -0
- package/dist/model/base.config.d.ts.map +1 -0
- package/dist/model/base.model.d.ts +1 -0
- package/dist/model/base.model.d.ts.map +1 -0
- package/dist/model/cognito-user.model.d.ts +1 -0
- package/dist/model/cognito-user.model.d.ts.map +1 -0
- package/dist/model/dynamodb.model.d.ts +1 -0
- package/dist/model/dynamodb.model.d.ts.map +1 -0
- package/dist/model/filter.model.d.ts +2 -0
- package/dist/model/filter.model.d.ts.map +1 -0
- package/dist/model/filter.model.js.map +1 -1
- package/dist/model/http.model.d.ts +1 -0
- package/dist/model/http.model.d.ts.map +1 -0
- package/dist/model/index.d.ts +1 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/role.model.d.ts +6 -5
- package/dist/model/role.model.d.ts.map +1 -0
- package/dist/model/role.model.js.map +1 -1
- package/dist/model/validation.model.d.ts +1 -0
- package/dist/model/validation.model.d.ts.map +1 -0
- package/dist/provider/apigateway.d.ts +1 -0
- package/dist/provider/apigateway.d.ts.map +1 -0
- package/dist/provider/dynamodb.d.ts +1 -0
- package/dist/provider/dynamodb.d.ts.map +1 -0
- package/dist/provider/index.d.ts +1 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/opensearch.d.ts +1 -0
- package/dist/provider/opensearch.d.ts.map +1 -0
- package/dist/repositories/base-core.repo.interface.d.ts +10 -4
- package/dist/repositories/base-core.repo.interface.d.ts.map +1 -0
- package/dist/repositories/base-core.repo.interface.js.map +1 -1
- package/dist/repositories/base-db.repo.d.ts +14 -8
- package/dist/repositories/base-db.repo.d.ts.map +1 -0
- package/dist/repositories/base-db.repo.interface.d.ts +25 -4
- package/dist/repositories/base-db.repo.interface.d.ts.map +1 -0
- package/dist/repositories/base-db.repo.interface.js.map +1 -1
- package/dist/repositories/base-db.repo.js +70 -26
- package/dist/repositories/base-db.repo.js.map +1 -1
- package/dist/repositories/base-es.repo.d.ts +2 -1
- package/dist/repositories/base-es.repo.d.ts.map +1 -0
- package/dist/repositories/base-es.repo.interface.d.ts +1 -0
- package/dist/repositories/base-es.repo.interface.d.ts.map +1 -0
- package/dist/repositories/base-es.repo.js +2 -2
- package/dist/repositories/base-es.repo.js.map +1 -1
- package/dist/repositories/index.d.ts +1 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/service/api.services/api.service.d.ts +1 -0
- package/dist/service/api.services/api.service.d.ts.map +1 -0
- package/dist/service/api.services/api.service.interface.d.ts +1 -0
- package/dist/service/api.services/api.service.interface.d.ts.map +1 -0
- package/dist/service/api.services/index.d.ts +1 -0
- package/dist/service/api.services/index.d.ts.map +1 -0
- package/dist/service/auth.service.d.ts +1 -0
- package/dist/service/auth.service.d.ts.map +1 -0
- package/dist/service/auth.service.interface.d.ts +1 -0
- package/dist/service/auth.service.interface.d.ts.map +1 -0
- package/dist/service/base.service.d.ts +5 -3
- package/dist/service/base.service.d.ts.map +1 -0
- package/dist/service/base.service.interface.d.ts +21 -10
- package/dist/service/base.service.interface.d.ts.map +1 -0
- package/dist/service/base.service.interface.js.map +1 -1
- package/dist/service/base.service.js +14 -11
- package/dist/service/base.service.js.map +1 -1
- package/dist/service/crud-operations.d.ts +103 -0
- package/dist/service/crud-operations.d.ts.map +1 -0
- package/dist/service/crud-operations.js +459 -0
- package/dist/service/crud-operations.js.map +1 -0
- package/dist/service/crud.service.d.ts +12 -18
- package/dist/service/crud.service.d.ts.map +1 -0
- package/dist/service/crud.service.interface.d.ts +55 -13
- package/dist/service/crud.service.interface.d.ts.map +1 -0
- package/dist/service/crud.service.interface.js.map +1 -1
- package/dist/service/crud.service.js +53 -351
- package/dist/service/crud.service.js.map +1 -1
- package/dist/service/index.d.ts +2 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +1 -0
- package/dist/service/index.js.map +1 -1
- package/dist/service/key-aws.services.d.ts +1 -0
- package/dist/service/key-aws.services.d.ts.map +1 -0
- package/dist/service/key.services.interface.d.ts +1 -0
- package/dist/service/key.services.interface.d.ts.map +1 -0
- package/dist/service/permission.cache.d.ts +1 -0
- package/dist/service/permission.cache.d.ts.map +1 -0
- package/dist/service/permission.repo.d.ts +1 -0
- package/dist/service/permission.repo.d.ts.map +1 -0
- package/dist/service/permission.service.d.ts +3 -0
- package/dist/service/permission.service.d.ts.map +1 -0
- package/dist/service/permission.service.js +30 -14
- package/dist/service/permission.service.js.map +1 -1
- package/dist/service/socket.service.d.ts +1 -0
- package/dist/service/socket.service.d.ts.map +1 -0
- package/dist/service/socket.service.interface.d.ts +1 -0
- package/dist/service/socket.service.interface.d.ts.map +1 -0
- package/dist/service/stream.service.d.ts +1 -0
- package/dist/service/stream.service.d.ts.map +1 -0
- package/dist/service/stream.service.interface.d.ts +1 -0
- package/dist/service/stream.service.interface.d.ts.map +1 -0
- package/dist/service/validation.service.interface.d.ts +1 -0
- package/dist/service/validation.service.interface.d.ts.map +1 -0
- package/dist/utils/array.util.d.ts +1 -0
- package/dist/utils/array.util.d.ts.map +1 -0
- package/dist/utils/auth.util.d.ts +1 -0
- package/dist/utils/auth.util.d.ts.map +1 -0
- package/dist/utils/data.util.d.ts +1 -0
- package/dist/utils/data.util.d.ts.map +1 -0
- package/dist/utils/date.util.d.ts +1 -0
- package/dist/utils/date.util.d.ts.map +1 -0
- package/dist/utils/dynamodb.utils.d.ts +2 -1
- package/dist/utils/dynamodb.utils.d.ts.map +1 -0
- package/dist/utils/dynamodb.utils.js +105 -30
- package/dist/utils/dynamodb.utils.js.map +1 -1
- package/dist/utils/env.util.d.ts +1 -0
- package/dist/utils/env.util.d.ts.map +1 -0
- package/dist/utils/error.util.d.ts +1 -0
- package/dist/utils/error.util.d.ts.map +1 -0
- package/dist/utils/http/http-request.d.ts +1 -0
- package/dist/utils/http/http-request.d.ts.map +1 -0
- package/dist/utils/http/http.util.d.ts +1 -0
- package/dist/utils/http/http.util.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/json.util.d.ts +1 -0
- package/dist/utils/json.util.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.aggs.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.aggs.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.keyword.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.keyword.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.query.map.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.query.map.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.sort.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.sort.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.parser.utils.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.parser.utils.d.ts.map +1 -0
- package/dist/utils/opensearch/opensearch.transform.d.ts +1 -0
- package/dist/utils/opensearch/opensearch.transform.d.ts.map +1 -0
- package/dist/utils/opensearch.utils.d.ts +1 -0
- package/dist/utils/opensearch.utils.d.ts.map +1 -0
- package/dist/utils/reflection.util.d.ts +1 -0
- package/dist/utils/reflection.util.d.ts.map +1 -0
- package/dist/utils/reflection.util.js +7 -8
- package/dist/utils/reflection.util.js.map +1 -1
- package/dist/utils/string.util.d.ts +1 -0
- package/dist/utils/string.util.d.ts.map +1 -0
- package/dist/utils/validation.util.d.ts +1 -0
- package/dist/utils/validation.util.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-db.repo.js","sourceRoot":"","sources":["../../src/repositories/base-db.repo.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributeValue,\n BatchGetItemCommand,\n BatchWriteItemCommand,\n BatchWriteItemCommandInput,\n DeleteItemCommand,\n GetItemCommand,\n PutItemCommand,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n ReturnValue,\n ScanCommand,\n ScanCommandInput,\n ScanCommandOutput,\n TransactWriteItemsCommand,\n TransactWriteItemsCommandInput,\n UpdateItemCommand,\n UpdateItemCommandInput,\n} from \"@aws-sdk/client-dynamodb\";\nimport { marshall, unmarshall } from \"@aws-sdk/util-dynamodb\";\nimport {\n addIndexValue,\n BaseRepoDB,\n buildDynamoDBFilterConditions,\n buildDynamoDBQueryCommand,\n buildDynamoDBScanCommand,\n buildQueryDB,\n buildUpdateExpressions,\n chunkArray,\n DBClientDynamoDB,\n DynamoIndexMap,\n generateLastEvaluatedKey,\n generateUUID,\n List,\n parseIndexFilter,\n parseLastEvaluatedKey,\n removeFields,\n toBase64,\n unMarshall,\n} from \"../index\";\nimport Container, { Service } from \"typedi\";\nimport { ErrorDynamoDB } from \"../exception/errors\";\nimport { BaseEntity, Filter } from \"@chinggis/types\";\n\nService(\"BaseRepoDB\");\n\nexport class BaseRepoDBImpl<T extends BaseEntity> implements BaseRepoDB<T> {\n private readonly dynamoDb: DBClientDynamoDB = Container.get(\"DBClientDynamoDB\");\n private _tableName: string;\n private _indexMap: DynamoIndexMap;\n private readonly DYNAMO_QUERY_LIMIT: number = 25;\n\n async deleteFields(id: string, fieldNames: string[]): Promise<Partial<T>> {\n if (!id || fieldNames.length === 0) {\n return undefined;\n }\n\n const partitionKey = this._indexMap.partitionKey;\n const expressionAttributeNames: Record<string, string> = {};\n const removeExpressions: string[] = [];\n\n fieldNames.forEach((fieldPath, index) => {\n const parts = fieldPath.split(\".\");\n const pathPlaceholders: string[] = [];\n\n parts.forEach((part, partIndex) => {\n const namePlaceholder = `#field${index}_${partIndex}`;\n pathPlaceholders.push(namePlaceholder);\n expressionAttributeNames[namePlaceholder] = part;\n });\n\n removeExpressions.push(pathPlaceholders.join(\".\"));\n });\n\n const updateExpression = `REMOVE ${removeExpressions.join(\", \")}`;\n\n const params = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: id }),\n UpdateExpression: updateExpression,\n ExpressionAttributeNames: expressionAttributeNames,\n ReturnValues: \"ALL_NEW\" as const,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n if (!result.Attributes) {\n throw new Error(\"No attributes returned from UpdateItem.\");\n }\n\n return unmarshall(result.Attributes) as Partial<T>;\n }\n\n fieldNotExists(fieldName: string, from: number, size: number): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n incrementValueByField(\n entityId: string,\n fieldName: string,\n value?: number,\n nestedFieldSeparator?: string,\n ): Promise<T> {\n if (value < 0) {\n throw new Error(\"Increment operation only supports positive values\");\n }\n const fieldPath = nestedFieldSeparator ? fieldName.split(nestedFieldSeparator) : [fieldName];\n return this.incrementOrDecrementFieldValue(entityId, fieldPath, value ?? 1);\n }\n\n decrementValueByField(\n entityId: string,\n fieldName: string,\n value?: number,\n nestedFieldSeparator?: string,\n ): Promise<T> {\n if (value > 0) {\n throw new ErrorDynamoDB(\n this._tableName,\n `Decrement operation only supports negative values, inputValue: ${value}, for field: ${fieldName}`,\n );\n }\n const fieldPath = nestedFieldSeparator ? fieldName.split(nestedFieldSeparator) : [fieldName];\n return this.incrementOrDecrementFieldValue(entityId, fieldPath, value ?? -1);\n }\n\n transactWrite?(operations: any[]): Promise<boolean> {\n throw new Error(\"Method not implemented.\");\n }\n\n async update(entity: Partial<T>): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n\n if (!entity[partitionKey]) {\n throw new ErrorDynamoDB(this._tableName, `Entity must have value in field ${partitionKey}`);\n }\n\n const indexedItem = addIndexValue(entity, this._indexMap);\n\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(\n indexedItem,\n [partitionKey],\n );\n\n const params = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: indexedItem[partitionKey] }),\n UpdateExpression,\n ExpressionAttributeNames,\n ExpressionAttributeValues,\n ReturnValues: ReturnValue.ALL_NEW,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n if (!result.Attributes) {\n throw new Error(\"No attributes returned from UpdateItem.\");\n }\n return unmarshall(result.Attributes) as T;\n }\n\n async updateFields(entity: Partial<T>, fields: string[]): Promise<Partial<T>> {\n if (!entity || !fields?.length) return entity;\n\n const partitionKey = this._indexMap?.partitionKey;\n if (!partitionKey) return entity;\n\n const entityId = entity[partitionKey as keyof T] as unknown as string;\n if (!entityId) return entity;\n\n const updateExpressions: string[] = [];\n const expressionAttributeNames: Record<string, string> = {};\n const expressionAttributeValues: Record<string, any> = {}; // Typ je nach deinem SDK Import\n\n fields.forEach((fieldPath, index) => {\n if (fieldPath === partitionKey) return;\n\n const rawValue = fieldPath.split(\".\").reduce((acc: any, part) => acc?.[part], entity);\n\n if (rawValue === undefined) return;\n const parts = fieldPath.split(\".\");\n const pathPlaceholders: string[] = [];\n\n parts.forEach((part, partIndex) => {\n const namePlaceholder = `#field${index}_${partIndex}`;\n pathPlaceholders.push(namePlaceholder);\n expressionAttributeNames[namePlaceholder] = part; // Mappt z.B. \"#field0_0\" auf \"loyalty\"\n });\n\n const fullPath = pathPlaceholders.join(\".\");\n const valuePlaceholder = `:val${index}`;\n\n updateExpressions.push(`${fullPath} = ${valuePlaceholder}`);\n\n const marshalledWrapper = marshall({ temp: rawValue }, { removeUndefinedValues: true });\n expressionAttributeValues[valuePlaceholder] = marshalledWrapper.temp;\n });\n\n if (updateExpressions.length === 0) return entity;\n\n const response = await this.dynamoDb.send(\n new UpdateItemCommand({\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: entityId }),\n UpdateExpression: `SET ${updateExpressions.join(\", \")}`,\n ExpressionAttributeNames: expressionAttributeNames,\n ExpressionAttributeValues: expressionAttributeValues,\n ReturnValues: ReturnValue.ALL_NEW,\n }),\n );\n\n return response.Attributes ? (unmarshall(response.Attributes) as Partial<T>) : entity;\n }\n\n async updateMany(entityList: Partial<T>[], fields: string[], isTransactional: boolean): Promise<boolean> {\n if (isTransactional === undefined || isTransactional === false || isTransactional === null)\n return this.updateManyNormal(entityList, fields);\n\n return this.updateManyTransactional(entityList, fields);\n }\n\n async save(entity: Partial<T>): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n\n if (!entity[partitionKey]) throw new Error(`Entity must have a ${partitionKey} field.`);\n\n const indexedItem = addIndexValue(entity, this._indexMap);\n\n const params = {\n TableName: this._tableName,\n Item: marshall(indexedItem, { removeUndefinedValues: true }),\n };\n try {\n await this.dynamoDb.send(new PutItemCommand(params));\n\n return entity as T;\n } catch (error) {\n console.error(\"Error saving entity:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async saveMany(entities: Partial<T>[], isTransactional?: boolean): Promise<Partial<T>[]> {\n if (isTransactional === undefined || isTransactional === null || isTransactional === false)\n return await this.saveManyNormal(entities);\n return await this.saveManyTransactional(entities);\n }\n\n async delete(id: string): Promise<boolean> {\n const params = {\n TableName: this._tableName,\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n };\n\n try {\n await this.dynamoDb.send(new DeleteItemCommand(params));\n return true;\n } catch (error) {\n console.error(\"Error deleting item:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async deleteMany(ids: string[]): Promise<boolean> {\n if (ids?.length === 0) return false;\n const chunked = chunkArray(ids, 25);\n for (const chunk of chunked) {\n const deleteRequests = chunk.map((id) => {\n return {\n DeleteRequest: {\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n },\n };\n });\n\n const params = {\n RequestItems: {\n [this._tableName]: deleteRequests,\n },\n };\n\n await this.dynamoDb.send(new BatchWriteItemCommand(params));\n }\n return true;\n }\n\n async findById(id: string): Promise<T> {\n const params = {\n TableName: this._tableName,\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n };\n\n try {\n const result = await this.dynamoDb.send(new GetItemCommand(params));\n if (!result.Item) return null;\n return unmarshall(result.Item) as T;\n } catch (error) {\n console.error(\"Error getting item:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async findByIds(ids: string[]): Promise<T[]> {\n let items: T[] = [];\n if (!ids || ids.length === 0) throw new Error(\"Item must have entityIds\");\n\n const chunked = chunkArray(ids, 100);\n for (const chunk of chunked) {\n const keys = chunk.map((id) => ({ [this._indexMap.partitionKey]: { S: id } }));\n const params = {\n RequestItems: {\n [this._tableName]: { Keys: keys },\n },\n };\n\n const response = await this.dynamoDb.send(new BatchGetItemCommand(params));\n\n items = items.concat(response.Responses?.[this._tableName]?.map((item) => unmarshall(item)) as T[]) ?? [];\n }\n return items;\n }\n\n async find(filter: Filter): Promise<List<Partial<T>>> {\n if (!filter) filter = { size: this.DYNAMO_QUERY_LIMIT };\n\n // Enforce Query-only: require indexName & indexValue; otherwise instruct the caller to use scan\n if (!filter.indexName || filter.indexValue === undefined || filter.indexValue === null) {\n throw new ErrorDynamoDB(\n this._tableName,\n \"find in by index\",\n \"find requires indexName and indexValue; use scan() otherwise\",\n );\n }\n\n const dbQuery = buildDynamoDBQueryCommand({\n tableName: this._tableName,\n filter,\n filterCondition: buildDynamoDBFilterConditions(filter, this._indexMap),\n indexMap: this._indexMap,\n });\n\n const response = await this.sendCommandDeep<T>(dbQuery, filter?.lastKey);\n const fieldsRemoved = removeFields(response?.items, filter.fieldsInclude, filter.fieldsExclude);\n return { items: fieldsRemoved, lastKey: response?.lastKey };\n }\n\n async scan(filter: Filter): Promise<List<Partial<T>>> {\n if (!filter) filter = { size: this.DYNAMO_QUERY_LIMIT };\n const expression = buildDynamoDBFilterConditions(filter, this._indexMap);\n const scanInput = buildDynamoDBScanCommand({ tableName: this._tableName, filter, expression });\n const response = await this.sendCommandDeep<T>(scanInput, filter?.lastKey);\n const fieldsRemoved = removeFields(response?.items, filter.fieldsInclude, filter.fieldsExclude);\n return { items: fieldsRemoved, lastKey: response?.lastKey };\n }\n\n async findOne(filter: Filter): Promise<T> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n queryInput.Limit = 1;\n\n const result = await this.dynamoDb.send(new QueryCommand(queryInput));\n\n if (!result.Items || result.Items.length === 0) return null;\n return unmarshall(result.Items[0]) as T;\n }\n\n findByIndex(indexName: string, value: string): Promise<List<Partial<T>>> {\n return this.find(parseIndexFilter(indexName + \"=\" + value, this._indexMap));\n }\n\n async count(filter: Filter): Promise<number> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n queryInput.Select = \"COUNT\";\n\n const result = await this.dynamoDb.send(new QueryCommand(queryInput));\n return result.Count ?? 0;\n }\n\n async exists(id: string): Promise<boolean> {\n const key = marshall({ [this._indexMap.partitionKey]: id });\n\n const result = await this.dynamoDb.send(\n new GetItemCommand({\n TableName: this._tableName,\n Key: key,\n ProjectionExpression: this._indexMap.partitionKey,\n }),\n );\n\n return !!result.Item;\n }\n\n async getRaw(filter: Filter): Promise<any> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n return this.dynamoDb.send(new QueryCommand(queryInput));\n }\n\n async transactionRead<T>(operations: { id: string; sortKey?: string }[]): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async transactRead?<TResult = any>(operations: any[]): Promise<TResult[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async transactionWrite(operations: {\n create?: { tableName: string; item: Record<string, any> }[];\n update?: {\n tableName: string;\n key: { id: string };\n updateData: Record<string, any>;\n }[];\n delete?: { tableName: string; key: { id: string } }[];\n }): Promise<boolean> {\n const transactItems: any[] = [];\n\n // Create operations\n if (operations.create) {\n for (const { tableName, item } of operations.create) {\n if (!item?.id) {\n item.id = generateUUID();\n }\n transactItems.push({\n Put: {\n TableName: tableName,\n Item: marshall(item, { removeUndefinedValues: true }),\n },\n });\n }\n }\n\n // Update operations\n if (operations.update) {\n for (const { tableName, key, updateData } of operations.update) {\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(\n updateData,\n [\"id\"],\n );\n\n transactItems.push({\n Update: {\n TableName: tableName,\n Key: marshall(key),\n UpdateExpression,\n ExpressionAttributeNames,\n ExpressionAttributeValues,\n },\n });\n }\n }\n\n // Delete operations\n if (operations.delete) {\n for (const { tableName, key } of operations.delete) {\n transactItems.push({\n Delete: {\n TableName: tableName,\n Key: marshall(key),\n },\n });\n }\n }\n\n if (transactItems.length === 0) return false;\n\n // Execute transaction\n try {\n await this.dynamoDb.send(new TransactWriteItemsCommand({ TransactItems: transactItems }));\n return true;\n } catch (error) {\n console.error(\"Transaction failed:\", error);\n throw new ErrorDynamoDB(this._tableName, transactItems, error);\n }\n }\n\n getTableName() {\n return this._tableName;\n }\n\n setIndexMap(indexMap: DynamoIndexMap): boolean {\n this._indexMap = indexMap;\n return true;\n }\n\n setTable(tableName: string): boolean {\n this._tableName = tableName;\n return true;\n }\n\n getIndexMap(): DynamoIndexMap {\n return this._indexMap;\n }\n\n private async updateManyNormal(entityList: Partial<T>[], fieldNames: string[]): Promise<boolean> {\n return this.updateManyTransactional(entityList, fieldNames); // todo implement normal updateMany\n }\n\n private async updateManyTransactional(entityList: Partial<T>[], fieldNames: string[]): Promise<boolean> {\n if (entityList.length === 0) return false;\n\n if (!fieldNames || fieldNames.length === 0) {\n await this.saveMany(entityList, true);\n return true;\n }\n\n const partitionKey = this._indexMap.partitionKey;\n const selectedFields = Array.from(new Set([...(fieldNames || []), partitionKey]));\n const entityListCleaned = removeFields(entityList, selectedFields);\n\n const indexedItems = entityListCleaned.map((entity) => {\n return addIndexValue(entity, this._indexMap);\n });\n\n const transactItems = indexedItems\n .map((item) => {\n if (!item[partitionKey])\n throw new Error(\n `Item must have an ${partitionKey} field. Entity: ${JSON.stringify(item, null, 2)}, \\nupdateFields: ${JSON.stringify(selectedFields)}`,\n );\n\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(item, [\n partitionKey,\n ]);\n\n return {\n Update: {\n TableName: this._tableName,\n Key: { [partitionKey]: { S: item[partitionKey] } }, // id-г шууд key болгож дамжуулах\n UpdateExpression,\n ExpressionAttributeValues,\n ExpressionAttributeNames,\n },\n };\n })\n .filter(Boolean) as any[]; // filter(Boolean) нь хоосон утгуудыг арилгана.\n\n if (transactItems.length < 1) return false;\n\n const chunkedItems = chunkArray(transactItems, 25); // 25-аас дээш бол багцлах\n\n for (const chunk of chunkedItems) await this.dynamoDb.send(new TransactWriteItemsCommand({ TransactItems: chunk }));\n\n return true;\n }\n\n private async saveManyNormal(entities: Partial<T>[]): Promise<Partial<T>[]> {\n if (entities.length === 0) throw new Error(\"Cannot save an empty array of entities.\");\n\n const allSavedEntities: Partial<T>[] = [];\n\n for (const chunk of chunkArray(entities, 25)) {\n chunk.forEach((item) => addIndexValue(item, this._indexMap));\n const putRequests = chunk.map((entity) => ({\n PutRequest: { Item: marshall(entity, { removeUndefinedValues: true }) },\n }));\n\n const params: BatchWriteItemCommandInput = { RequestItems: { [this._tableName]: putRequests } };\n\n const result = await this.dynamoDb.send(new BatchWriteItemCommand(params));\n\n if (result.UnprocessedItems && Object.keys(result.UnprocessedItems).length > 0)\n console.warn(\"⚠️ Some items were unprocessed and need to be retried.\", result.UnprocessedItems);\n\n allSavedEntities.push(...chunk);\n }\n\n return allSavedEntities;\n }\n\n private async saveManyTransactional(entities: Partial<T>[]): Promise<Partial<T>[]> {\n if (entities.length === 0) throw new Error(\"Cannot save an empty array of entities.\");\n\n const allSavedEntities: Partial<T>[] = [];\n\n // DynamoDB TransactWrite limit: 25 actions per request\n for (const chunk of chunkArray(entities, 25)) {\n chunk.forEach((item) => addIndexValue(item, this._indexMap));\n\n const transactItems = chunk.map((entity) => ({\n Put: {\n TableName: this._tableName,\n Item: marshall(entity, { removeUndefinedValues: true }),\n },\n }));\n\n const params: TransactWriteItemsCommandInput = {\n TransactItems: transactItems,\n };\n\n try {\n await this.dynamoDb.send(new TransactWriteItemsCommand(params));\n allSavedEntities.push(...chunk);\n } catch (err) {\n console.error(\"❌ Transaction failed:\", err);\n throw err; // Re-throw so the caller knows it failed\n }\n }\n\n return allSavedEntities;\n }\n\n private async incrementOrDecrementFieldValue(entityId: string, fieldPath: string[], delta: number): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n const leafField = fieldPath[fieldPath.length - 1];\n\n if (!this?._indexMap?.numberFields?.includes(leafField)) {\n throw new Error(`${leafField} field not found in indexMap.numberFields`);\n }\n\n const expressionAttributeNames: Record<string, string> = {};\n fieldPath.forEach((segment, i) => {\n expressionAttributeNames[`#f${i}`] = segment;\n });\n\n const pathExpr = fieldPath.map((_, i) => `#f${i}`).join(\".\");\n\n const params: UpdateItemCommandInput = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: entityId }),\n UpdateExpression: `SET ${pathExpr} = if_not_exists(${pathExpr}, :start) + :delta`,\n ExpressionAttributeNames: expressionAttributeNames,\n ExpressionAttributeValues: {\n \":delta\": marshall(delta),\n \":start\": marshall(0),\n },\n ReturnValues: ReturnValue.ALL_NEW,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n\n return unmarshall(result.Attributes) as T;\n }\n\n /**\n * Executes a DynamoDB Query or Scan and returns up to the desired number of items,\n * respecting DynamoDB's 1MB limit (pagination continuation via LastEvaluatedKey).\n * @param queryInput - QueryCommandInput or ScanCommandInput\n * @param startKey - Optional start key for pagination\n */\n\n private async sendCommandDeep<T>(\n queryInput: QueryCommandInput | ScanCommandInput,\n startKey?: string | Record<string, any>,\n ): Promise<List<T>> {\n const result: List<T> = { items: [] };\n\n const size: number = (queryInput as any)?.Limit ?? 10;\n\n let lastEvaluatedKey: Record<string, AttributeValue>;\n\n if (startKey) {\n lastEvaluatedKey =\n typeof startKey === \"string\"\n ? parseLastEvaluatedKey<Record<string, AttributeValue>>(startKey) // will throw if invalid\n : startKey;\n }\n\n do {\n const response: QueryCommandOutput = await this.sendCommand({\n ...queryInput,\n ExclusiveStartKey: lastEvaluatedKey,\n });\n\n // no more items to fetch\n if (response.LastEvaluatedKey == undefined) {\n result?.items.push(...unMarshall<T>(response.Items));\n result.lastKey = undefined;\n return result;\n }\n\n if (response?.Items.length === 0 && response.LastEvaluatedKey) {\n lastEvaluatedKey = response.LastEvaluatedKey;\n continue;\n }\n\n if (result?.items.length + response?.Items.length <= size) {\n result?.items.push(...unMarshall<T>(response.Items));\n lastEvaluatedKey = response.LastEvaluatedKey;\n if (result?.items.length === size) {\n result.lastKey = toBase64(JSON.stringify(response.LastEvaluatedKey));\n return result;\n }\n continue;\n }\n\n const elementIndex = size - result?.items.length - 1;\n result?.items.push(...unMarshall<T>(response.Items.slice(0, elementIndex)));\n\n const index = this._indexMap.get(queryInput.IndexName);\n result.lastKey = generateLastEvaluatedKey(response.Items[elementIndex], index?.field, index?.sortKeyField);\n break;\n } while (lastEvaluatedKey);\n\n return result;\n }\n\n /**\n * Executes a single Query/Scan and returns the result as-is.\n * Supports pagination via ExclusiveStartKey.\n */\n private async sendCommand(\n commandInput: QueryCommandInput | ScanCommandInput,\n ): Promise<ScanCommandOutput | QueryCommandOutput> {\n commandInput.TableName = this._tableName;\n\n // if (startKey) {\n // commandInput.ExclusiveStartKey = typeof startKey === \"string\" ? parseLastEvaluatedKey(startKey) : startKey;\n // }\n\n if (!commandInput.Limit) {\n commandInput.Limit = this.DYNAMO_QUERY_LIMIT;\n }\n\n const isQuery = \"KeyConditionExpression\" in commandInput;\n const command = isQuery ? new QueryCommand(commandInput) : new ScanCommand(commandInput);\n\n log.debug(\"Sending command:\", commandInput);\n\n if (!this.dynamoDb) throw new ErrorDynamoDB(this._tableName, commandInput, \"dynamoDB client not initialized\");\n\n try {\n return await this.dynamoDb.send(command);\n } catch (error) {\n throw new ErrorDynamoDB(this._tableName, commandInput, error);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base-db.repo.js","sourceRoot":"","sources":["../../src/repositories/base-db.repo.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributeValue,\n BatchGetItemCommand,\n BatchWriteItemCommand,\n BatchWriteItemCommandInput,\n DeleteItemCommand,\n GetItemCommand,\n PutItemCommand,\n QueryCommand,\n QueryCommandInput,\n QueryCommandOutput,\n ReturnValue,\n ScanCommand,\n ScanCommandInput,\n ScanCommandOutput,\n TransactWriteItemsCommand,\n TransactWriteItemsCommandInput,\n UpdateItemCommand,\n UpdateItemCommandInput,\n} from \"@aws-sdk/client-dynamodb\";\nimport { marshall, unmarshall } from \"@aws-sdk/util-dynamodb\";\nimport {\n addIndexValue,\n BaseRepoDB,\n buildDynamoDBFilterConditions,\n buildDynamoDBQueryCommand,\n buildDynamoDBScanCommand,\n buildQueryDB,\n buildUpdateExpressions,\n chunkArray,\n DBClientDynamoDB,\n DynamoIndexMap,\n generateLastEvaluatedKey,\n generateUUID,\n List,\n parseIndexFilter,\n parseLastEvaluatedKey,\n removeFields,\n toBase64,\n unMarshall,\n} from \"../index\";\nimport Container, { Service } from \"typedi\";\nimport { ErrorDynamoDB } from \"../exception/errors\";\nimport { BaseEntity, Filter } from \"@chinggis/types\";\n\nService(\"BaseRepoDB\");\n\nexport class BaseRepoDBImpl<T extends BaseEntity> implements BaseRepoDB<T> {\n private readonly dynamoDb: DBClientDynamoDB = Container.get(\"DBClientDynamoDB\");\n private _tableName: string;\n private _indexMap: DynamoIndexMap;\n private readonly DYNAMO_QUERY_LIMIT: number = 25;\n\n async deleteFields(id: string, fieldNames: string[]): Promise<Partial<T>> {\n if (!id || fieldNames.length === 0) {\n return undefined;\n }\n\n const partitionKey = this._indexMap.partitionKey;\n const expressionAttributeNames: Record<string, string> = {};\n const removeExpressions: string[] = [];\n\n fieldNames.forEach((fieldPath, index) => {\n const parts = fieldPath.split(\".\");\n const pathPlaceholders: string[] = [];\n\n parts.forEach((part, partIndex) => {\n const namePlaceholder = `#field${index}_${partIndex}`;\n pathPlaceholders.push(namePlaceholder);\n expressionAttributeNames[namePlaceholder] = part;\n });\n\n removeExpressions.push(pathPlaceholders.join(\".\"));\n });\n\n const updateExpression = `REMOVE ${removeExpressions.join(\", \")}`;\n\n const params = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: id }),\n UpdateExpression: updateExpression,\n ExpressionAttributeNames: expressionAttributeNames,\n ReturnValues: \"ALL_NEW\" as const,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n if (!result.Attributes) {\n throw new Error(\"No attributes returned from UpdateItem.\");\n }\n\n return unmarshall(result.Attributes) as Partial<T>;\n }\n\n fieldNotExists(fieldName: string, from: number, size: number): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n incrementValueByField(\n entityId: string,\n fieldName: string,\n value?: number,\n nestedFieldSeparator?: string,\n ): Promise<T> {\n if (value < 0) {\n throw new Error(\"Increment operation only supports positive values\");\n }\n const fieldPath = nestedFieldSeparator ? fieldName.split(nestedFieldSeparator) : [fieldName];\n return this.incrementOrDecrementFieldValue(entityId, fieldPath, value ?? 1);\n }\n\n decrementValueByField(\n entityId: string,\n fieldName: string,\n value?: number,\n nestedFieldSeparator?: string,\n ): Promise<T> {\n if (value > 0) {\n throw new ErrorDynamoDB(\n this._tableName,\n `Decrement operation only supports negative values, inputValue: ${value}, for field: ${fieldName}`,\n );\n }\n const fieldPath = nestedFieldSeparator ? fieldName.split(nestedFieldSeparator) : [fieldName];\n return this.incrementOrDecrementFieldValue(entityId, fieldPath, value ?? -1);\n }\n\n transactWrite?(operations: any[]): Promise<boolean> {\n throw new Error(\"Method not implemented.\");\n }\n\n async update(entity: Partial<T>): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n\n if (!entity[partitionKey]) {\n throw new ErrorDynamoDB(this._tableName, `Entity must have value in field ${partitionKey}`);\n }\n\n const indexedItem = addIndexValue(entity, this._indexMap);\n\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(\n indexedItem,\n [partitionKey],\n );\n\n const params = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: indexedItem[partitionKey] }),\n UpdateExpression,\n ExpressionAttributeNames,\n ExpressionAttributeValues,\n ReturnValues: ReturnValue.ALL_NEW,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n if (!result.Attributes) {\n throw new Error(\"No attributes returned from UpdateItem.\");\n }\n return unmarshall(result.Attributes) as T;\n }\n\n async updateFields(entity: Partial<T>, fields: string[]): Promise<Partial<T>> {\n if (!entity || !fields?.length) return entity;\n\n const partitionKey = this._indexMap?.partitionKey;\n if (!partitionKey) return entity;\n\n const entityId = entity[partitionKey as keyof T] as unknown as string;\n if (!entityId) return entity;\n\n const updateExpressions: string[] = [];\n const expressionAttributeNames: Record<string, string> = {};\n const expressionAttributeValues: Record<string, any> = {}; // Typ je nach deinem SDK Import\n\n fields.forEach((fieldPath, index) => {\n if (fieldPath === partitionKey) return;\n\n const rawValue = fieldPath.split(\".\").reduce((acc: any, part) => acc?.[part], entity);\n\n if (rawValue === undefined) return;\n const parts = fieldPath.split(\".\");\n const pathPlaceholders: string[] = [];\n\n parts.forEach((part, partIndex) => {\n const namePlaceholder = `#field${index}_${partIndex}`;\n pathPlaceholders.push(namePlaceholder);\n expressionAttributeNames[namePlaceholder] = part; // Mappt z.B. \"#field0_0\" auf \"loyalty\"\n });\n\n const fullPath = pathPlaceholders.join(\".\");\n const valuePlaceholder = `:val${index}`;\n\n updateExpressions.push(`${fullPath} = ${valuePlaceholder}`);\n\n const marshalledWrapper = marshall({ temp: rawValue }, { removeUndefinedValues: true });\n expressionAttributeValues[valuePlaceholder] = marshalledWrapper.temp;\n });\n\n if (updateExpressions.length === 0) return entity;\n\n const response = await this.dynamoDb.send(\n new UpdateItemCommand({\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: entityId }),\n UpdateExpression: `SET ${updateExpressions.join(\", \")}`,\n ExpressionAttributeNames: expressionAttributeNames,\n ExpressionAttributeValues: expressionAttributeValues,\n ReturnValues: ReturnValue.ALL_NEW,\n }),\n );\n\n return response.Attributes ? (unmarshall(response.Attributes) as Partial<T>) : entity;\n }\n\n async updateMany(entityList: Partial<T>[], fields: string[], isTransactional: boolean): Promise<boolean> {\n if (isTransactional === undefined || isTransactional === false || isTransactional === null)\n return this.updateManyNormal(entityList, fields);\n\n return this.updateManyTransactional(entityList, fields);\n }\n\n async save(entity: Partial<T>): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n\n if (!entity[partitionKey]) throw new Error(`Entity must have a ${partitionKey} field.`);\n\n const indexedItem = addIndexValue(entity, this._indexMap);\n\n const params = {\n TableName: this._tableName,\n Item: marshall(indexedItem, { removeUndefinedValues: true }),\n };\n try {\n await this.dynamoDb.send(new PutItemCommand(params));\n\n return entity as T;\n } catch (error) {\n console.error(\"Error saving entity:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async saveMany(entities: Partial<T>[], isTransactional?: boolean): Promise<Partial<T>[]> {\n if (isTransactional === undefined || isTransactional === null || isTransactional === false)\n return await this.saveManyNormal(entities);\n return await this.saveManyTransactional(entities);\n }\n\n async delete(id: string): Promise<boolean> {\n const params = {\n TableName: this._tableName,\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n };\n\n try {\n await this.dynamoDb.send(new DeleteItemCommand(params));\n return true;\n } catch (error) {\n console.error(\"Error deleting item:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async deleteMany(ids: string[]): Promise<boolean> {\n if (ids?.length === 0) return false;\n const chunked = chunkArray(ids, 25);\n for (const chunk of chunked) {\n const deleteRequests = chunk.map((id) => {\n return {\n DeleteRequest: {\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n },\n };\n });\n\n const params = {\n RequestItems: {\n [this._tableName]: deleteRequests,\n },\n };\n\n await this.dynamoDb.send(new BatchWriteItemCommand(params));\n }\n return true;\n }\n\n async findById(id: string): Promise<T> {\n const params = {\n TableName: this._tableName,\n Key: marshall({ [this._indexMap.partitionKey]: id }),\n };\n\n try {\n const result = await this.dynamoDb.send(new GetItemCommand(params));\n if (!result.Item) return null;\n return unmarshall(result.Item) as T;\n } catch (error) {\n console.error(\"Error getting item:\", error);\n throw new ErrorDynamoDB(this._tableName, params, error);\n }\n }\n\n async findByIds(ids: string[]): Promise<T[]> {\n let items: T[] = [];\n if (!ids || ids.length === 0) throw new Error(\"Item must have entityIds\");\n\n const chunked = chunkArray(ids, 100);\n for (const chunk of chunked) {\n const keys = chunk.map((id) => ({ [this._indexMap.partitionKey]: { S: id } }));\n const params = {\n RequestItems: {\n [this._tableName]: { Keys: keys },\n },\n };\n\n const response = await this.dynamoDb.send(new BatchGetItemCommand(params));\n\n items = items.concat(response.Responses?.[this._tableName]?.map((item) => unmarshall(item)) as T[]) ?? [];\n }\n return items;\n }\n\n async find(filter: Filter, debug?: boolean): Promise<List<Partial<T>>> {\n if (!filter) filter = { size: this.DYNAMO_QUERY_LIMIT };\n\n // Enforce Query-only: require indexName & indexValue; otherwise instruct the caller to use scan\n if (!filter.indexName || filter.indexValue === undefined || filter.indexValue === null) {\n throw new ErrorDynamoDB(\n this._tableName,\n \"find in by index\",\n \"find requires indexName and indexValue; use scan() otherwise\",\n );\n }\n\n const dbQuery = buildDynamoDBQueryCommand({\n tableName: this._tableName,\n filter,\n filterCondition: buildDynamoDBFilterConditions(filter, this._indexMap),\n indexMap: this._indexMap,\n });\n\n const response = await this.sendCommandPage<T>(dbQuery, filter?.lastKey, debug);\n const fieldsRemoved = removeFields(response?.items, filter.fieldsInclude, filter.fieldsExclude);\n return { items: fieldsRemoved, lastKey: response?.lastKey };\n }\n\n async scan(filter: Filter, debug?: boolean): Promise<List<Partial<T>>> {\n if (!filter) filter = { size: this.DYNAMO_QUERY_LIMIT };\n const queryCountLimit = this.validateScanQueryCountLimit(filter);\n const expression = buildDynamoDBFilterConditions(filter, this._indexMap);\n const scanInput = buildDynamoDBScanCommand({ tableName: this._tableName, filter, expression });\n const response = await this.sendCommandDeep<T>(\n scanInput,\n filter?.lastKey,\n queryCountLimit,\n filter?.size ?? this.DYNAMO_QUERY_LIMIT,\n debug,\n );\n const fieldsRemoved = removeFields(response?.items, filter.fieldsInclude, filter.fieldsExclude);\n return { items: fieldsRemoved, lastKey: response?.lastKey };\n }\n\n async findOne(filter: Filter): Promise<T> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n queryInput.Limit = 1;\n\n const result = await this.dynamoDb.send(new QueryCommand(queryInput));\n\n if (!result.Items || result.Items.length === 0) return null;\n return unmarshall(result.Items[0]) as T;\n }\n\n findByIndex(indexName: string, value: string): Promise<List<Partial<T>>> {\n return this.find(parseIndexFilter(indexName + \"=\" + value, this._indexMap));\n }\n\n async count(filter: Filter): Promise<number> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n queryInput.Select = \"COUNT\";\n\n const result = await this.dynamoDb.send(new QueryCommand(queryInput));\n return result.Count ?? 0;\n }\n\n async exists(id: string): Promise<boolean> {\n const key = marshall({ [this._indexMap.partitionKey]: id });\n\n const result = await this.dynamoDb.send(\n new GetItemCommand({\n TableName: this._tableName,\n Key: key,\n ProjectionExpression: this._indexMap.partitionKey,\n }),\n );\n\n return !!result.Item;\n }\n\n async getRaw(filter: Filter): Promise<any> {\n const queryInput = buildQueryDB(this._tableName, filter, this._indexMap);\n return this.dynamoDb.send(new QueryCommand(queryInput));\n }\n\n async transactionRead<T>(operations: { id: string; sortKey?: string }[]): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async transactRead?<TResult = any>(operations: any[]): Promise<TResult[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async transactionWrite(operations: {\n create?: { tableName: string; item: Record<string, any> }[];\n update?: {\n tableName: string;\n key: { id: string };\n updateData: Record<string, any>;\n }[];\n delete?: { tableName: string; key: { id: string } }[];\n }): Promise<boolean> {\n const transactItems: any[] = [];\n\n // Create operations\n if (operations.create) {\n for (const { tableName, item } of operations.create) {\n if (!item?.id) {\n item.id = generateUUID();\n }\n transactItems.push({\n Put: {\n TableName: tableName,\n Item: marshall(item, { removeUndefinedValues: true }),\n },\n });\n }\n }\n\n // Update operations\n if (operations.update) {\n for (const { tableName, key, updateData } of operations.update) {\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(\n updateData,\n [\"id\"],\n );\n\n transactItems.push({\n Update: {\n TableName: tableName,\n Key: marshall(key),\n UpdateExpression,\n ExpressionAttributeNames,\n ExpressionAttributeValues,\n },\n });\n }\n }\n\n // Delete operations\n if (operations.delete) {\n for (const { tableName, key } of operations.delete) {\n transactItems.push({\n Delete: {\n TableName: tableName,\n Key: marshall(key),\n },\n });\n }\n }\n\n if (transactItems.length === 0) return false;\n\n // Execute transaction\n try {\n await this.dynamoDb.send(new TransactWriteItemsCommand({ TransactItems: transactItems }));\n return true;\n } catch (error) {\n console.error(\"Transaction failed:\", error);\n throw new ErrorDynamoDB(this._tableName, transactItems, error);\n }\n }\n\n getTableName() {\n return this._tableName;\n }\n\n setIndexMap(indexMap: DynamoIndexMap): boolean {\n this._indexMap = indexMap;\n return true;\n }\n\n setTable(tableName: string): boolean {\n this._tableName = tableName;\n return true;\n }\n\n getIndexMap(): DynamoIndexMap {\n return this._indexMap;\n }\n\n private async updateManyNormal(entityList: Partial<T>[], fieldNames: string[]): Promise<boolean> {\n return this.updateManyTransactional(entityList, fieldNames); // todo implement normal updateMany\n }\n\n private async updateManyTransactional(entityList: Partial<T>[], fieldNames: string[]): Promise<boolean> {\n if (entityList.length === 0) return false;\n\n if (!fieldNames || fieldNames.length === 0) {\n await this.saveMany(entityList, true);\n return true;\n }\n\n const partitionKey = this._indexMap.partitionKey;\n const selectedFields = Array.from(new Set([...(fieldNames || []), partitionKey]));\n const entityListCleaned = removeFields(entityList, selectedFields);\n\n const indexedItems = entityListCleaned.map((entity) => {\n return addIndexValue(entity, this._indexMap);\n });\n\n const transactItems = indexedItems\n .map((item) => {\n if (!item[partitionKey])\n throw new Error(\n `Item must have an ${partitionKey} field. Entity: ${JSON.stringify(item, null, 2)}, \\nupdateFields: ${JSON.stringify(selectedFields)}`,\n );\n\n const { UpdateExpression, ExpressionAttributeNames, ExpressionAttributeValues } = buildUpdateExpressions(item, [\n partitionKey,\n ]);\n\n return {\n Update: {\n TableName: this._tableName,\n Key: { [partitionKey]: { S: item[partitionKey] } }, // id-г шууд key болгож дамжуулах\n UpdateExpression,\n ExpressionAttributeValues,\n ExpressionAttributeNames,\n },\n };\n })\n .filter(Boolean) as any[]; // filter(Boolean) нь хоосон утгуудыг арилгана.\n\n if (transactItems.length < 1) return false;\n\n const chunkedItems = chunkArray(transactItems, 25); // 25-аас дээш бол багцлах\n\n for (const chunk of chunkedItems) await this.dynamoDb.send(new TransactWriteItemsCommand({ TransactItems: chunk }));\n\n return true;\n }\n\n private async saveManyNormal(entities: Partial<T>[]): Promise<Partial<T>[]> {\n if (entities.length === 0) throw new Error(\"Cannot save an empty array of entities.\");\n\n const allSavedEntities: Partial<T>[] = [];\n\n for (const chunk of chunkArray(entities, 25)) {\n chunk.forEach((item) => addIndexValue(item, this._indexMap));\n const putRequests = chunk.map((entity) => ({\n PutRequest: { Item: marshall(entity, { removeUndefinedValues: true }) },\n }));\n\n const params: BatchWriteItemCommandInput = { RequestItems: { [this._tableName]: putRequests } };\n\n const result = await this.dynamoDb.send(new BatchWriteItemCommand(params));\n\n if (result.UnprocessedItems && Object.keys(result.UnprocessedItems).length > 0)\n console.warn(\"⚠️ Some items were unprocessed and need to be retried.\", result.UnprocessedItems);\n\n allSavedEntities.push(...chunk);\n }\n\n return allSavedEntities;\n }\n\n private async saveManyTransactional(entities: Partial<T>[]): Promise<Partial<T>[]> {\n if (entities.length === 0) throw new Error(\"Cannot save an empty array of entities.\");\n\n const allSavedEntities: Partial<T>[] = [];\n\n // DynamoDB TransactWrite limit: 25 actions per request\n for (const chunk of chunkArray(entities, 25)) {\n chunk.forEach((item) => addIndexValue(item, this._indexMap));\n\n const transactItems = chunk.map((entity) => ({\n Put: {\n TableName: this._tableName,\n Item: marshall(entity, { removeUndefinedValues: true }),\n },\n }));\n\n const params: TransactWriteItemsCommandInput = {\n TransactItems: transactItems,\n };\n\n try {\n await this.dynamoDb.send(new TransactWriteItemsCommand(params));\n allSavedEntities.push(...chunk);\n } catch (err) {\n console.error(\"❌ Transaction failed:\", err);\n throw err; // Re-throw so the caller knows it failed\n }\n }\n\n return allSavedEntities;\n }\n\n private async incrementOrDecrementFieldValue(entityId: string, fieldPath: string[], delta: number): Promise<T> {\n const partitionKey = this._indexMap.partitionKey;\n const leafField = fieldPath[fieldPath.length - 1];\n\n if (!this?._indexMap?.numberFields?.includes(leafField)) {\n throw new Error(`${leafField} field not found in indexMap.numberFields`);\n }\n\n const expressionAttributeNames: Record<string, string> = {};\n fieldPath.forEach((segment, i) => {\n expressionAttributeNames[`#f${i}`] = segment;\n });\n\n const pathExpr = fieldPath.map((_, i) => `#f${i}`).join(\".\");\n\n const params: UpdateItemCommandInput = {\n TableName: this._tableName,\n Key: marshall({ [partitionKey]: entityId }),\n UpdateExpression: `SET ${pathExpr} = if_not_exists(${pathExpr}, :start) + :delta`,\n ExpressionAttributeNames: expressionAttributeNames,\n ExpressionAttributeValues: {\n \":delta\": marshall(delta),\n \":start\": marshall(0),\n },\n ReturnValues: ReturnValue.ALL_NEW,\n };\n\n const result = await this.dynamoDb.send(new UpdateItemCommand(params));\n\n return unmarshall(result.Attributes) as T;\n }\n\n /**\n * Runs repeated Scan requests until enough filtered items are collected, the\n * table ends, or the caller's scan-request limit is reached.\n */\n private async sendCommandDeep<T>(\n queryInput: QueryCommandInput | ScanCommandInput,\n startKey?: string | Record<string, any>,\n queryCountLimit?: number,\n size = this.DYNAMO_QUERY_LIMIT,\n debug?: boolean,\n ): Promise<List<T>> {\n const result: List<T> = { items: [] };\n\n let scannedCount = 0;\n\n let lastEvaluatedKey: Record<string, AttributeValue>;\n\n if (startKey) {\n lastEvaluatedKey =\n typeof startKey === \"string\"\n ? parseLastEvaluatedKey<Record<string, AttributeValue>>(startKey) // will throw if invalid\n : startKey;\n }\n\n do {\n const remainingQueryCount = queryCountLimit === undefined ? undefined : queryCountLimit - scannedCount;\n if (remainingQueryCount !== undefined && remainingQueryCount <= 0) {\n result.lastKey = lastEvaluatedKey ? toBase64(JSON.stringify(lastEvaluatedKey)) : undefined;\n return result;\n }\n\n const response: QueryCommandOutput = await this.sendCommand(\n {\n ...queryInput,\n ExclusiveStartKey: lastEvaluatedKey,\n },\n debug,\n );\n const responseItems = response.Items ?? [];\n scannedCount++;\n\n if (result.items.length + responseItems.length > size) {\n const takeCount = size - result.items.length;\n const lastIncludedIndex = takeCount - 1;\n\n result.items.push(...unMarshall<T>(responseItems.slice(0, takeCount)));\n\n const index = this._indexMap.get(queryInput.IndexName);\n result.lastKey = generateLastEvaluatedKey(\n responseItems[lastIncludedIndex],\n index?.field ?? this._indexMap.partitionKey,\n index?.sortKeyField,\n );\n return result;\n }\n\n // no more items to fetch\n if (response.LastEvaluatedKey == undefined) {\n result?.items.push(...unMarshall<T>(responseItems));\n result.lastKey = undefined;\n return result;\n }\n\n if (responseItems.length === 0 && response.LastEvaluatedKey) {\n lastEvaluatedKey = response.LastEvaluatedKey;\n if (queryCountLimit !== undefined && scannedCount >= queryCountLimit) {\n result.lastKey = toBase64(JSON.stringify(response.LastEvaluatedKey));\n return result;\n }\n continue;\n }\n\n if (result?.items.length + responseItems.length <= size) {\n result?.items.push(...unMarshall<T>(responseItems));\n lastEvaluatedKey = response.LastEvaluatedKey;\n if (result?.items.length === size) {\n result.lastKey = toBase64(JSON.stringify(response.LastEvaluatedKey));\n return result;\n }\n if (queryCountLimit !== undefined && scannedCount >= queryCountLimit) {\n result.lastKey = toBase64(JSON.stringify(response.LastEvaluatedKey));\n return result;\n }\n continue;\n }\n } while (lastEvaluatedKey);\n\n return result;\n }\n\n /**\n * Enforces the per-call safety limit for scan pagination.\n */\n private validateScanQueryCountLimit(filter: Filter): number {\n const value = Number(filter.queryCountLimit);\n if (!Number.isInteger(value) || value <= 0) {\n throw new ErrorDynamoDB(this._tableName, \"scan\", \"scan requires queryCountLimit\");\n }\n if (value > 500) {\n throw new ErrorDynamoDB(this._tableName, \"scan\", \"scan queryCountLimit must not be greater than 500\");\n }\n return value;\n }\n\n /**\n * Executes one DynamoDB Query/Scan page and returns DynamoDB's pagination key.\n */\n private async sendCommandPage<T>(\n queryInput: QueryCommandInput | ScanCommandInput,\n startKey?: string | Record<string, any>,\n debug?: boolean,\n ): Promise<List<T>> {\n if (startKey) {\n queryInput.ExclusiveStartKey =\n typeof startKey === \"string\" ? parseLastEvaluatedKey<Record<string, AttributeValue>>(startKey) : startKey;\n }\n\n const response = await this.sendCommand(queryInput, debug);\n return {\n items: unMarshall<T>(response.Items),\n lastKey: response.LastEvaluatedKey ? toBase64(JSON.stringify(response.LastEvaluatedKey)) : undefined,\n };\n }\n\n /**\n * Sends one QueryCommand or ScanCommand after applying table/default limit.\n */\n private async sendCommand(\n commandInput: QueryCommandInput | ScanCommandInput,\n debug?: boolean,\n ): Promise<ScanCommandOutput | QueryCommandOutput> {\n commandInput.TableName = this._tableName;\n\n // if (startKey) {\n // commandInput.ExclusiveStartKey = typeof startKey === \"string\" ? parseLastEvaluatedKey(startKey) : startKey;\n // }\n\n const isQuery = \"KeyConditionExpression\" in commandInput;\n\n if (isQuery && !commandInput.Limit) {\n commandInput.Limit = this.DYNAMO_QUERY_LIMIT;\n }\n\n const command = isQuery ? new QueryCommand(commandInput) : new ScanCommand(commandInput);\n\n if (debug) log.debug(\"Sending command:\", commandInput);\n\n if (!this.dynamoDb) throw new ErrorDynamoDB(this._tableName, commandInput, \"dynamoDB client not initialized\");\n\n try {\n return await this.dynamoDb.send(command);\n } catch (error) {\n throw new ErrorDynamoDB(this._tableName, commandInput, error);\n }\n }\n}\n"]}
|
|
@@ -7,7 +7,7 @@ export declare abstract class BaseRepoESImpl<T extends BaseEntity> implements Ba
|
|
|
7
7
|
private readonly DEFAULT_SIZE;
|
|
8
8
|
private readonly MAX_SIZE;
|
|
9
9
|
findByIds(ids: string[]): Promise<T[]>;
|
|
10
|
-
find(filter: Filter): Promise<List<T>>;
|
|
10
|
+
find(filter: Filter, debug?: boolean): Promise<List<T>>;
|
|
11
11
|
fieldNotExists(fieldName: string, from: number, size: number, includeFields?: string[], excludeFields?: string[]): Promise<T[]>;
|
|
12
12
|
findOne(filter: Filter): Promise<T>;
|
|
13
13
|
nativeQuery(query: any): Promise<API.Search_ResponseBody>;
|
|
@@ -28,3 +28,4 @@ export declare abstract class BaseRepoESImpl<T extends BaseEntity> implements Ba
|
|
|
28
28
|
}>;
|
|
29
29
|
private prepareQuery;
|
|
30
30
|
}
|
|
31
|
+
//# sourceMappingURL=base-es.repo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-es.repo.d.ts","sourceRoot":"","sources":["../../src/repositories/base-es.repo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,IAAI,EAIL,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAErD,8BACsB,cAAc,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAO;IAE1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMtC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAQvD,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC;IAmBT,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAKnC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAUzD,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBxC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKxC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKlC,WAAW,IAAI,MAAM;IAIrB,YAAY,IAAI,MAAM;IAIhB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAQ5C,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe7G,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI5F,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA8B5G,OAAO,CAAC,YAAY;CAerB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-es.repo.interface.d.ts","sourceRoot":"","sources":["../../src/repositories/base-es.repo.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAErD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IACnE,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9G,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnG,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE7G,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,YAAY,IAAI,MAAM,CAAC;IAEvB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC,WAAW,IAAI,MAAM,CAAC;IAEtB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;CAC3D"}
|
|
@@ -23,9 +23,9 @@ let BaseRepoESImpl = class BaseRepoESImpl {
|
|
|
23
23
|
const result = await this.find(filter);
|
|
24
24
|
return result.items;
|
|
25
25
|
}
|
|
26
|
-
async find(filter) {
|
|
26
|
+
async find(filter, debug) {
|
|
27
27
|
const query = (0, index_1.buildQueryOS)(filter);
|
|
28
|
-
const res = await this.search(query);
|
|
28
|
+
const res = await this.search(query, debug);
|
|
29
29
|
return { items: res?.items, total: res?.total };
|
|
30
30
|
}
|
|
31
31
|
async fieldNotExists(fieldName, from, size, includeFields, excludeFields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-es.repo.js","sourceRoot":"","sources":["../../src/repositories/base-es.repo.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BaseRepoES,\n buildQueryOS,\n List,\n OpenSearchClient,\n removeEmptyFields,\n transformAggregationsResponse,\n} from \"../index\";\nimport { Service } from \"typedi\";\nimport esb from \"elastic-builder\";\nimport { BaseEntity, Filter } from \"@chinggis/types\";\nimport { API } from \"@opensearch-project/opensearch\";\n\n@Service(\"BaseRepoES\")\nexport abstract class BaseRepoESImpl<T extends BaseEntity> implements BaseRepoES<T> {\n private searchClient: OpenSearchClient;\n private indexName: string;\n private readonly DEFAULT_SIZE = 25;\n private readonly MAX_SIZE = 250;\n\n async findByIds(ids: string[]): Promise<T[]> {\n const filter: Filter = { id: ids.join(\",\") };\n const result = await this.find(filter);\n return result.items;\n }\n\n async find(filter: Filter): Promise<List<T>> {\n const query = buildQueryOS(filter);\n\n const res = await this.search(query);\n\n return { items: res?.items, total: res?.total };\n }\n\n async fieldNotExists(\n fieldName: string,\n from: number,\n size: number,\n includeFields?: string[],\n excludeFields?: string[],\n ): Promise<T[]> {\n const filter: Filter = {\n size,\n from,\n fieldsInclude: includeFields,\n fieldsExclude: excludeFields,\n };\n const query = buildQueryOS(filter);\n query.index = this.indexName;\n\n // Add field not exists filter using elastic-builder\n const boolQuery = esb.boolQuery().mustNot(esb.existsQuery(fieldName));\n query.body.query = boolQuery.toJSON();\n\n const res = await this.search(query);\n\n return res?.items;\n }\n\n async findOne(filter: Filter): Promise<T> {\n filter.size = 1;\n return this.find(filter).then((result) => result.items[0]);\n }\n\n async nativeQuery(query: any): Promise<API.Search_ResponseBody> {\n try {\n const res = await this.searchClient.search(query);\n return res?.body;\n } catch (err) {\n console.error(JSON.stringify(err, null, 2));\n return undefined;\n }\n }\n\n async count(query: any): Promise<number> {\n const finalQuery = this.prepareQuery(query);\n\n try {\n const res = await this.searchClient.count({\n index: finalQuery.index,\n body: {\n query: finalQuery?.body?.query?.bool\n ? finalQuery.body.query\n : {\n match_all: {},\n },\n },\n });\n\n return Number(res.body.count ?? 0);\n } catch (err) {\n console.error(JSON.stringify(err, null, 2));\n return 0;\n }\n }\n\n getRaw?(filter: Filter): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n setIndexName(indexName: string): boolean {\n this.indexName = indexName;\n return true;\n }\n\n setEndpoint(node: string): boolean {\n this.searchClient = new OpenSearchClient(node);\n return true;\n }\n\n getEndpoint(): string {\n throw new Error(\"Method not implemented.\");\n }\n\n getIndexName(): string {\n return this.indexName;\n }\n\n async findById(id: string): Promise<T | undefined> {\n const result = await this.findByIds([id]);\n\n if (result.length > 1) console.warn(\"More than one entity found by id\", id);\n\n return result.length > 0 ? result.at(0) : undefined;\n }\n\n async findByIdFieldSelected(id: string, includeFields?: string[], excludeFields?: string[]): Promise<T | undefined> {\n const filter: Filter = {\n id,\n size: 10,\n from: 0,\n fieldsInclude: includeFields,\n fieldsExclude: excludeFields,\n };\n const query = buildQueryOS(filter);\n\n const result = await this.search(query);\n\n return result?.items?.length > 0 ? result.items.at(0) : undefined;\n }\n\n async exists(id: string): Promise<boolean> {\n return !!(await this.findById(id));\n }\n\n findBetween<K>(fieldName: string, fromValue: K, toValue: K, includeFields: string[]): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async search(query: any, debug?: boolean): Promise<{ items: T[]; aggs: Record<string, any>; total: number }> {\n debug = debug || process.env.ENV?.toLowerCase()?.trim() === \"dev\";\n const finalQuery = this.prepareQuery(query);\n\n if (debug) {\n log.info(\"searchQuery: \", JSON.stringify(finalQuery, null, 2));\n }\n\n try {\n const { body } = await this.searchClient.search(finalQuery);\n const totalRaw = body.hits.total;\n const totalCount = typeof totalRaw === \"number\" ? totalRaw : totalRaw.value;\n\n return {\n items: body?.hits?.hits?.map((item) => item._source as T) || [],\n aggs: body?.aggregations ? transformAggregationsResponse(body?.aggregations) : undefined,\n total: totalCount,\n };\n } catch (err) {\n console.error(\"searchES ERROR: \", err);\n\n let message: string;\n if (err instanceof Error) message = err.message;\n else if (typeof err === \"string\") message = err;\n else message = \"Unknown searchES error\";\n\n throw new Error(message);\n }\n }\n\n private prepareQuery(query: any): any {\n if (!query.index && this.indexName) {\n query.index = this.indexName;\n }\n\n query.body = query.body ?? {};\n query.body.size = !query.body.size || query.body.size > this.MAX_SIZE ? this.DEFAULT_SIZE : query.body.size;\n\n if (query.body.size > this.MAX_SIZE)\n log.warn(`Query size is too large: ${query.body.size}. Using default size: ${this.DEFAULT_SIZE}`);\n\n query.body.from = query.body.from ?? 0;\n\n return removeEmptyFields(query);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base-es.repo.js","sourceRoot":"","sources":["../../src/repositories/base-es.repo.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BaseRepoES,\n buildQueryOS,\n List,\n OpenSearchClient,\n removeEmptyFields,\n transformAggregationsResponse,\n} from \"../index\";\nimport { Service } from \"typedi\";\nimport esb from \"elastic-builder\";\nimport { BaseEntity, Filter } from \"@chinggis/types\";\nimport { API } from \"@opensearch-project/opensearch\";\n\n@Service(\"BaseRepoES\")\nexport abstract class BaseRepoESImpl<T extends BaseEntity> implements BaseRepoES<T> {\n private searchClient: OpenSearchClient;\n private indexName: string;\n private readonly DEFAULT_SIZE = 25;\n private readonly MAX_SIZE = 250;\n\n async findByIds(ids: string[]): Promise<T[]> {\n const filter: Filter = { id: ids.join(\",\") };\n const result = await this.find(filter);\n return result.items;\n }\n\n async find(filter: Filter, debug?: boolean): Promise<List<T>> {\n const query = buildQueryOS(filter);\n\n const res = await this.search(query, debug);\n\n return { items: res?.items, total: res?.total };\n }\n\n async fieldNotExists(\n fieldName: string,\n from: number,\n size: number,\n includeFields?: string[],\n excludeFields?: string[],\n ): Promise<T[]> {\n const filter: Filter = {\n size,\n from,\n fieldsInclude: includeFields,\n fieldsExclude: excludeFields,\n };\n const query = buildQueryOS(filter);\n query.index = this.indexName;\n\n // Add field not exists filter using elastic-builder\n const boolQuery = esb.boolQuery().mustNot(esb.existsQuery(fieldName));\n query.body.query = boolQuery.toJSON();\n\n const res = await this.search(query);\n\n return res?.items;\n }\n\n async findOne(filter: Filter): Promise<T> {\n filter.size = 1;\n return this.find(filter).then((result) => result.items[0]);\n }\n\n async nativeQuery(query: any): Promise<API.Search_ResponseBody> {\n try {\n const res = await this.searchClient.search(query);\n return res?.body;\n } catch (err) {\n console.error(JSON.stringify(err, null, 2));\n return undefined;\n }\n }\n\n async count(query: any): Promise<number> {\n const finalQuery = this.prepareQuery(query);\n\n try {\n const res = await this.searchClient.count({\n index: finalQuery.index,\n body: {\n query: finalQuery?.body?.query?.bool\n ? finalQuery.body.query\n : {\n match_all: {},\n },\n },\n });\n\n return Number(res.body.count ?? 0);\n } catch (err) {\n console.error(JSON.stringify(err, null, 2));\n return 0;\n }\n }\n\n getRaw?(filter: Filter): Promise<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n setIndexName(indexName: string): boolean {\n this.indexName = indexName;\n return true;\n }\n\n setEndpoint(node: string): boolean {\n this.searchClient = new OpenSearchClient(node);\n return true;\n }\n\n getEndpoint(): string {\n throw new Error(\"Method not implemented.\");\n }\n\n getIndexName(): string {\n return this.indexName;\n }\n\n async findById(id: string): Promise<T | undefined> {\n const result = await this.findByIds([id]);\n\n if (result.length > 1) console.warn(\"More than one entity found by id\", id);\n\n return result.length > 0 ? result.at(0) : undefined;\n }\n\n async findByIdFieldSelected(id: string, includeFields?: string[], excludeFields?: string[]): Promise<T | undefined> {\n const filter: Filter = {\n id,\n size: 10,\n from: 0,\n fieldsInclude: includeFields,\n fieldsExclude: excludeFields,\n };\n const query = buildQueryOS(filter);\n\n const result = await this.search(query);\n\n return result?.items?.length > 0 ? result.items.at(0) : undefined;\n }\n\n async exists(id: string): Promise<boolean> {\n return !!(await this.findById(id));\n }\n\n findBetween<K>(fieldName: string, fromValue: K, toValue: K, includeFields: string[]): Promise<T[]> {\n throw new Error(\"Method not implemented.\");\n }\n\n async search(query: any, debug?: boolean): Promise<{ items: T[]; aggs: Record<string, any>; total: number }> {\n debug = debug || process.env.ENV?.toLowerCase()?.trim() === \"dev\";\n const finalQuery = this.prepareQuery(query);\n\n if (debug) {\n log.info(\"searchQuery: \", JSON.stringify(finalQuery, null, 2));\n }\n\n try {\n const { body } = await this.searchClient.search(finalQuery);\n const totalRaw = body.hits.total;\n const totalCount = typeof totalRaw === \"number\" ? totalRaw : totalRaw.value;\n\n return {\n items: body?.hits?.hits?.map((item) => item._source as T) || [],\n aggs: body?.aggregations ? transformAggregationsResponse(body?.aggregations) : undefined,\n total: totalCount,\n };\n } catch (err) {\n console.error(\"searchES ERROR: \", err);\n\n let message: string;\n if (err instanceof Error) message = err.message;\n else if (typeof err === \"string\") message = err;\n else message = \"Unknown searchES error\";\n\n throw new Error(message);\n }\n }\n\n private prepareQuery(query: any): any {\n if (!query.index && this.indexName) {\n query.index = this.indexName;\n }\n\n query.body = query.body ?? {};\n query.body.size = !query.body.size || query.body.size > this.MAX_SIZE ? this.DEFAULT_SIZE : query.body.size;\n\n if (query.body.size > this.MAX_SIZE)\n log.warn(`Query size is too large: ${query.body.size}. Using default size: ${this.DEFAULT_SIZE}`);\n\n query.body.from = query.body.from ?? 0;\n\n return removeEmptyFields(query);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.service.d.ts","sourceRoot":"","sources":["../../../src/service/api.services/api.service.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAiB,MAAM,OAAO,CAAC;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBACa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,GAAG,CAAgB;gBAEf,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAa5C,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAc3C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAS1F,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IASxE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IASvE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;CAQ7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.service.interface.d.ts","sourceRoot":"","sources":["../../../src/service/api.services/api.service.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/api.services/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/service/auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,qBACa,eAAgB,YAAW,WAAW;IACjD,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAAE,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,OAAO,CAAC;IAIb,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrE,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC;IAab,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIhD;AAED,wBAAgB,SAAS,IAAI,eAAe,CAwC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.service.interface.d.ts","sourceRoot":"","sources":["../../src/service/auth.service.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAAE,EACpB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,mBAAmB,CACjB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB"}
|
|
@@ -12,7 +12,7 @@ export declare abstract class BaseServiceImpl<T extends BaseEntity, D extends Ba
|
|
|
12
12
|
searchQuery(queryParams: string): Promise<Partial<T>[]>;
|
|
13
13
|
incrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;
|
|
14
14
|
decrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;
|
|
15
|
-
search(filter: Filter): Promise<T[]>;
|
|
15
|
+
search(filter: Filter, debug?: boolean): Promise<T[]>;
|
|
16
16
|
searchFieldNotExist(fieldName: string, from: number, size: number): Promise<Partial<T>[]>;
|
|
17
17
|
save(entity: Partial<T>, ownerId: string, createdByUserId?: string): Promise<T>;
|
|
18
18
|
saveAll(entities: Partial<T>[], ownerId: string, createdByUserId?: string, isTransactional?: boolean): Promise<Partial<T>[]>;
|
|
@@ -30,14 +30,15 @@ export declare abstract class BaseServiceImpl<T extends BaseEntity, D extends Ba
|
|
|
30
30
|
findAllByIndex(indexName: string, indexValue: any): Promise<T[]>;
|
|
31
31
|
findByField(fieldName: string, fieldValue: any): Promise<List<T>>;
|
|
32
32
|
findFirst(fieldName: string, fieldValue: string | boolean | number | Date): Promise<T>;
|
|
33
|
-
find(filter: Filter): Promise<List<Partial<T>>>;
|
|
33
|
+
find(filter: Filter, debug?: boolean): Promise<List<Partial<T>>>;
|
|
34
34
|
findById(entityId: string, profileId?: string): Promise<T>;
|
|
35
35
|
findByIds(entityIds: string[], profileId?: string): Promise<T[]>;
|
|
36
|
-
scan(filter: Filter): Promise<List<Partial<T>>>;
|
|
36
|
+
scan(filter: Filter | string, debug?: boolean): Promise<List<Partial<T>>>;
|
|
37
37
|
throwErrorHttp(error: {
|
|
38
38
|
message: string;
|
|
39
39
|
code: number;
|
|
40
40
|
}, message?: string, errorContent?: any): void;
|
|
41
|
+
throwErrorsHttp(code: number, message: string, errorContent?: any): void;
|
|
41
42
|
throwErrorDatabase(tableName: string, command: any, errorContent?: any): void;
|
|
42
43
|
throwErrorValidation(entityName: string, validation: Map<string, any>, errorContent?: any): void;
|
|
43
44
|
throwError(code: number, message: string, errorContent?: any): void;
|
|
@@ -52,3 +53,4 @@ export declare abstract class BaseServiceImpl<T extends BaseEntity, D extends Ba
|
|
|
52
53
|
private checkIsIndexedField;
|
|
53
54
|
private fetchAll;
|
|
54
55
|
}
|
|
56
|
+
//# sourceMappingURL=base.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.service.d.ts","sourceRoot":"","sources":["../../src/service/base.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,16 +72,26 @@ export interface BaseService<T extends BaseEntity, R = any> extends BaseSocketSe
|
|
|
72
72
|
*/
|
|
73
73
|
findByIds(entityIds: string[], ownerId?: string): Promise<T[]>;
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
75
|
+
* Executes a DynamoDB Query through a configured index.
|
|
76
76
|
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
77
|
+
* This method must not fall back to Scan. The filter must resolve to an
|
|
78
|
+
* indexed query.
|
|
79
|
+
*
|
|
80
|
+
* @param filter - Filter object that resolves to a DynamoDB index query.
|
|
81
|
+
* @param debug - When true, logs the generated DynamoDB command.
|
|
82
|
+
* @returns One DynamoDB query page.
|
|
79
83
|
*/
|
|
80
|
-
find(filter: Filter): Promise<List<Partial<T>>>;
|
|
84
|
+
find(filter: Filter, debug?: boolean): Promise<List<Partial<T>>>;
|
|
81
85
|
/**
|
|
82
|
-
*
|
|
86
|
+
* Executes a DynamoDB Scan for non-indexed/ad-hoc filters.
|
|
87
|
+
*
|
|
88
|
+
* The filter must include `queryCountLimit` from 1 to 500. Use this only for
|
|
89
|
+
* low-volume maintenance or local/admin workflows.
|
|
90
|
+
*
|
|
91
|
+
* @param filter - Scan filter or query-string. Must include `queryCountLimit`.
|
|
92
|
+
* @param debug - When true, logs each generated ScanCommand input.
|
|
83
93
|
*/
|
|
84
|
-
scan(filter: Filter): Promise<List<Partial<T>>>;
|
|
94
|
+
scan(filter: Filter | string, debug?: boolean): Promise<List<Partial<T>>>;
|
|
85
95
|
findQuery(queryParams: string): Promise<List<Partial<T>>>;
|
|
86
96
|
searchQuery(queryParams: string): Promise<Partial<T>[]>;
|
|
87
97
|
findAll(): Promise<T[]>;
|
|
@@ -97,12 +107,12 @@ export interface BaseService<T extends BaseEntity, R = any> extends BaseSocketSe
|
|
|
97
107
|
throwErrorDatabase(tableName: string, command: any, errorContent?: any): void;
|
|
98
108
|
throwErrorValidation(entityName: string, validation: Map<string, any>, errorContent?: any): void;
|
|
99
109
|
/**
|
|
100
|
-
*
|
|
110
|
+
* Executes an OpenSearch read for flexible filtering/full-text use cases.
|
|
101
111
|
*
|
|
102
|
-
* @param filter -
|
|
103
|
-
* @
|
|
112
|
+
* @param filter - OpenSearch filter object.
|
|
113
|
+
* @param debug - When true, logs the generated OpenSearch query.
|
|
104
114
|
*/
|
|
105
|
-
search(filter: Filter): Promise<T[]>;
|
|
115
|
+
search(filter: Filter, debug?: boolean): Promise<T[]>;
|
|
106
116
|
searchFieldNotExist(fieldName: string, from: number, size: number): Promise<Partial<T>[]>;
|
|
107
117
|
/**
|
|
108
118
|
* Changes the owner of an entity.
|
|
@@ -119,3 +129,4 @@ export interface BaseService<T extends BaseEntity, R = any> extends BaseSocketSe
|
|
|
119
129
|
decrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;
|
|
120
130
|
processChanges(itemOld: T, itemNew: T, action: ActionDynamoDB, tableName: string): Promise<any>;
|
|
121
131
|
}
|
|
132
|
+
//# sourceMappingURL=base.service.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.service.interface.d.ts","sourceRoot":"","sources":["../../src/service/base.service.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.service.interface.js","sourceRoot":"","sources":["../../src/service/base.service.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ActionDynamoDB, BaseEntity, BaseSocketService, DynamoIndexMap, Filter, List } from \"../index\";\nimport { EntityConfig } from \"@chinggis/types\";\n\n/**\n * Defines a generic base service interface for working with entities in both\n * DynamoDB and OpenSearch.\n * @deprecated use crudService instead\n */\nexport interface BaseService<T extends BaseEntity, R = any> extends BaseSocketService<R> {\n setConfig(config: EntityConfig): void;\n\n getTableName(): string;\n /**\n * Creates a new entity for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entity - The entity to be created.\n * @param createdByUserId - The created userId.\n * @returns The created entity.\n */\n save(entity: Partial<T>, ownerId: string, createdByUserId?: string): Promise<T>;\n\n /**\n * Creates multiple new entities for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entity - An array of entities to be created.\n * @param createdByUserId - The created userId.\n * @param isTransactional - Whether to perform the operation in a transaction.\n * @returns An array of created entities.\n */\n saveAll(\n entity: Partial<T>[],\n ownerId: string,\n createdByUserId?: string,\n isTransactional?: boolean,\n ): Promise<Partial<T>[]>;\n\n /**\n * Applies partial updates to an entity for the given user.\n * Only the specified fields will be updated.\n * @param requestUserId - The ID of the user who owns the entity. If not exist means admin\n * @param entity - The entity with updated fields.\n * @returns The updated entity.\n */\n update(entity: T, requestUserId?: string): Promise<T>;\n\n /**\n * Applies partial updates to multiple entities for the given user.\n * Only the specified fields will be updated for each entity.\n * @param requestUserId - The ID of the user who owns the entities. If not exist means admin\n * @param entity - An array of entities with updated fields.\n * @param fields - The list of field names to update in each entity.\n * @param isTransactional - Whether to perform the operation in a transaction.\n * @returns True if all entities were successfully updated.\n */\n updateAll(entity: T[], fields: string[], requestUserId?: string, isTransactional?: boolean): Promise<boolean>;\n\n /**\n * Deletes an entity by ID for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entityId - The ID of the entity to delete.\n * @returns True if the entity was successfully deleted.\n */\n remove(entityId: string, ownerId?: string): Promise<boolean>;\n\n /**\n * Deletes multiple entities by their IDs for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entityIds - An array of entity IDs to delete.\n * @returns True if all entities were successfully deleted.\n */\n removeAll(entityIds: string[], ownerId?: string): Promise<boolean>;\n\n /**\n * Retrieves an entity by its ID for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entityId - The ID of the entity to retrieve.\n * @returns The requested entity.\n */\n findById(entityId: string, ownerId?: string): Promise<T>;\n\n /**\n * Retrieves multiple entities by their IDs for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entityIds - An array of entity IDs to retrieve.\n * @returns An array of found entities.\n */\n findByIds(entityIds: string[], ownerId?: string): Promise<T[]>;\n\n /**\n *
|
|
1
|
+
{"version":3,"file":"base.service.interface.js","sourceRoot":"","sources":["../../src/service/base.service.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { ActionDynamoDB, BaseEntity, BaseSocketService, DynamoIndexMap, Filter, List } from \"../index\";\nimport { EntityConfig } from \"@chinggis/types\";\n\n/**\n * Defines a generic base service interface for working with entities in both\n * DynamoDB and OpenSearch.\n * @deprecated use crudService instead\n */\nexport interface BaseService<T extends BaseEntity, R = any> extends BaseSocketService<R> {\n setConfig(config: EntityConfig): void;\n\n getTableName(): string;\n /**\n * Creates a new entity for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entity - The entity to be created.\n * @param createdByUserId - The created userId.\n * @returns The created entity.\n */\n save(entity: Partial<T>, ownerId: string, createdByUserId?: string): Promise<T>;\n\n /**\n * Creates multiple new entities for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entity - An array of entities to be created.\n * @param createdByUserId - The created userId.\n * @param isTransactional - Whether to perform the operation in a transaction.\n * @returns An array of created entities.\n */\n saveAll(\n entity: Partial<T>[],\n ownerId: string,\n createdByUserId?: string,\n isTransactional?: boolean,\n ): Promise<Partial<T>[]>;\n\n /**\n * Applies partial updates to an entity for the given user.\n * Only the specified fields will be updated.\n * @param requestUserId - The ID of the user who owns the entity. If not exist means admin\n * @param entity - The entity with updated fields.\n * @returns The updated entity.\n */\n update(entity: T, requestUserId?: string): Promise<T>;\n\n /**\n * Applies partial updates to multiple entities for the given user.\n * Only the specified fields will be updated for each entity.\n * @param requestUserId - The ID of the user who owns the entities. If not exist means admin\n * @param entity - An array of entities with updated fields.\n * @param fields - The list of field names to update in each entity.\n * @param isTransactional - Whether to perform the operation in a transaction.\n * @returns True if all entities were successfully updated.\n */\n updateAll(entity: T[], fields: string[], requestUserId?: string, isTransactional?: boolean): Promise<boolean>;\n\n /**\n * Deletes an entity by ID for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entityId - The ID of the entity to delete.\n * @returns True if the entity was successfully deleted.\n */\n remove(entityId: string, ownerId?: string): Promise<boolean>;\n\n /**\n * Deletes multiple entities by their IDs for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entityIds - An array of entity IDs to delete.\n * @returns True if all entities were successfully deleted.\n */\n removeAll(entityIds: string[], ownerId?: string): Promise<boolean>;\n\n /**\n * Retrieves an entity by its ID for the given user.\n * @param ownerId - The ID of the user who owns the entity.\n * @param entityId - The ID of the entity to retrieve.\n * @returns The requested entity.\n */\n findById(entityId: string, ownerId?: string): Promise<T>;\n\n /**\n * Retrieves multiple entities by their IDs for the given user.\n * @param ownerId - The ID of the user who owns the entities.\n * @param entityIds - An array of entity IDs to retrieve.\n * @returns An array of found entities.\n */\n findByIds(entityIds: string[], ownerId?: string): Promise<T[]>;\n\n /**\n * Executes a DynamoDB Query through a configured index.\n *\n * This method must not fall back to Scan. The filter must resolve to an\n * indexed query.\n *\n * @param filter - Filter object that resolves to a DynamoDB index query.\n * @param debug - When true, logs the generated DynamoDB command.\n * @returns One DynamoDB query page.\n */\n find(filter: Filter, debug?: boolean): Promise<List<Partial<T>>>;\n\n /**\n * Executes a DynamoDB Scan for non-indexed/ad-hoc filters.\n *\n * The filter must include `queryCountLimit` from 1 to 500. Use this only for\n * low-volume maintenance or local/admin workflows.\n *\n * @param filter - Scan filter or query-string. Must include `queryCountLimit`.\n * @param debug - When true, logs each generated ScanCommand input.\n */\n scan(filter: Filter | string, debug?: boolean): Promise<List<Partial<T>>>;\n\n findQuery(queryParams: string): Promise<List<Partial<T>>>;\n\n searchQuery(queryParams: string): Promise<Partial<T>[]>;\n\n findAll(): Promise<T[]>;\n\n findAllMatch(filter: Filter | string): Promise<T[]>;\n\n findAllByIndex(indexName: string, indexValue: any): Promise<T[]>;\n\n findByField(fieldName: string, fieldValue: any): Promise<List<T>>;\n\n findFirst(fieldName: string, fieldValue: string | boolean | number | Date): Promise<T>;\n\n throwError(code: number, message: string, errorContent?: any): void;\n\n throwErrorHttp(error: { message: string; code: number }, message: string, errorContent?: any): void;\n\n throwErrorDatabase(tableName: string, command: any, errorContent?: any): void;\n\n throwErrorValidation(entityName: string, validation: Map<string, any>, errorContent?: any): void;\n\n // throwError(httpStatus: number, message: string): void;\n /**\n * Executes an OpenSearch read for flexible filtering/full-text use cases.\n *\n * @param filter - OpenSearch filter object.\n * @param debug - When true, logs the generated OpenSearch query.\n */\n search(filter: Filter, debug?: boolean): Promise<T[]>;\n\n searchFieldNotExist(fieldName: string, from: number, size: number): Promise<Partial<T>[]>;\n\n /**\n * Changes the owner of an entity.\n * @param ownerId - The new owner's ID.\n * @param entityId - The ID of the entity to transfer.\n * @returns The updated entity with the new owner.\n */\n changeOwner(entityId: string, ownerId: string): Promise<T>;\n\n setTable(tableName: string, dynamoIndexMap: DynamoIndexMap): boolean;\n\n setOpensearch(indexName: string, opensearchEndpoint: string): boolean;\n\n getIndexES(): string;\n\n getIndexMapDB(): DynamoIndexMap;\n\n incrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;\n\n decrementValueByField(entityId: string, fieldName: string, value?: number): Promise<T>;\n\n processChanges(itemOld: T, itemNew: T, action: ActionDynamoDB, tableName: string): Promise<any>;\n}\n"]}
|