UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

107 lines (106 loc) 4.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TableRepository = void 0; const batchDeleteRequest_js_1 = require("../../../entity/actions/batchDelete/batchDeleteRequest.js"); const batchGetRequest_js_1 = require("../../../entity/actions/batchGet/batchGetRequest.js"); const batchPutRequest_js_1 = require("../../../entity/actions/batchPut/batchPutRequest.js"); const index_js_1 = require("../../../errors/index.js"); const index_js_2 = require("../../../table/actions/accessPattern/index.js"); const index_js_3 = require("../../../table/actions/batchGet/index.js"); const index_js_4 = require("../../../table/actions/batchWrite/index.js"); const index_js_5 = require("../../../table/actions/deletePartition/index.js"); const index_js_6 = require("../../../table/actions/parsePrimaryKey/index.js"); const index_js_7 = require("../../../table/actions/query/index.js"); const index_js_8 = require("../../../table/actions/scan/index.js"); const index_js_9 = require("../../../table/index.js"); class TableRepository extends index_js_9.TableAction { constructor(table, entities = []) { super(table, entities); } entities(...nextEntities) { return new TableRepository(this.table, nextEntities); } parsePrimaryKey(keyInput) { return new index_js_6.PrimaryKeyParser(this.table).parse(keyInput); } async scan(options = {}) { return new index_js_8.ScanCommand(this.table, this[index_js_9.$entities], options).send(); } async query(query, options = {}) { return new index_js_7.QueryCommand(this.table, this[index_js_9.$entities], query, options).send(); } async deletePartition(query, options = {}) { return new index_js_5.DeletePartitionCommand(this.table, this[index_js_9.$entities], query, options).send(); } static executeBatchGet(...commands) { return (0, index_js_3.execute)(...commands); } batchGet(..._requests) { const [headRequestOrOptions = {}, ...tailRequests] = _requests; const requests = tailRequests; let options = {}; if (isBatchGetRequest(headRequestOrOptions)) { requests.unshift(headRequestOrOptions); } else { options = headRequestOrOptions; } const firstRequest = requests[0]; if (firstRequest === undefined) { throw new index_js_1.DynamoDBToolboxError('actions.incompleteAction', { message: 'batchGet incomplete: No BatchGetRequest supplied' }); } const entities = []; const entityNames = new Set(); for (const request of requests) { if (entityNames.has(request.entity.entityName)) { continue; } entities.push(request.entity); entityNames.add(request.entity.entityName); } return new index_js_3.BatchGetCommand(this.table, entities, requests, options); } static executeBatchWrite(...commands) { return (0, index_js_4.execute)(...commands); } batchWrite(..._requests) { const [headRequestOrOptions = {}, ...tailRequests] = _requests; const requests = tailRequests; let options = {}; if (isBatchWriteRequest(headRequestOrOptions)) { requests.unshift(headRequestOrOptions); } else { options = headRequestOrOptions; } const firstRequest = requests[0]; if (firstRequest === undefined) { throw new index_js_1.DynamoDBToolboxError('actions.incompleteAction', { message: 'batchGet incomplete: No BatchWriteRequest supplied' }); } const entities = []; const entityNames = new Set(); for (const request of requests) { if (entityNames.has(request.entity.entityName)) { continue; } entities.push(request.entity); entityNames.add(request.entity.entityName); } return new index_js_4.BatchWriteCommand(this.table, entities, requests, options); } accessPattern(schema, pattern, options = {}) { return new index_js_2.AccessPattern(this.table, this[index_js_9.$entities], schema, /** * @debt v3 "put query in a 'query' key so it's not polluted by the options" */ pattern, options); } } exports.TableRepository = TableRepository; TableRepository.actionName = 'repository'; const isBatchGetRequest = (input) => input instanceof batchGetRequest_js_1.BatchGetRequest; const isBatchWriteRequest = (input) => input instanceof batchPutRequest_js_1.BatchPutRequest || input instanceof batchDeleteRequest_js_1.BatchDeleteRequest;