UNPKG

fog-controller

Version:

Fog Controller project @ iotracks.com

173 lines (144 loc) 7.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _baseManager = require("./baseManager"); var _baseManager2 = _interopRequireDefault(_baseManager); var _straceDiagnostics = require("../models/straceDiagnostics"); var _straceDiagnostics2 = _interopRequireDefault(_straceDiagnostics); var _sequelize = require("./../utils/sequelize"); var _sequelize2 = _interopRequireDefault(_sequelize); var _elementInstance = require("../models/elementInstance"); var _elementInstance2 = _interopRequireDefault(_elementInstance); var _fog = require("../models/fog"); var _fog2 = _interopRequireDefault(_fog); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var StraceDiagnosticsManager = function (_BaseManager) { _inherits(StraceDiagnosticsManager, _BaseManager); function StraceDiagnosticsManager() { _classCallCheck(this, StraceDiagnosticsManager); return _possibleConstructorReturn(this, (StraceDiagnosticsManager.__proto__ || Object.getPrototypeOf(StraceDiagnosticsManager)).apply(this, arguments)); } _createClass(StraceDiagnosticsManager, [{ key: "getEntity", value: function getEntity() { return _straceDiagnostics2.default; } }, { key: "updateOrCreateStraceDiagnostics", value: function updateOrCreateStraceDiagnostics(data) { return _straceDiagnostics2.default.findOne({ attributes: ['element_instance_uuid', 'straceRun'], where: { element_instance_uuid: data.element_instance_uuid } }).then(function (obj) { if (obj) { // update return _straceDiagnostics2.default.update(data, { where: { element_instance_uuid: data.element_instance_uuid }, returning: true, plain: true }); } else { // insert return _straceDiagnostics2.default.create(data); } }).then(function () { return _straceDiagnostics2.default.findOne({ attributes: ['element_instance_uuid', 'straceRun'], where: { element_instance_uuid: data.element_instance_uuid } }); }); } }, { key: "findStraceDiagnosticsByElementId", value: function findStraceDiagnosticsByElementId(uuid) { return _straceDiagnostics2.default.findOne({ where: { element_instance_uuid: uuid } }); } }, { key: "findStraceDiagnosticsStateByFogId", value: function findStraceDiagnosticsStateByFogId(fogId) { var query = 'SELECT d.element_instance_uuid as elementId, ' + 'd.straceRun as straceRun ' + 'FROM strace_diagnostics d ' + 'LEFT JOIN element_instance i ON d.element_instance_uuid = i.UUID ' + 'LEFT JOIN iofogs f ON i.iofog_uuid = f.UUID ' + 'WHERE f.UUID = (:fogId)'; return _sequelize2.default.query(query, { replacements: { fogId: fogId }, type: _sequelize2.default.QueryTypes.SELECT }); } }, { key: "findStraceDiagnosticsAndPopBufferByElementId", value: function findStraceDiagnosticsAndPopBufferByElementId(uuid) { return _straceDiagnostics2.default.sequelize.transaction(function (transaction) { return _straceDiagnostics2.default.findOne({ where: { element_instance_uuid: uuid } }, { transaction: transaction }).then(function (data) { _straceDiagnostics2.default.update({ buffer: '' }, { where: { element_instance_uuid: uuid } }, { transaction: transaction }); return data; }); }).then(function (data) { // Committed return data; }).catch(function (err) { // Rolled back console.error(err); }); } }, { key: "pushBufferByElementId", value: function pushBufferByElementId(uuid, pushingData) { return _straceDiagnostics2.default.findOne({ where: { element_instance_uuid: uuid } }).then(function (el) { var newBuffer = updateBuffer(el.buffer, pushingData); return _straceDiagnostics2.default.update({ buffer: newBuffer }, { where: { element_instance_uuid: uuid } }); }); } }, { key: "deleteStraceDiagnosticsByelementId", value: function deleteStraceDiagnosticsByelementId(uuid) { return _straceDiagnostics2.default.destroy({ where: { element_instance_uuid: uuid } }); } }]); return StraceDiagnosticsManager; }(_baseManager2.default); /********************************* Extra Functions *****************************************/ var updateBuffer = function updateBuffer(oldBuf, pushingData) { var newBuffer = oldBuf + pushingData; var delta = newBuffer.length - maxBufferSize; if (delta > 0) { newBuffer = '[FogController Info] Buffer size is limited, so some of previous data was lost \n' + newBuffer.substring(delta); } return newBuffer; }; /********************************* Constants *****************************************/ var maxBufferSize = 1e8; var instance = new StraceDiagnosticsManager(); exports.default = instance;