json-function
Version:
It allows you to use methods such as where, limit, select, orderBy on JSON data.
1 lines • 3.07 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _=require(".."),_typeCheck=require("../../utils/type-check"),__assign=function(){return __assign=Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++)for(var e in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e]);return a},__assign.apply(this,arguments)},__spreadArrays=function(){for(var b=0,c=0,d=arguments.length;c<d;c++)b+=arguments[c].length;for(var e=Array(b),f=0,c=0;c<d;c++)for(var g=arguments[c],a=0,h=g.length;a<h;a++,f++)e[f]=g[a];return e},JsonFunction=/** @class */function(){function a(){this.data=[],this.process=[],this.option={orderBy:null,where:null,limit:null,select:null,search:null,schema:null,innerJoin:null},this.config={resetRecord:!0}}return a.prototype.reset=function(){return this.option={orderBy:null,where:null,limit:null,select:null,search:null,schema:null,innerJoin:null},this.data=[],this.process=[],this},a.prototype.processManager=function(){var a=this,b=this.option,c=b.orderBy,d=b.where,e=b.limit,f=b.select,g=b.search,h=b.schema,i=b.innerJoin;this.process.forEach(function(b){switch(b){case"where":var j=d[0],k=d[1];a.data=(0,_.where)(a.data,j,k);break;case"search":var l=g[0],m=g[1],n=g[2];a.data=(0,_.search)(a.data,l,m,n);break;case"orderBy":var o=c[0],p=c[1],q=c[2];a.data=(0,_.orderBy)(a.data,o,p,q);break;case"limit":var r=e[0],s=e[1];a.data=(0,_.limit)(a.data,r,s);break;case"select":a.data=(0,_.select)(a.data,f);break;case"schema":a.data=(0,_.schema)(a.data,h);break;case"transform":a.data=(0,_.transform)(a.data);break;case"innerJoin":var t=i[0],u=i[1],v=i[2];a.data=(0,_.innerJoin)(a.data,t,u,v);}})},a.prototype.orderBy=function(a,b,c){return void 0===b&&(b="ASC"),this.option.orderBy=[a,b],c&&this.option.orderBy.push(c),this.process.push("orderBy"),this},a.prototype.where=function(a,b){return this.option.where=[a],b&&this.option.where.push(b),this.process.push("where"),this},a.prototype.limit=function(a,b){return void 0===a&&(a=10),void 0===b&&(b=0),this.option.limit=[a,b],this.process.push("limit"),this},a.prototype.schema=function(a){return this.option.schema=a,this.process.push("schema"),this},a.prototype.transform=function(){return this.process.push("transform"),this},a.prototype.select=function(a){return this.option.select=a,this.process.push("select"),this},a.prototype.search=function(a,b,c){return this.option.search=[a,b,c],this.process.push("search"),this},a.prototype.innerJoin=function(a,b,c){return this.option.innerJoin=[a,b,c],this.process.push("innerJoin"),this},a.prototype.get=function(a,b){void 0===b&&(b={}),this.data=a;var c=__assign(__assign({},this.config),b);b.query&&this.setQuery(b.query),this.processManager();var d=__spreadArrays(this.data);return!1!==c.resetRecord&&this.reset(),d},a.prototype.getQuery=function(){var a=__assign({},this.option);return this.reset(),a},a.prototype.setQuery=function(a){var b=this;return(0,_typeCheck.isObject)(a)?(this.option=a,Object.keys(a).forEach(function(c){a[c]&&b.process.push(c)}),this):this},a}();exports.default=new JsonFunction;