canner
Version:
Build CMS in few lines of code for different data sources
75 lines (59 loc) • 2.48 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Query = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _utils = require("./utils");
var _lodash = require("lodash");
var Query = function Query(_ref) {
var _this = this;
var schema = _ref.schema;
(0, _classCallCheck2.default)(this, Query);
(0, _defineProperty2.default)(this, "schema", void 0);
(0, _defineProperty2.default)(this, "queries", void 0);
(0, _defineProperty2.default)(this, "variables", void 0);
(0, _defineProperty2.default)(this, "updateQueries", function (pathArr, field, value) {
var path = "".concat(pathArr.join('.fields.'), ".").concat(field);
if (field === 'args') {
var args = (0, _lodash.get)(_this.queries, path);
_this.variables = (0, _objectSpread2.default)({}, _this.variables, Object.keys(args).reduce(function (result, key) {
result[args[key]] = value[key];
return result;
}, {}));
} else {
(0, _lodash.set)(_this.queries, path, value);
}
});
(0, _defineProperty2.default)(this, "getQueries", function (pathArr) {
if (!pathArr || pathArr.length === 0) {
return _this.queries;
}
var path = pathArr.join('.fields.');
return (0, _lodash.get)(_this.queries, path);
});
(0, _defineProperty2.default)(this, "toGQL", function (key) {
var variables = _this.getVairables();
if (key) {
var obj = _this.getQueries([key]);
return (0, _utils.objectToQueries)((0, _defineProperty2.default)({}, key, obj), !obj.declareArgs, variables);
} else {
return (0, _utils.objectToQueries)(_this.queries, false, variables);
}
});
(0, _defineProperty2.default)(this, "getVairables", function () {
return (0, _lodash.mapKeys)(_this.variables, function (value, key) {
return key.substr(1);
});
});
this.schema = schema;
var _schemaToQueriesObjec = (0, _utils.schemaToQueriesObject)(schema),
queriesObj = _schemaToQueriesObjec.queriesObj,
_variables = _schemaToQueriesObjec.variables;
this.variables = _variables;
this.queries = queriesObj;
};
exports.Query = Query;