UNPKG

backendless

Version:

Backendless JavaScript SDK for Node.js and the browser

213 lines (212 loc) 8.11 kB
"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']);