1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.set = set;
|
7 |
|
8 | var _es6Map = require('es6-map');
|
9 |
|
10 | var _es6Map2 = _interopRequireDefault(_es6Map);
|
11 |
|
12 | var _index = require('./index');
|
13 |
|
14 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15 |
|
16 | function createGroupedArray(arr, groupSize) {
|
17 | var groups = [];
|
18 | for (var i = 0; i < arr.length; i += groupSize) {
|
19 | groups.push(arr.slice(i, i + groupSize));
|
20 | }
|
21 | return groups;
|
22 | }
|
23 |
|
24 | function set(key, value) {
|
25 | for (var _len = arguments.length, options = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
26 | options[_key - 2] = arguments[_key];
|
27 | }
|
28 |
|
29 | var nx = options.indexOf('NX') !== -1;
|
30 | var xx = options.indexOf('XX') !== -1;
|
31 | var filteredOptions = options.filter(function (option) {
|
32 | return option !== 'NX' && option !== 'XX';
|
33 | });
|
34 |
|
35 | if (nx && xx) throw new Error('ERR syntax error');
|
36 | if (nx && this.data.has(key)) return null;
|
37 | if (xx && !this.data.has(key)) return null;
|
38 |
|
39 | this.data.set(key, value);
|
40 |
|
41 | var expireOptions = new _es6Map2.default(createGroupedArray(filteredOptions, 2));
|
42 | var ttlSeconds = expireOptions.get('EX') || expireOptions.get('PX') / 1000.0;
|
43 |
|
44 | if (ttlSeconds) {
|
45 | _index.expire.call(this, key, ttlSeconds);
|
46 | } else {
|
47 | this.expires.delete(key);
|
48 | }
|
49 |
|
50 | return 'OK';
|
51 | } |
\ | No newline at end of file |