diff --git a/app/ecolyo.6902519e815472ed17cd.js b/app/ecolyo.36b93cf6072f8532d8ac.js similarity index 99% rename from app/ecolyo.6902519e815472ed17cd.js rename to app/ecolyo.36b93cf6072f8532d8ac.js index f42890de79dcf72d6cb4a922d6ba7b5d003a14fb..46a99c45708d3e67b50539af4595bf475443568c 100644 --- a/app/ecolyo.6902519e815472ed17cd.js +++ b/app/ecolyo.36b93cf6072f8532d8ac.js @@ -25633,16 +25633,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.default = void 0; -var _regenerator = _interopRequireDefault(__webpack_require__("o0o1")); - var _objectSpread2 = _interopRequireDefault(__webpack_require__("MVZn")); -var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__("yXPU")); - -var _classCallCheck2 = _interopRequireDefault(__webpack_require__("lwsE")); - -var _createClass2 = _interopRequireDefault(__webpack_require__("W8MJ")); - var _cozyClient = __webpack_require__("SH7X"); var _doctypes = __webpack_require__("D2hQ"); @@ -25656,341 +25648,144 @@ var _luxon = __webpack_require__("ExVU"); enterModule && enterModule(module); })(); -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) { return a; }; -var UsageEventService = /*#__PURE__*/function () { - function UsageEventService() { - (0, _classCallCheck2.default)(this, UsageEventService); +class UsageEventService { + /** + * addEvent + * @param {Client} client + * @param {AddEventParams} params + * @returns {Promise<UsageEvent>} usageEvent added + */ + static async addEvent(client, params) { + const usageEvent = (0, _objectSpread2.default)({}, params, { + eventDate: _luxon.DateTime.local().setZone('utc', { + keepLocalTime: true + }).toString(), + startDate: params.startDate ? params.startDate.toString() : undefined, + aggregated: false + }); + const { + data + } = await client.create(_doctypes.USAGEEVENT_DOCTYPE, usageEvent); + return this.parseUsageEventEntityToUsageEvent(data); } + /** + * addEvent + * @param {Client} client + * @param {AddEventParams} params + * @returns {Promise<UsageEvent>} usageEvent added + */ - (0, _createClass2.default)(UsageEventService, null, [{ - key: "addEvent", - value: - /** - * addEvent - * @param {Client} client - * @param {AddEventParams} params - * @returns {Promise<UsageEvent>} usageEvent added - */ - function () { - var _addEvent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(client, params) { - var usageEvent, _yield$client$create, data; - - return _regenerator.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - usageEvent = (0, _objectSpread2.default)({}, params, { - eventDate: _luxon.DateTime.local().setZone('utc', { - keepLocalTime: true - }).toString(), - startDate: params.startDate ? params.startDate.toString() : undefined, - aggregated: false - }); - _context.next = 3; - return client.create(_doctypes.USAGEEVENT_DOCTYPE, usageEvent); - - case 3: - _yield$client$create = _context.sent; - data = _yield$client$create.data; - return _context.abrupt("return", this.parseUsageEventEntityToUsageEvent(data)); - - case 6: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); - - function addEvent(_x, _x2) { - return _addEvent.apply(this, arguments); - } - - return addEvent; - }() - /** - * addEvent - * @param {Client} client - * @param {AddEventParams} params - * @returns {Promise<UsageEvent>} usageEvent added - */ - - }, { - key: "addEventIfDoesntExist", - value: function () { - var _addEventIfDoesntExist = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(client, params, filterParams) { - var events; - return _regenerator.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return this.getEvents(client, filterParams); - - case 2: - events = _context2.sent; - - if (!(events.length <= 0)) { - _context2.next = 5; - break; - } - - return _context2.abrupt("return", this.addEvent(client, params)); - - case 5: - return _context2.abrupt("return", null); - - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); - - function addEventIfDoesntExist(_x3, _x4, _x5) { - return _addEventIfDoesntExist.apply(this, arguments); - } - - return addEventIfDoesntExist; - }() - /** - * - * @param {Client} client - * @param {string} konnectorSlug - * @returns - */ - - }, { - key: "udpateConnectionAttemptEvent", - value: function () { - var _udpateConnectionAttemptEvent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(client, konnectorSlug) { - var query, _yield$client$query, usageEventEntity, updatedEvent, saved; - - return _regenerator.default.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.prev = 0; - //Get last Connection attempt Event - query = (0, _cozyClient.Q)(_doctypes.USAGEEVENT_DOCTYPE).where({ - type: _usageEvent.UsageEventType.KONNECTOR_ATTEMPT_EVENT, - target: konnectorSlug, - result: 'error' - }).sortBy([{ - eventDate: 'desc' - }]).limitBy(1); - _context3.next = 4; - return client.query(query); - - case 4: - _yield$client$query = _context3.sent; - usageEventEntity = _yield$client$query.data; - - if (!usageEventEntity) { - _context3.next = 12; - break; - } - - updatedEvent = (0, _objectSpread2.default)({}, usageEventEntity, { - result: 'success' - }); - _context3.next = 10; - return client.save(updatedEvent); - case 10: - saved = _context3.sent; - console.log('saved', saved); + static async addEventIfDoesntExist(client, params, filterParams) { + const events = await this.getEvents(client, filterParams); - case 12: - _context3.next = 17; - break; + if (events.length <= 0) { + return this.addEvent(client, params); + } - case 14: - _context3.prev = 14; - _context3.t0 = _context3["catch"](0); - console.error(_context3.t0); + return null; + } + /** + * + * @param {Client} client + * @param {string} konnectorSlug + * @returns + */ - case 17: - case "end": - return _context3.stop(); - } - } - }, _callee3, null, [[0, 14]]); - })); - function udpateConnectionAttemptEvent(_x6, _x7) { - return _udpateConnectionAttemptEvent.apply(this, arguments); + static async udpateConnectionAttemptEvent(client, konnectorSlug) { + try { + //Get last Connection attempt Event + const query = (0, _cozyClient.Q)(_doctypes.USAGEEVENT_DOCTYPE).where({ + type: _usageEvent.UsageEventType.KONNECTOR_ATTEMPT_EVENT, + target: konnectorSlug, + result: 'error' + }).indexFields(['type', 'target', 'result']).sortBy([{ + eventDate: 'desc' + }]).limitBy(1); + const { + data: usageEventEntity + } = await client.query(query); + console.log('usageEventEntity', usageEventEntity); + + if (usageEventEntity) { + const updatedEvent = (0, _objectSpread2.default)({}, usageEventEntity, { + result: 'success' + }); + const saved = await client.save(updatedEvent); + console.log('saved', saved); + } else { + console.log('NO ATTEMPT EVENT'); } + } catch (err) { + console.error(err); + } + } + /** + * updateUsageEventsAggregated + * @param {Client} client + * @param {string[]} ids + * @returns {Promise<boolean>} return true if all events are updated + */ - return udpateConnectionAttemptEvent; - }() - /** - * updateUsageEventsAggregated - * @param {Client} client - * @param {string[]} ids - * @returns {Promise<boolean>} return true if all events are updated - */ - - }, { - key: "updateUsageEventsAggregated", - value: function () { - var _updateUsageEventsAggregated = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(client, events) { - var _iterator, _step, event; - - return _regenerator.default.wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _iterator = _createForOfIteratorHelper(events); - _context4.prev = 1; - - _iterator.s(); - - case 3: - if ((_step = _iterator.n()).done) { - _context4.next = 15; - break; - } - - event = _step.value; - _context4.prev = 5; - _context4.next = 8; - return client.save((0, _objectSpread2.default)({}, event, { - aggregated: true - })); - - case 8: - _context4.next = 13; - break; - - case 10: - _context4.prev = 10; - _context4.t0 = _context4["catch"](5); - console.log(_context4.t0); - - case 13: - _context4.next = 3; - break; - - case 15: - _context4.next = 20; - break; - - case 17: - _context4.prev = 17; - _context4.t1 = _context4["catch"](1); - - _iterator.e(_context4.t1); - - case 20: - _context4.prev = 20; - - _iterator.f(); - - return _context4.finish(20); - - case 23: - return _context4.abrupt("return", true); - - case 24: - case "end": - return _context4.stop(); - } - } - }, _callee4, null, [[1, 17, 20, 23], [5, 10]]); - })); - function updateUsageEventsAggregated(_x8, _x9) { - return _updateUsageEventsAggregated.apply(this, arguments); + static async updateUsageEventsAggregated(client, events) { + for (const event of events) { + try { + await client.save((0, _objectSpread2.default)({}, event, { + aggregated: true + })); + } catch (error) { + console.log(error); } + } - return updateUsageEventsAggregated; - }() - /** - * getEvents - * @param {Client} client - * @param {MongoSelector} filterParams - * @returns {Promise<UsageEvent[]>} usageEvent added - */ - - }, { - key: "getEvents", - value: function () { - var _getEvents = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(client, filterParams) { - var _this = this; - - var desc, - query, - _yield$client$query2, - usageEventEntities, - usageEvents, - _args5 = arguments; - - return _regenerator.default.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - desc = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : false; - query = (0, _cozyClient.Q)(_doctypes.USAGEEVENT_DOCTYPE).where(filterParams).sortBy([{ - eventDate: desc ? 'desc' : 'asc' - }]); - _context5.next = 4; - return client.query(query); + return true; + } + /** + * getEvents + * @param {Client} client + * @param {MongoSelector} filterParams + * @returns {Promise<UsageEvent[]>} usageEvent added + */ - case 4: - _yield$client$query2 = _context5.sent; - usageEventEntities = _yield$client$query2.data; - usageEvents = usageEventEntities.map(function (usageEventEntity) { - return _this.parseUsageEventEntityToUsageEvent(usageEventEntity); - }); - return _context5.abrupt("return", usageEvents); - case 8: - case "end": - return _context5.stop(); - } - } - }, _callee5); - })); + static async getEvents(client, filterParams, desc = false) { + const query = (0, _cozyClient.Q)(_doctypes.USAGEEVENT_DOCTYPE).where(filterParams).sortBy([{ + eventDate: desc ? 'desc' : 'asc' + }]); + const { + data: usageEventEntities + } = await client.query(query); + const usageEvents = usageEventEntities.map(usageEventEntity => { + return this.parseUsageEventEntityToUsageEvent(usageEventEntity); + }); + return usageEvents; + } + /** + * Retrieve UsageEvent from the UsageEventEntity + * @param {UsageEventEntity} usageEventEntity + * @returns {UsageEvent} + */ - function getEvents(_x10, _x11) { - return _getEvents.apply(this, arguments); - } - return getEvents; - }() - /** - * Retrieve UsageEvent from the UsageEventEntity - * @param {UsageEventEntity} usageEventEntity - * @returns {UsageEvent} - */ + static parseUsageEventEntityToUsageEvent(usageEventEntity) { + const usageEvent = (0, _objectSpread2.default)({}, usageEventEntity, { + eventDate: _luxon.DateTime.fromISO(usageEventEntity.eventDate, { + zone: 'utc' + }), + startDate: usageEventEntity.startDate ? _luxon.DateTime.fromISO(usageEventEntity.startDate, { + zone: 'utc' + }) : undefined + }); + return usageEvent; + } - }, { - key: "parseUsageEventEntityToUsageEvent", - value: function parseUsageEventEntityToUsageEvent(usageEventEntity) { - var usageEvent = (0, _objectSpread2.default)({}, usageEventEntity, { - eventDate: _luxon.DateTime.fromISO(usageEventEntity.eventDate, { - zone: 'utc' - }), - startDate: usageEventEntity.startDate ? _luxon.DateTime.fromISO(usageEventEntity.startDate, { - zone: 'utc' - }) : undefined - }); - return usageEvent; - } - }]); - return UsageEventService; -}(); +} exports.default = UsageEventService; ; diff --git a/index.html b/index.html index f9f3da1d26eafcc88f6f478c613d56c589b10f1b..f22b104aff28c0beda236d98e37ef2f66bbd2a3d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=0,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black">{{.ThemeCSS}} {{.CozyBar}}</head><body><div role="application" class="application" data-cozy-token="{{.Token}}" data-cozy-domain="{{.Domain}}" data-cozy-locale="{{.Locale}}" data-cozy-app-name="{{.AppName}}" data-cozy-app-slug="{{.AppSlug}}" data-cozy-app-name-prefix="{{.AppNamePrefix}}" data-cozy-app-editor="{{.AppEditor}}" data-cozy-icon-path="{{.IconPath}}"><script src="vendors/ecolyo.93391ce51226ea91283c.js"></script><script src="app/ecolyo.6902519e815472ed17cd.js"></script></div></body></html> \ No newline at end of file +<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,user-scalable=0,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black">{{.ThemeCSS}} {{.CozyBar}}</head><body><div role="application" class="application" data-cozy-token="{{.Token}}" data-cozy-domain="{{.Domain}}" data-cozy-locale="{{.Locale}}" data-cozy-app-name="{{.AppName}}" data-cozy-app-slug="{{.AppSlug}}" data-cozy-app-name-prefix="{{.AppNamePrefix}}" data-cozy-app-editor="{{.AppEditor}}" data-cozy-icon-path="{{.IconPath}}"><script src="vendors/ecolyo.93391ce51226ea91283c.js"></script><script src="app/ecolyo.36b93cf6072f8532d8ac.js"></script></div></body></html> \ No newline at end of file diff --git a/services/aggregatorUsageEvents/ecolyo.js b/services/aggregatorUsageEvents/ecolyo.js index 7cb066396858b3db0ef38f38a21ad29047b593fb..5a6bb8ad4991a0f6d9cf58abbb81bcd48829f90e 100644 --- a/services/aggregatorUsageEvents/ecolyo.js +++ b/services/aggregatorUsageEvents/ecolyo.js @@ -66432,12 +66432,13 @@ class UsageEventService { type: _usageEvent.UsageEventType.KONNECTOR_ATTEMPT_EVENT, target: konnectorSlug, result: 'error' - }).sortBy([{ + }).indexFields(['type', 'target', 'result']).sortBy([{ eventDate: 'desc' }]).limitBy(1); const { data: usageEventEntity } = await client.query(query); + console.log('usageEventEntity', usageEventEntity); if (usageEventEntity) { const updatedEvent = (0, _objectSpread2.default)({}, usageEventEntity, { @@ -66445,6 +66446,8 @@ class UsageEventService { }); const saved = await client.save(updatedEvent); console.log('saved', saved); + } else { + console.log('NO ATTEMPT EVENT'); } } catch (err) { console.error(err);