UNPKG

thinknode

Version:

A fast, flexible and all-in-one web framework for node.js.

207 lines (150 loc) 7.16 kB
'use strict'; exports.__esModule = true; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _Cache = require('../Cache/Cache'); var _Cache2 = _interopRequireDefault(_Cache); var _RedisSocket = require('../Socket/RedisSocket'); var _RedisSocket2 = _interopRequireDefault(_RedisSocket); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * * @author richen * @copyright Copyright (c) 2015 - <richenlin(at)gmail.com> * @license MIT * @version 15/12/29 */ var _class = function (_cache) { (0, _inherits3.default)(_class, _cache); function _class() { (0, _classCallCheck3.default)(this, _class); return (0, _possibleConstructorReturn3.default)(this, _cache.apply(this, arguments)); } _class.prototype.init = function init(options) { this.keyName = options.cache_key_prefix; _cache.prototype.init.call(this, options); this.options.cache_key_prefix = (~THINK.config('cache_key_prefix').indexOf(':') ? THINK.config('cache_key_prefix') : THINK.config('cache_key_prefix') + ':') + 'Session:'; var key = THINK.hash(this.options.redis_host + '_' + this.options.redis_port + '_' + this.options.redis_db); if (!(key in THINK_CACHES.INSTANCES.CACHE)) { THINK_CACHES.INSTANCES.CACHE[key] = new _RedisSocket2.default(this.options); } this.handle = THINK_CACHES.INSTANCES.CACHE[key]; }; /** * * @param name */ _class.prototype.get = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(name) { var data; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.handle.wrap('get', [this.options.cache_key_prefix + this.keyName]); case 2: data = _context.sent; if (data) { _context.next = 5; break; } return _context.abrupt('return', ''); case 5: _context.prev = 5; data = JSON.parse(data); if (!(data.expire && Date.now() > data.expire)) { _context.next = 12; break; } this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); return _context.abrupt('return', ''); case 12: return _context.abrupt('return', data[name]); case 13: _context.next = 19; break; case 15: _context.prev = 15; _context.t0 = _context['catch'](5); this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); return _context.abrupt('return', ''); case 19: case 'end': return _context.stop(); } } }, _callee, this, [[5, 15]]); })); function get(_x) { return _ref.apply(this, arguments); } return get; }(); /** * * @param name * @param value * @param timeout */ _class.prototype.set = function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(name, value) { var _content; var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.options.cache_timeout; var rdata, content, setP; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return this.handle.wrap('get', [this.options.cache_key_prefix + this.keyName]); case 2: rdata = _context2.sent; content = (_content = {}, _content[name] = value, _content.expire = Date.now() + timeout * 1000, _content.timeout = timeout, _content); _context2.prev = 4; if (!THINK.isEmpty(rdata)) { rdata = JSON.parse(rdata); content = THINK.extend(false, rdata, content); } setP = [this.handle.wrap('set', [this.options.cache_key_prefix + this.keyName, (0, _stringify2.default)(content)])]; if (typeof timeout === 'number') { setP.push(this.handle.wrap('expire', [this.options.cache_key_prefix + this.keyName, timeout])); } return _context2.abrupt('return', _promise2.default.all(setP)); case 11: _context2.prev = 11; _context2.t0 = _context2['catch'](4); return _context2.abrupt('return', _promise2.default.resolve()); case 14: case 'end': return _context2.stop(); } } }, _callee2, this, [[4, 11]]); })); function set(_x2, _x3) { return _ref2.apply(this, arguments); } return set; }(); /** * */ _class.prototype.rm = function rm() { return this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); }; return _class; }(_Cache2.default); exports.default = _class;