backendless
Version:
Backendless JavaScript SDK for Node.js and the browser
126 lines (125 loc) • 6.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.KeyValueStore = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _constants = require("../constants");
var _baseStore = require("./base-store");
var _utils = _interopRequireDefault(require("../../utils"));
var _utils2 = require("../utils");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2["default"])(t); if (r) { var s = (0, _getPrototypeOf2["default"])(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2["default"])(this, e); }; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var KeyValueStore = /*#__PURE__*/function (_HiveStore) {
(0, _inherits2["default"])(KeyValueStore, _HiveStore);
var _super = _createSuper(KeyValueStore);
function KeyValueStore() {
(0, _classCallCheck2["default"])(this, KeyValueStore);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(KeyValueStore, [{
key: "get",
value: function get() {
return this.app.request.get({
url: this.getBaseURL()
});
}
}, {
key: "set",
value: function set(value, options) {
return this.constructor.set.apply(_objectSpread(_objectSpread({}, this), this.constructor), [this.storeKey, value, options]);
}
}, {
key: "increment",
value: function increment(value) {
if (isNaN(value) || typeof value !== 'number') {
throw new Error('Value must be provided and must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/increment"),
query: {
value: value
}
});
}
}, {
key: "decrement",
value: function decrement(value) {
if (isNaN(value) || typeof value !== 'number') {
throw new Error('Value must be provided and must be a number.');
}
return this.app.request.put({
url: "".concat(this.getBaseURL(), "/decrement"),
query: {
value: value
}
});
}
}], [{
key: "get",
value: function get(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: this.app.urls.hiveStore(this.hiveName, this.TYPE),
data: keys
});
}
}, {
key: "set",
value: function set(key, value, options) {
if (_utils["default"].isObject(key)) {
if (!Object.keys(key).length) {
throw new Error('Provided object must have at least 1 key.');
}
return this.app.request.put({
url: this.app.urls.hiveStore(this.hiveName, this.TYPE),
data: key
});
}
if (!key || typeof key !== 'string') {
throw new Error('Key must be provided and must be a string.');
}
if (options !== undefined) {
if (!_utils["default"].isObject(options)) {
throw new Error('Options must be an object.');
}
var ttl = options.ttl,
expireAt = options.expireAt,
condition = options.condition;
if (ttl !== undefined && (isNaN(ttl) || typeof ttl !== 'number')) {
throw new Error('TTL in seconds must be a number.');
}
if (expireAt !== undefined && (isNaN(expireAt) || typeof expireAt !== 'number')) {
throw new Error('ExpireAt timestamp must be a number.');
}
if (condition !== undefined && !['IfExists', 'IfNotExists', 'Always'].includes(condition)) {
throw new Error('Condition must be one of this values: [IfExists, IfNotExists, Always].');
}
}
if (!(0, _utils2.isHiveValueValid)(value)) {
throw new Error('Value must be provided and must be one of types: string, number, boolean, object, array.');
}
return this.app.request.put({
url: "".concat(this.app.urls.hiveStore(this.hiveName, this.TYPE), "/").concat(key),
data: _objectSpread({
value: value
}, options)
});
}
}]);
return KeyValueStore;
}(_baseStore.HiveStore);
exports.KeyValueStore = KeyValueStore;
(0, _defineProperty2["default"])(KeyValueStore, "TYPE", _constants.HiveTypes.KEY_VALUE);
(0, _defineProperty2["default"])(KeyValueStore, "STATIC_METHODS", [].concat((0, _toConsumableArray2["default"])(_baseStore.HiveStore.STATIC_METHODS), ['get', 'set']));