'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 _ioauthoringConfig = require('./../models/ioauthoringConfig');

var _ioauthoringConfig2 = _interopRequireDefault(_ioauthoringConfig);

var _baseManager = require('./../managers/baseManager');

var _baseManager2 = _interopRequireDefault(_baseManager);

var _sequelize = require('./../utils/sequelize');

var _sequelize2 = _interopRequireDefault(_sequelize);

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; } /*
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                * *******************************************************************************
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  * Copyright (c) 2018 Edgeworx, Inc.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  * This program and the accompanying materials are made available under the
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  * terms of the Eclipse Public License v. 2.0 which is available at
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  * http://www.eclipse.org/legal/epl-2.0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  * SPDX-License-Identifier: EPL-2.0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *  *******************************************************************************
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                *
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                */

/**
 * @file sslFileManager.js
 * @author Zishan Iqbal
 * @description This file includes the CURD operations for the sslFiles Model.
 */

var ioauthoringConfigManager = function (_BaseManager) {
  _inherits(ioauthoringConfigManager, _BaseManager);

  function ioauthoringConfigManager() {
    _classCallCheck(this, ioauthoringConfigManager);

    return _possibleConstructorReturn(this, (ioauthoringConfigManager.__proto__ || Object.getPrototypeOf(ioauthoringConfigManager)).apply(this, arguments));
  }

  _createClass(ioauthoringConfigManager, [{
    key: 'getEntity',
    value: function getEntity() {
      return _ioauthoringConfig2.default;
    }
  }, {
    key: 'getByKey',
    value: function getByKey(key) {
      return _ioauthoringConfig2.default.find({
        where: {
          key: key
        }
      });
    }
  }, {
    key: 'setByKey',
    value: function setByKey(key, value) {
      return this.getByKey(key).then(function (dbConfig) {
        if (dbConfig) {
          dbConfig.value = value;
          dbConfig.save();
        } else {
          this.create({
            key: key,
            value: value
          });
        }
      });
    }
  }, {
    key: 'list',
    value: function list() {
      var query = 'select * from config';
      return _sequelize2.default.query(query, {
        type: _sequelize2.default.QueryTypes.SELECT
      });
    }
  }, {
    key: 'deleteConfig',
    value: function deleteConfig(key) {
      if (key) {
        this.getByKey(key).then(function (dbConfig) {
          if (dbConfig) {
            dbConfig.destroy();
            console.log('\n"' + key + '" has been deleted successfully.');
          } else {
            console.log('\nCan not find Configuration having "' + key + '" as key');
          }
        });
      } else {
        console.log('\nKey is required');
      }
    }
  }]);

  return ioauthoringConfigManager;
}(_baseManager2.default);

var instance = new ioauthoringConfigManager();
exports.default = instance;