dynamodb-ts-model
Version:
A DynamoDB model/client with full TypeScript typings
61 lines • 4.77 kB
JavaScript
"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