UNPKG

rollun-ts-rql

Version:

RQL query object and serializer written in TypeScript

1 lines 4.26 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _AbstractNode=_interopRequireDefault(require("./nodes/AbstractNode"));var _AbstractQueryNode=_interopRequireDefault(require("./nodes/AbstractQueryNode"));var _Query=_interopRequireDefault(require("./Query"));var _Limit=_interopRequireDefault(require("./nodes/Limit"));var _Sort=_interopRequireDefault(require("./nodes/Sort"));var _Select=_interopRequireDefault(require("./nodes/Select"));var _And=_interopRequireDefault(require("./nodes/logicalNodes/And"));var _AbstractLogicalNode=_interopRequireDefault(require("./nodes/logicalNodes/AbstractLogicalNode"));var _GroupBy=_interopRequireDefault(require("./nodes/GroupBy"));var _lodash=_interopRequireDefault(require("lodash"));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 _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)}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}var QueryBuilder=function(){function QueryBuilder(){_classCallCheck(this,QueryBuilder);_defineProperty(this,"query",void 0);this.query=new _Query["default"]}_createClass(QueryBuilder,[{key:"addNode",value:function addNode(node){if(node instanceof _Select["default"]){return this.addSelect(node)}if(node instanceof _AbstractQueryNode["default"]){return this.addQuery(node)}if(node instanceof _Sort["default"]){return this.addSort(node)}if(node instanceof _Limit["default"]){return this.addLimit(node)}if(node instanceof _GroupBy["default"]){return this.addGroupBy(node)}throw new Error("Unknown node \"".concat(node.name,"\""))}},{key:"getQuery",value:function getQuery(){return this.query}},{key:"addSelect",value:function addSelect(select){this.query.selectNode=select;return this}},{key:"addQuery",value:function addQuery(query){var current=this.query.queryNode;if(!current){this.query.queryNode=query}else{if(current instanceof _AbstractLogicalNode["default"]){current.addNode(query)}else{this.query.queryNode=new _And["default"]([current,query])}}return this}},{key:"addSort",value:function addSort(sort){this.query.sortNode=sort;return this}},{key:"addLimit",value:function addLimit(limit){this.query.limitNode=limit;return this}},{key:"addGroupBy",value:function addGroupBy(node){this.query.groupNode=node;return this}},{key:"from",value:function from(node){if(node instanceof _Query["default"]){this.query=_lodash["default"].cloneDeep(node);return this}if(node instanceof _Select["default"]){return this.fromSelect(node)}if(node instanceof _AbstractQueryNode["default"]){return this.fromQuery(node)}if(node instanceof _Sort["default"]){return this.fromSort(node)}if(node instanceof _Limit["default"]){return this.fromLimit(node)}if(node instanceof _GroupBy["default"]){return this.fromGroupBy(node)}throw new Error("Unknown node \"".concat(node instanceof _AbstractNode["default"]?node.name:"","\""))}},{key:"fromSelect",value:function fromSelect(select){this.query=new _Query["default"]({select:select});return this}},{key:"fromLimit",value:function fromLimit(limit){this.query=new _Query["default"]({limit:limit});return this}},{key:"fromQuery",value:function fromQuery(query){this.query=new _Query["default"]({query:query});return this}},{key:"fromGroupBy",value:function fromGroupBy(qroupBy){this.query=new _Query["default"]({group:qroupBy});return this}},{key:"fromSort",value:function fromSort(sort){this.query=new _Query["default"]({sort:sort});return this}}],[{key:"create",value:function create(){return new QueryBuilder}}]);return QueryBuilder}();exports["default"]=QueryBuilder;