retryable-document-client
Version:
Retryable DynamoDB DocumentClient
172 lines (171 loc) • 6.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var exponential_1 = require("./strategies/exponential");
var linear_1 = require("./strategies/linear");
var constant_1 = require("./strategies/constant");
var instant_1 = require("./strategies/instant");
var constructor = function (documentClient, defaultRetryStrategy) {
var client = {
batchGet: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.batchGet(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.batchGet(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
batchWrite: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.batchWrite(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.batchWrite(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
createSet: documentClient.createSet,
delete: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.delete(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.delete(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
get: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.get(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.get(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
put: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.put(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.put(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
query: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.query(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.query(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
scan: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.scan(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.scan(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
update: function (params, callback, retryStrategy, attempt) {
if (retryStrategy === void 0) { retryStrategy = defaultRetryStrategy; }
if (attempt === void 0) { attempt = 1; }
documentClient.update(params, function (err, data) {
if (retryStrategy) {
retryStrategy(err, attempt, function (retry) {
if (retry) {
client.update(params, callback, retryStrategy, attempt + 1);
}
else {
callback(err, data);
}
});
}
else {
callback(err, data);
}
});
},
};
return client;
};
exports.strategies = {
exponential: exponential_1.default,
linear: linear_1.default,
constant: constant_1.default,
instant: instant_1.default,
};
exports.default = constructor;