@salto-io/da-playa
Version:
Deploy locks management (CLI and Slackbot)
67 lines • 2.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Data = void 0;
const dynamodb_1 = __importDefault(require("dynamodb"));
const Data = ({ model, modelName, dynamoDBRegion, dynamoDbUri, }) => {
if (dynamoDBRegion || dynamoDbUri) {
dynamodb_1.default.AWS.config.update({
...(dynamoDBRegion
? {
region: dynamoDBRegion,
}
: {}),
...(dynamoDbUri
? {
endpoint: dynamoDbUri,
}
: {}),
});
}
const Model = dynamodb_1.default.define(modelName, model);
return {
get: ({ filterExpression, filterAttributeNames, filterAttributeValues, }) => new Promise((resolve, reject) => {
Model.scan()
.filterExpression(filterExpression)
.expressionAttributeValues(filterAttributeValues)
.expressionAttributeNames(filterAttributeNames)
.exec((err, result) => {
if (err) {
reject(err);
}
else {
resolve(result.Items.map((x) => x.attrs));
}
});
}),
set: updateParams => new Promise((resolve, reject) => {
Model.update(updateParams, (err, result) => {
if (err) {
reject(err);
}
else {
resolve(result.attrs);
}
});
}),
create: async (createParams) => {
const newItem = new Model(createParams);
const created = await newItem.save();
return created.attrs;
},
init: async () => {
try {
await dynamodb_1.default.createTables();
}
catch (e) {
// eslint-disable-next-line no-console
console.error('failed to create da playa tables', e);
throw e;
}
},
};
};
exports.Data = Data;
//# sourceMappingURL=index.js.map