backendless
Version:
Backendless JavaScript SDK for Node.js and the browser
213 lines (212 loc) • 8.11 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.HiveStore = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _utils = _interopRequireDefault(require("../../utils"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var HiveStore = /*#__PURE__*/function () {
function HiveStore(context, storeKey) {
(0, _classCallCheck2["default"])(this, HiveStore);
this.TYPE = this.constructor.TYPE;
if (!storeKey || typeof storeKey !== 'string') {
throw new Error('Store key must be a string.');
}
this.app = context.app;
this.hiveName = context.hiveName;
this.storeKey = storeKey;
}
(0, _createClass2["default"])(HiveStore, [{
key: "getBaseURL",
value: function getBaseURL() {
return "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/").concat(this.storeKey);
}
}, {
key: "delete",
value: function _delete() {
return this.constructor["delete"].call(_objectSpread(_objectSpread({}, this), this.constructor), [this.storeKey]);
}
}, {
key: "exist",
value: function () {
var _exist = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var result;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.constructor.exist.call(_objectSpread(_objectSpread({}, this), this.constructor), [this.storeKey]);
case 2:
result = _context.sent;
return _context.abrupt("return", !!result);
case 4:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function exist() {
return _exist.apply(this, arguments);
}
return exist;
}()
}, {
key: "rename",
value: function rename(newKey, overwrite) {
if (!newKey || typeof newKey !== 'string') {
throw new Error('New key name must be provided and must be a string.');
}
if (overwrite !== undefined && typeof overwrite !== 'boolean') {
throw new Error('Overwrite must be a boolean.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/rename"),
query: {
newKey: newKey,
overwrite: overwrite
}
});
}
}, {
key: "getExpiration",
value: function getExpiration() {
return this.app.request.get({
url: "".concat(this.getBaseURL(), "/get-expiration-ttl")
});
}
}, {
key: "clearExpiration",
value: function clearExpiration() {
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/clear-expiration")
});
}
}, {
key: "expireAfter",
value: function expireAfter(ttl) {
if (isNaN(ttl) || typeof ttl !== 'number') {
throw new Error('TTL must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/expire"),
query: {
ttl: ttl
}
});
}
}, {
key: "expireAt",
value: function expireAt(unixTime) {
if (isNaN(unixTime) || typeof unixTime !== 'number') {
throw new Error('Expiration time must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/expire-at"),
query: {
unixTime: unixTime
}
});
}
}, {
key: "touch",
value: function touch() {
return this.constructor.touch.call(_objectSpread(_objectSpread({}, this), this.constructor), [this.storeKey]);
}
}, {
key: "secondsSinceLastOperation",
value: function secondsSinceLastOperation() {
return this.app.request.get({
url: "".concat(this.getBaseURL(), "/seconds-since-last-operation")
});
}
}], [{
key: "registerType",
value: function registerType(hive) {
var _this = this;
var context = _objectSpread(_objectSpread({}, this), {}, {
app: hive.app,
hiveName: hive.hiveName
});
var factory = function factory(storeKey) {
return new _this(context, storeKey);
};
this.STATIC_METHODS.forEach(function (methodName) {
factory[methodName] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _this[methodName].apply(context, args);
};
});
return factory;
}
}, {
key: "keys",
value: function keys(options) {
if (options !== undefined) {
if (!_utils["default"].isObject(options)) {
throw new Error('Options must be an object.');
}
var cursor = options.cursor,
pageSize = options.pageSize,
filterPattern = options.filterPattern;
if (cursor !== undefined && (typeof cursor !== 'number' || isNaN(cursor))) {
throw new Error('Cursor must be a number.');
}
if (pageSize !== undefined && (typeof pageSize !== 'number' || isNaN(pageSize))) {
throw new Error('Page size must be a number.');
}
if (filterPattern !== undefined && (typeof filterPattern !== 'string' || !filterPattern)) {
throw new Error('Filter pattern must be a string.');
}
}
return this.app.request.get({
url: "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/keys"),
query: options
});
}
}, {
key: "delete",
value: function _delete(keys) {
if (!Array.isArray(keys)) {
throw new Error('Keys must be provided and must be a list of strings.');
}
return this.app.request["delete"]({
url: this.app.urls.hiveStore(this.hiveName, this.TYPE),
data: keys
});
}
}, {
key: "exist",
value: function exist(keys) {
if (!Array.isArray(keys)) {
throw new Error('Keys must be provided and must be a list of strings.');
}
return this.app.request.post({
url: "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/action/exist"),
data: keys
});
}
}, {
key: "touch",
value: function touch(keys) {
if (!Array.isArray(keys)) {
throw new Error('Keys must be provided and must be a list of strings.');
}
return this.app.request.put({
url: "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/action/touch"),
data: keys
});
}
}]);
return HiveStore;
}();
exports.HiveStore = HiveStore;
(0, _defineProperty2["default"])(HiveStore, "STATIC_METHODS", ['keys', 'delete', 'exist', 'touch']);