UNPKG

dynamodb-ts-model

Version:

A DynamoDB model/client with full TypeScript typings

61 lines 4.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createConditionCheckRequest = exports.createDeleteRequest = exports.createUpdateRequest = exports.createPutRequest = exports.createQueryRequest = exports.createScanRequest = exports.createGetRequest = exports.getReturnedConsumedCapacity = void 0; const dynamodb_expressions_1 = require("dynamodb-expressions"); const utils_1 = require("./utils"); function getReturnedConsumedCapacity({ client }) { return client.options.enableTableMetrics ? 'INDEXES' : 'NONE'; } exports.getReturnedConsumedCapacity = getReturnedConsumedCapacity; function createGetRequest(model, params) { const { key, projection, consistency } = params; return { TableName: model.tableName, Key: key, ProjectionExpression: projection === null || projection === void 0 ? void 0 : projection.join(', '), ConsistentRead: consistency === 'strong', ReturnConsumedCapacity: getReturnedConsumedCapacity(model), }; } exports.createGetRequest = createGetRequest; function createScanRequest(model, params) { const attr = {}; const { indexName, filterConditions, pageToken, limit, projection, consistency } = params; return Object.assign({ TableName: model.tableName, IndexName: indexName, FilterExpression: filterConditions && (0, dynamodb_expressions_1.buildConditionExpression)(filterConditions, attr), ExclusiveStartKey: (0, utils_1.parsePageToken)(pageToken), Limit: limit, ProjectionExpression: projection === null || projection === void 0 ? void 0 : projection.join(', '), ConsistentRead: consistency === 'strong', ReturnConsumedCapacity: getReturnedConsumedCapacity(model) }, attr); } exports.createScanRequest = createScanRequest; function createQueryRequest(model, params) { const attr = {}; const { indexName, keyConditions, filterConditions, projection, limit, ascending, pageToken, consistency } = params; return Object.assign({ TableName: model.tableName, IndexName: indexName, KeyConditionExpression: (0, dynamodb_expressions_1.buildConditionExpression)(keyConditions, attr), FilterExpression: filterConditions && (0, dynamodb_expressions_1.buildConditionExpression)(filterConditions, attr), ExclusiveStartKey: (0, utils_1.parsePageToken)(pageToken), Limit: limit, ProjectionExpression: projection === null || projection === void 0 ? void 0 : projection.join(', '), ScanIndexForward: ascending, ConsistentRead: consistency === 'strong', ReturnConsumedCapacity: getReturnedConsumedCapacity(model) }, attr); } exports.createQueryRequest = createQueryRequest; function createPutRequest(model, params) { const attr = {}; const { item, conditions } = params; const fullItem = Object.assign(item, ...model.params.creators.map(creator => creator(item))); return Object.assign({ TableName: model.tableName, Item: fullItem, ConditionExpression: conditions && (0, dynamodb_expressions_1.buildConditionExpression)(conditions, attr), ReturnConsumedCapacity: getReturnedConsumedCapacity(model) }, attr); } exports.createPutRequest = createPutRequest; function createUpdateRequest(model, params) { // Type mismatch with DynamoDB lib - update items within transactions require UpdateExpression to be present even if // it's undefined, it must not be absent const attr = {}; const { key, attributes, conditions, returnValues = 'all_new' } = params; Object.assign(attributes, ...model.params.updaters.map(updater => updater(attributes))); return Object.assign({ TableName: model.tableName, Key: key, ReturnValues: returnValues === 'all_old' ? 'ALL_OLD' : 'ALL_NEW', UpdateExpression: (0, dynamodb_expressions_1.buildUpdateExpression)(attributes, attr), ConditionExpression: conditions && (0, dynamodb_expressions_1.buildConditionExpression)(conditions, attr), ReturnConsumedCapacity: getReturnedConsumedCapacity(model) }, attr); } exports.createUpdateRequest = createUpdateRequest; function createDeleteRequest(model, params) { const attr = {}; const { key, conditions } = params; return Object.assign({ TableName: model.tableName, Key: key, ReturnValues: 'ALL_OLD', ConditionExpression: conditions && (0, dynamodb_expressions_1.buildConditionExpression)(conditions, attr), ReturnConsumedCapacity: getReturnedConsumedCapacity(model) }, attr); } exports.createDeleteRequest = createDeleteRequest; function createConditionCheckRequest(model, params) { const attr = {}; const { key, conditions } = params; return Object.assign({ TableName: model.tableName, Key: key, ConditionExpression: conditions && (0, dynamodb_expressions_1.buildConditionExpression)(conditions, attr) }, attr); } exports.createConditionCheckRequest = createConditionCheckRequest; //# sourceMappingURL=requests.js.map