UNPKG

2.43 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.commit = undefined;
7
8var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9
10var _microBoom = require('micro-boom');
11
12var _micro = require('micro');
13
14var _redis = require('redis');
15
16var _redis2 = _interopRequireDefault(_redis);
17
18var _redisClient = require('./redis-client');
19
20var _runLua = require('./runLua');
21
22var _runLua2 = _interopRequireDefault(_runLua);
23
24function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
26function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
27
28var commit = exports.commit = function () {
29 var _ref = _asyncToGenerator(function* (redisClient, event, namespc) {
30 var lua = '\n local event = ARGV[1];\n local counter = redis.call(\'INCR\', KEYS[1]);\n\n redis.call(\'HSET\', KEYS[2], counter, event);\n redis.call(\'PUBLISH\', ARGV[2]..\'::events\', counter .. \':\' .. event);\n return counter;\n ';
31
32 return (0, _runLua2.default)(redisClient, lua, {
33 keys: [namespc + '::id', namespc + '::events'],
34 argv: [JSON.stringify(event), namespc]
35 });
36 });
37
38 return function commit(_x, _x2, _x3) {
39 return _ref.apply(this, arguments);
40 };
41}();
42
43exports.default = function (_ref2) {
44 var redis = _ref2.redis,
45 namespc = _ref2.namespc;
46
47 var client = (0, _redisClient.createClient)(redis);
48
49 return function () {
50 var _ref3 = _asyncToGenerator(function* (req) {
51 var event = yield (0, _micro.json)(req);
52
53 if (typeof event.type !== 'string') {
54 throw (0, _microBoom.createError)(422, 'Missing type');
55 }
56
57 var id = yield commit(client, event, namespc);
58
59 return _extends({}, event, { id: id });
60 });
61
62 return function (_x4) {
63 return _ref3.apply(this, arguments);
64 };
65 }();
66};
\No newline at end of file