@rechat/squel
Version:
SQL query string builder
1 lines • 35.6 kB
JavaScript
/*! squel | https://github.com/hiddentao/squel | BSD license */!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.squel=e()}(this,function(){"use strict";function i(t,e,n){return(i="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=l(t)););return t}(t,e);if(r){var i=Object.getOwnPropertyDescriptor(r,e);return i.get?i.get.call(n):i.value}})(t,e,n||t)}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&n(t,e)}function n(t,e){return(n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function o(r){var i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=l(r);if(i){var n=l(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&("object"===c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined")}return f(t)}(this,t)}}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function h(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function u(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function v(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){l=!0,a=t},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw a}}}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function p(t,e){return t.length?t+e:t}function y(n){for(var t=arguments.length,e=new Array(1<t?t-1:0),r=1;r<t;r++)e[r-1]=arguments[r];if(n&&e){var i,a=v(e);try{var o=function(){var e=i.value;"object"===c(e)&&Object.getOwnPropertyNames(e).forEach(function(t){n[t]=e[t]})};for(a.s();!(i=a.n()).done;)o()}catch(t){a.e(t)}finally{a.f()}}return n}function g(t){return t&&t.constructor.prototype===Object.prototype}function _(t){return t&&t.constructor.prototype===Array.prototype}function m(t,e,n){var r=c(e);if("function"!==r&&"string"!==r)throw new Error("type must be a class constructor or string");if("function"!=typeof n)throw new Error("handler must be a function");var i,a=v(t);try{for(a.s();!(i=a.n()).done;){var o=i.value;if(o.type===e)return void(o.handler=n)}}catch(t){a.e(t)}finally{a.f()}t.push({type:e,handler:n})}function b(t,e,n){return d(t,e)||d(t,n)}function d(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(c(t)===r.type||"string"!=typeof r.type&&t instanceof r.type)return r.handler}}function k(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,d={isSquelBuilder:function(t){return t&&!!t._toParamString}},s=function(t){return!d.isSquelBuilder(t)||!t.options.rawNesting};d.DefaultQueryBuilderOptions={autoQuoteTableNames:!1,autoQuoteFieldNames:!1,autoQuoteAliasNames:!0,useAsForTableAliasNames:!1,nameQuoteCharacter:"`",tableAliasQuoteCharacter:"`",fieldAliasQuoteCharacter:'"',valueHandlers:[],parameterCharacter:"?",numberedParameters:!1,numberedParametersPrefix:"$",numberedParametersStartAt:1,replaceSingleQuotes:!1,singleQuoteReplacement:"''",separator:" ",stringFormatter:null,rawNesting:!1},d.globalValueHandlers=[],d.registerValueHandler=function(t,e){m(d.globalValueHandlers,t,e)},d.Cloneable=function(){function t(){h(this,t)}return u(t,[{key:"clone",value:function(){return y(new this.constructor,function e(n){if(!n)return n;if("function"==typeof n.clone)return n.clone();if(g(n)||_(n)){var r=new n.constructor;return Object.getOwnPropertyNames(n).forEach(function(t){"function"!=typeof n[t]&&(r[t]=e(n[t]))}),r}return JSON.parse(JSON.stringify(n))}(y({},this)))}}]),t}(),d.BaseBuilder=function(t){a(i,d.Cloneable);var r=o(i);function i(t){var e;h(this,i),e=r.call(this);var n=JSON.parse(JSON.stringify(d.DefaultQueryBuilderOptions));return["stringFormatter"].forEach(function(t){n[t]=d.DefaultQueryBuilderOptions[t]}),e.options=y({},n,t),e}return u(i,[{key:"registerValueHandler",value:function(t,e){return m(this.options.valueHandlers,t,e),this}},{key:"_sanitizeExpression",value:function(t){if(!d.isSquelBuilder(t)&&"string"!=typeof t)throw new Error("expression must be a string or builder instance");return t}},{key:"_sanitizeName",value:function(t,e){if("string"!=typeof t)throw new Error("".concat(e," must be a string"));return t}},{key:"_sanitizeField",value:function(t){return d.isSquelBuilder(t)||(t=this._sanitizeName(t,"field name")),t}},{key:"_sanitizeBaseBuilder",value:function(t){if(d.isSquelBuilder(t))return t;throw new Error("must be a builder instance")}},{key:"_sanitizeTable",value:function(t){if("string"!=typeof t)try{t=this._sanitizeBaseBuilder(t)}catch(t){throw new Error("table name must be a string or a builder")}else t=this._sanitizeName(t,"table");return t}},{key:"_sanitizeTableAlias",value:function(t){return this._sanitizeName(t,"table alias")}},{key:"_sanitizeFieldAlias",value:function(t){return this._sanitizeName(t,"field alias")}},{key:"_sanitizeLimitOffset",value:function(t){if((t=parseInt(t))<0||isNaN(t))throw new Error("limit/offset must be >= 0");return t}},{key:"_sanitizeValue",value:function(t){var e=c(t);if(null===t);else if("string"===e||"number"===e||"boolean"===e);else if(d.isSquelBuilder(t));else{if(!!!b(t,this.options.valueHandlers,d.globalValueHandlers))throw new Error("field value must be a string, number, boolean, null or one of the registered custom value types")}return t}},{key:"_escapeValue",value:function(t){return this.options.replaceSingleQuotes&&t?t.replace(/\'/g,this.options.singleQuoteReplacement):t}},{key:"_formatTableName",value:function(t){if(this.options.autoQuoteTableNames){var e=this.options.nameQuoteCharacter;t="".concat(e).concat(t).concat(e)}return t}},{key:"_formatFieldAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.fieldAliasQuoteCharacter;t="".concat(e).concat(t).concat(e)}return t}},{key:"_formatTableAlias",value:function(t){if(this.options.autoQuoteAliasNames){var e=this.options.tableAliasQuoteCharacter;t="".concat(e).concat(t).concat(e)}return this.options.useAsForTableAliasNames?"AS ".concat(t):t}},{key:"_formatFieldName",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(this.options.autoQuoteFieldNames){var n=this.options.nameQuoteCharacter;t=e.ignorePeriodsForFieldNameQuotes?"".concat(n).concat(t).concat(n):t.split(".").map(function(t){return"*"===t?t:"".concat(n).concat(t).concat(n)}).join(".")}return t}},{key:"_formatCustomValue",value:function(t,e,n){var r=b(t,this.options.valueHandlers,d.globalValueHandlers);return r&&(t=r(t,e,n))&&t.rawNesting?{formatted:!0,rawNesting:!0,value:t.value}:{formatted:!!r,value:t}}},{key:"_formatValueForParamArray",value:function(t){var e=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return _(t)?t.map(function(t){return e._formatValueForParamArray(t,n)}):this._formatCustomValue(t,!0,n).value}},{key:"_formatValueForQueryString",value:function(t){var e=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=this._formatCustomValue(t,!1,n),i=r.rawNesting,a=r.formatted,o=r.value;if(a)return i?o:this._applyNestingFormatting(o,s(t));if(_(o))o=o.map(function(t){return e._formatValueForQueryString(t)}),o=this._applyNestingFormatting(o.join(", "),s(o));else{var l=c(o);if(null===o)o="NULL";else if("boolean"===l)o=o?"TRUE":"FALSE";else if(d.isSquelBuilder(o))o=this._applyNestingFormatting(o.toString(),s(o));else if("number"!==l){if("string"===l&&this.options.stringFormatter)return this.options.stringFormatter(o);if(n.dontQuote)o="".concat(o);else{var u=this._escapeValue(o);o="'".concat(u,"'")}}}return o}},{key:"_applyNestingFormatting",value:function(t){var e=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(t&&"string"==typeof t&&e&&!this.options.rawNesting){var n="("===t.charAt(0)&&")"===t.charAt(t.length-1);if(n)for(var r=0,i=1;t.length-1>++r;){var a=t.charAt(r);if("("===a)i++;else if(")"===a&&--i<1){n=!1;break}}n||(t="(".concat(t,")"))}return t}},{key:"_buildString",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},r=n.nested,i=n.buildParameterized,a=n.formattingOptions;e=e||[],t=t||"";for(var o="",l=-1,u=[],s=this.options.parameterCharacter,c=0;t.length>c;)if(t.substr(c,s.length)===s){var f=e[++l];if(i)if(d.isSquelBuilder(f)){var h=f._toParamString({buildParameterized:i,nested:!0});o+=h.text,h.values.forEach(function(t){return u.push(t)})}else if(_(f=this._formatValueForParamArray(f,a))){var v=f.map(function(){return s}).join(", ");o+="(".concat(v,")"),f.forEach(function(t){return u.push(t)})}else o+=s,u.push(f);else o+=this._formatValueForQueryString(f,a);c+=s.length}else o+=t.charAt(c),c++;return{text:this._applyNestingFormatting(o,!!r),values:u}}},{key:"_buildManyStrings",value:function(t,e){for(var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},r=[],i=[],a=0;t.length>a;++a){var o=t[a],l=e[a],u=this._buildString(o,l,{buildParameterized:n.buildParameterized,nested:!1}),s=u.text,c=u.values;r.push(s),c.forEach(function(t){return i.push(t)})}return{text:(r=r.join(this.options.separator)).length?this._applyNestingFormatting(r,!!n.nested):"",values:i}}},{key:"_toParamString",value:function(t){throw new Error("Not yet implemented")}},{key:"toString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._toParamString(t).text}},{key:"toParam",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._toParamString(y({},t,{buildParameterized:!0}))}}]),i}(),d.Expression=function(t){a(r,d.BaseBuilder);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._nodes=[],e}return u(r,[{key:"and",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._nodes.push({type:"AND",expr:t,para:n}),this}},{key:"or",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._nodes.push({type:"OR",expr:t,para:n}),this}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=[],r=[],i=v(this._nodes);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.type,l=a.expr,u=a.para,s=d.isSquelBuilder(l)?l._toParamString({buildParameterized:e.buildParameterized,nested:!0}):this._buildString(l,u,{buildParameterized:e.buildParameterized}),c=s.text,f=s.values;n.length&&n.push(o),n.push(c),f.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return n=n.join(" "),{text:this._applyNestingFormatting(n,!!e.nested),values:r}}}]),r}(),d.Case=function(t){a(i,d.BaseBuilder);var r=o(i);function i(t){var e,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return h(this,i),e=r.call(this,n),g(t)&&(n=t,t=null),t&&(e._fieldName=e._sanitizeField(t)),e.options=y({},d.DefaultQueryBuilderOptions,n),e._cases=[],e._elseValue=null,e}return u(i,[{key:"when",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return this._cases.unshift({expression:t,values:n||[]}),this}},{key:"then",value:function(t){if(0==this._cases.length)throw new Error("when() needs to be called first");return this._cases[0].result=t,this}},{key:"else",value:function(t){return this._elseValue=t,this}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=v(this._cases);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.expression,l=a.values,u=a.result;n=p(n," ");var s=this._buildString(o,l,{buildParameterized:e.buildParameterized,nested:!0});n+="WHEN ".concat(s.text," THEN ").concat(this._formatValueForQueryString(u)),s.values.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return{text:n=n.length?(n+=" ELSE ".concat(this._formatValueForQueryString(this._elseValue)," END"),this._fieldName&&(n="".concat(this._fieldName," ").concat(n)),"CASE ".concat(n)):this._formatValueForQueryString(this._elseValue),values:r}}}]),i}(),d.Block=function(t){a(n,d.BaseBuilder);var e=o(n);function n(t){return h(this,n),e.call(this,t)}return u(n,[{key:"exposedMethods",value:function(){for(var e={},n=this;n;)Object.getOwnPropertyNames(n).forEach(function(t){"constructor"===t||"function"!=typeof n[t]||"_"===t.charAt(0)||d.Block.prototype[t]||(e[t]=n[t])}),n=Object.getPrototypeOf(n);return e}}]),n}(),d.StringBlock=function(t){a(i,d.Block);var r=o(i);function i(t,e){var n;return h(this,i),(n=r.call(this,t))._str=e,n}return u(i,[{key:"_toParamString",value:function(){0<arguments.length&&void 0!==arguments[0]&&arguments[0];return{text:this._str,values:[]}}}]),i}(),d.FunctionBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._strings=[],e._values=[],e}return u(r,[{key:"function",value:function(t){this._strings.push(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._values.push(n)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this._buildManyStrings(this._strings,this._values,t)}}]),r}(),d.registerValueHandler(d.FunctionBlock,function(t){return 1<arguments.length&&void 0!==arguments[1]&&arguments[1]?t.toParam():t.toString()}),d.AbstractTableBlock=function(t){a(i,d.Block);var r=o(i);function i(t,e){var n;return h(this,i),(n=r.call(this,t))._tables=[],n}return u(i,[{key:"_table",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;e=e?this._sanitizeTableAlias(e):e,t=this._sanitizeTable(t),this.options.singleTable&&(this._tables=[]),this._tables.push({table:t,alias:e})}},{key:"_hasTable",value:function(){return 0<this._tables.length}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[];if(this._hasTable()){var r,i=v(this._tables);try{for(i.s();!(r=i.n()).done;){var a=r.value,o=a.table,l=a.alias;e=p(e,", ");var u=void 0;if(d.isSquelBuilder(o)){var s=o._toParamString({buildParameterized:t.buildParameterized,nested:!0}),c=s.text,f=s.values;u=c,f.forEach(function(t){return n.push(t)})}else u=this._formatTableName(o);l&&(u+=" ".concat(this._formatTableAlias(l))),e+=u}}catch(t){i.e(t)}finally{i.f()}this.options.prefix&&(e="".concat(this.options.prefix," ").concat(e))}return{text:e,values:n}}}]),i}(),d.TargetTableBlock=function(t){a(n,d.AbstractTableBlock);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"target",value:function(t){this._table(t)}}]),n}(),d.UpdateTableBlock=function(t){a(n,d.AbstractTableBlock);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"table",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;this._table(t,e)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this._hasTable())throw new Error("table() needs to be called");return i(l(n.prototype),"_toParamString",this).call(this,t)}}]),n}(),d.FromTableBlock=function(t){a(n,d.AbstractTableBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{prefix:"FROM"}))}return u(n,[{key:"from",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;this._table(t,e)}}]),n}(),d.IntoTableBlock=function(t){a(n,d.AbstractTableBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{prefix:"INTO",singleTable:!0}))}return u(n,[{key:"into",value:function(t){this._table(t)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this._hasTable())throw new Error("into() needs to be called");return i(l(n.prototype),"_toParamString",this).call(this,t)}}]),n}(),d.GetFieldBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._fields=[],e}return u(r,[{key:"fields",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(_(t)){var n,r=v(t);try{for(r.s();!(n=r.n()).done;){var i=n.value;this.field(i,null,e)}}catch(t){r.e(t)}finally{r.f()}}else for(var a in t){var o=t[a];this.field(a,o,e)}}},{key:"field",value:function(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(n=n?this._sanitizeFieldAlias(n):n,e=this._sanitizeField(e),this._fields.filter(function(t){return t.name===e&&t.alias===n}).length)return this;this._fields.push({name:e,alias:n,options:t})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=e.queryBuilder,r=e.buildParameterized,i="",a=[],o=v(this._fields);try{for(o.s();!(t=o.n()).done;){var l=t.value;i=p(i,", ");var u=l.name,s=l.alias,c=l.options;if("string"==typeof u)i+=this._formatFieldName(u,c);else{var f=u._toParamString({nested:!0,buildParameterized:r});i+=f.text,f.values.forEach(function(t){return a.push(t)})}s&&(i+=" AS ".concat(this._formatFieldAlias(s)))}}catch(t){o.e(t)}finally{o.f()}if(!i.length){var h=n&&n.getBlock(d.FromTableBlock);h&&h._hasTable()&&(i="*")}return{text:i,values:a}}}]),r}(),d.AbstractSetFieldBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._reset(),e}return u(r,[{key:"_reset",value:function(){this._fields=[],this._values=[[]],this._valueOptions=[[]]}},{key:"_set",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(1<this._values.length)throw new Error("Cannot set multiple rows of fields this way.");void 0!==e&&(e=this._sanitizeValue(e)),t=this._sanitizeField(t);var r=this._fields.indexOf(t);-1===r&&(this._fields.push(t),r=this._fields.length-1),this._values[0][r]=e,this._valueOptions[0][r]=n}},{key:"_setFields",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if("object"!==c(t))throw new Error("Expected an object but got "+c(t));for(var n in t)this._set(n,t[n],e)}},{key:"_setFieldsRows",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(!_(t))throw new Error("Expected an array of objects but got "+c(t));this._reset();for(var n=0;t.length>n;++n){var r=t[n];for(var i in r){var a=r[i];i=this._sanitizeField(i),a=this._sanitizeValue(a);var o=this._fields.indexOf(i);if(0<n&&-1===o)throw new Error("All fields in subsequent rows must match the fields in the first row");-1===o&&(this._fields.push(i),o=this._fields.length-1),_(this._values[n])||(this._values[n]=[],this._valueOptions[n]=[]),this._values[n][o]=a,this._valueOptions[n][o]=e}}}}]),r}(),d.SetFieldBlock=function(t){a(n,d.AbstractSetFieldBlock);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"set",value:function(t,e,n){this._set(t,e,n)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"_toParamString",value:function(){var t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).buildParameterized;if(this._fields.length<=0)throw new Error("set() needs to be called");for(var e="",n=[],r=0;r<this._fields.length;++r){e=p(e,", ");var i=this._formatFieldName(this._fields[r]),a=this._values[0][r];i.indexOf("=")<0&&(i="".concat(i," = ").concat(this.options.parameterCharacter));var o=this._buildString(i,[a],{buildParameterized:t,formattingOptions:this._valueOptions[0][r]});e+=o.text,o.values.forEach(function(t){return n.push(t)})}return{text:"SET ".concat(e),values:n}}}]),n}(),d.InsertFieldValueBlock=function(t){a(n,d.AbstractSetFieldBlock);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"set",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};this._set(t,e,n)}},{key:"setFields",value:function(t,e){this._setFields(t,e)}},{key:"setFieldsRows",value:function(t,e){this._setFieldsRows(t,e)}},{key:"_toParamString",value:function(){for(var e=this,t=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).buildParameterized,n=this._fields.map(function(t){return e._formatFieldName(t)}).join(", "),r=[],i=[],a=0;a<this._values.length;++a){r[a]="";for(var o=0;o<this._values[a].length;++o){var l=this._buildString(this.options.parameterCharacter,[this._values[a][o]],{buildParameterized:t,formattingOptions:this._valueOptions[a][o]});l.values.forEach(function(t){return i.push(t)}),r[a]=p(r[a],", "),r[a]+=l.text}}return{text:n.length?"(".concat(n,") VALUES (").concat(r.join("), ("),")"):"",values:i}}}]),n}(),d.InsertFieldsFromQueryBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._fields=[],e._query=null,e}return u(r,[{key:"fromQuery",value:function(t,e){var n=this;this._fields=t.map(function(t){return n._sanitizeField(t)}),this._query=this._sanitizeBaseBuilder(e)}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e="",n=[];if(this._fields.length&&this._query){var r=this._query._toParamString({buildParameterized:t.buildParameterized,nested:!0}),i=r.text,a=r.values;e="(".concat(this._fields.join(", "),") ").concat(this._applyNestingFormatting(i)),n=a}return{text:e,values:n}}}]),r}(),d.DistinctBlock=function(t){a(n,d.Block);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"distinct",value:function(){this._useDistinct=!0}},{key:"_toParamString",value:function(){return{text:this._useDistinct?"DISTINCT":"",values:[]}}}]),n}(),d.GroupByBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._groups=[],e}return u(r,[{key:"group",value:function(t){this._groups.push(this._sanitizeField(t))}},{key:"_toParamString",value:function(){0<arguments.length&&void 0!==arguments[0]&&arguments[0];return{text:this._groups.length?"GROUP BY ".concat(this._groups.join(", ")):"",values:[]}}}]),r}(),d.AbstractVerbSingleValueBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._value=null,e}return u(r,[{key:"_setValue",value:function(t){this._value=null!==t?this._sanitizeLimitOffset(t):t}},{key:"_toParamString",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=null!==this._value?"".concat(this.options.verb," ").concat(this.options.parameterCharacter):"",n=null!==this._value?[this._value]:[];return this._buildString(e,n,t)}}]),r}(),d.OffsetBlock=function(t){a(n,d.AbstractVerbSingleValueBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{verb:"OFFSET"}))}return u(n,[{key:"offset",value:function(t){this._setValue(t)}}]),n}(),d.LimitBlock=function(t){a(n,d.AbstractVerbSingleValueBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{verb:"LIMIT"}))}return u(n,[{key:"limit",value:function(t){this._setValue(t)}}]),n}(),d.AbstractConditionBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._conditions=[],e}return u(r,[{key:"_condition",value:function(t){t=this._sanitizeExpression(t);for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._conditions.push({expr:t,values:n||[]})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=[],r=[],i=v(this._conditions);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.expr,l=a.values,u=d.isSquelBuilder(o)?o._toParamString({buildParameterized:e.buildParameterized}):this._buildString(o,l,{buildParameterized:e.buildParameterized});u.text.length&&n.push(u.text),u.values.forEach(function(t){return r.push(t)})}}catch(t){i.e(t)}finally{i.f()}return n.length&&(n=n.join(") AND (")),{text:n.length?"".concat(this.options.verb," (").concat(n,")"):"",values:r}}}]),r}(),d.WhereBlock=function(t){a(n,d.AbstractConditionBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{verb:"WHERE"}))}return u(n,[{key:"where",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),n}(),d.HavingBlock=function(t){a(n,d.AbstractConditionBlock);var e=o(n);function n(t){return h(this,n),e.call(this,y({},t,{verb:"HAVING"}))}return u(n,[{key:"having",value:function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];this._condition.apply(this,[t].concat(n))}}]),n}(),d.OrderByBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._orders=[],e}return u(r,[{key:"order",value:function(t,e){t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC"));for(var n=arguments.length,r=new Array(2<n?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];this._orders.push({field:t,dir:e,values:r||[],nullsLast:null})}},{key:"orderNullsLast",value:function(t,e){t=this._sanitizeField(t),"string"!=typeof e&&(void 0===e?e="ASC":null!==e&&(e=e?"ASC":"DESC"));for(var n=arguments.length,r=new Array(2<n?n-2:0),i=2;i<n;i++)r[i-2]=arguments[i];this._orders.push({field:t,dir:e,values:r||[],nullsLast:!0})}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=v(this._orders);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.field,l=a.dir,u=a.values,s=a.nullsLast;n=p(n,", ");var c=this._buildString(o,u,{buildParameterized:e.buildParameterized});n+=c.text,_(c.values)&&c.values.forEach(function(t){return r.push(t)}),null!==l&&(n+=" ".concat(l)),null!==s&&(n+=" NULLS ".concat(s?"LAST":"FIRST"))}}catch(t){i.e(t)}finally{i.f()}return{text:n.length?"ORDER BY ".concat(n):"",values:r}}}]),r}(),d.JoinBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._joins=[],e}return u(r,[{key:"join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"INNER";t=this._sanitizeTable(t,!0),e=e?this._sanitizeTableAlias(e):e,n=n?this._sanitizeExpression(n):n,this._joins.push({type:r,table:t,alias:e,condition:n})}},{key:"left_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"LEFT")}},{key:"right_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"RIGHT")}},{key:"outer_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"OUTER")}},{key:"left_outer_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"LEFT OUTER")}},{key:"full_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"FULL")}},{key:"cross_join",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;this.join(t,e,n,"CROSS")}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=v(this._joins);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.type,l=a.table,u=a.alias,s=a.condition;n=p(n,this.options.separator);var c=void 0;if(d.isSquelBuilder(l)){var f=l._toParamString({buildParameterized:e.buildParameterized,nested:!0});f.values.forEach(function(t){return r.push(t)}),c=f.text}else c=this._formatTableName(l);if(n+="".concat(o," JOIN ").concat(c),u&&(n+=" ".concat(this._formatTableAlias(u))),s){n+=" ON ";var h=void 0;h=d.isSquelBuilder(s)?s._toParamString({buildParameterized:e.buildParameterized}):this._buildString(s,[],{buildParameterized:e.buildParameterized}),n+=this._applyNestingFormatting(h.text),h.values.forEach(function(t){return r.push(t)})}}}catch(t){i.e(t)}finally{i.f()}return{text:n,values:r}}}]),r}(),d.LockBlock=function(t){a(n,d.Block);var e=o(n);function n(){return h(this,n),e.apply(this,arguments)}return u(n,[{key:"locking",value:function(t){this.lock_level=t}},{key:"_toParamString",value:function(){return{text:this.lock_level?this.lock_level:"",values:[]}}}]),n}(),d.SetOpBlock=function(t){a(r,d.Block);var n=o(r);function r(t){var e;return h(this,r),(e=n.call(this,t))._sets=[],e}return u(r,[{key:"_add",value:function(t,e){t=this._sanitizeTable(t),this._sets.push({type:e,table:t})}},{key:"union",value:function(t){this._add(t,"UNION")}},{key:"union_all",value:function(t){this._add(t,"UNION ALL")}},{key:"intersect",value:function(t){this._add(t,"INTERSECT")}},{key:"intersect_all",value:function(t){this._add(t,"INTERSECT ALL")}},{key:"except",value:function(t){this._add(t,"EXCEPT")}},{key:"except_all",value:function(t){this._add(t,"EXCEPT ALL")}},{key:"_toParamString",value:function(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n="",r=[],i=v(this._sets);try{for(i.s();!(t=i.n()).done;){var a=t.value,o=a.type,l=a.table;n=p(n,this.options.separator);var u=void 0;if(l instanceof d.BaseBuilder){var s=l._toParamString({buildParameterized:e.buildParameterized,nested:!0});u=s.text,s.values.forEach(function(t){return r.push(t)})}else n=this._formatTableName(l);n+="".concat(o," ").concat(u)}}catch(t){i.e(t)}finally{i.f()}return{text:n,values:r}}}]),r}(),d.QueryBuilder=function(t){a(c,d.BaseBuilder);var s=o(c);function c(t,e){var a;h(this,c),(a=s.call(this,t)).blocks=e||[];var n,r=v(a.blocks);try{for(r.s();!(n=r.n()).done;){var i=n.value,o=i.exposedMethods();for(var l in o){var u=o[l];if(void 0!==a[l])throw new Error("Builder already has a builder method called: ".concat(l));!function(r,t,i){a[l]=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return i.call.apply(i,[r].concat(e)),f(a)}}(i,0,u)}}}catch(t){r.e(t)}finally{r.f()}return a}return u(c,[{key:"registerValueHandler",value:function(t,e){var n,r=v(this.blocks);try{for(r.s();!(n=r.n()).done;){n.value.registerValueHandler(t,e)}}catch(t){r.e(t)}finally{r.f()}return i(l(c.prototype),"registerValueHandler",this).call(this,t,e),this}},{key:"updateOptions",value:function(t){this.options=y({},this.options,t);var e,n=v(this.blocks);try{for(n.s();!(e=n.n()).done;){var r=e.value;r.options=y({},r.options,t)}}catch(t){n.e(t)}finally{n.f()}}},{key:"_toParamString",value:function(){var e=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};n=y({},this.options,n);var t=this.blocks.map(function(t){return t._toParamString({buildParameterized:n.buildParameterized,queryBuilder:e})}),r=t.map(function(t){return t.text}),i=t.map(function(t){return t.values}),a=r.filter(function(t){return 0<t.length}).join(n.separator),o=[];if(i.forEach(function(t){return t.forEach(function(t){return o.push(t)})}),!n.nested&&n.numberedParameters){var l=void 0!==n.numberedParametersStartAt?n.numberedParametersStartAt:1,u=n.parameterCharacter.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");a=a.replace(new RegExp(u,"g"),function(){return"".concat(n.numberedParametersPrefix).concat(l++)})}return{text:this._applyNestingFormatting(a,!!n.nested),values:o}}},{key:"clone",value:function(){var t=this.blocks.map(function(t){return t.clone()});return new this.constructor(this.options,t)}},{key:"getBlock",value:function(e){return this.blocks.filter(function(t){return t instanceof e})[0]}}]),c}(),d.Select=function(t){a(r,d.QueryBuilder);var n=o(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return h(this,r),e=e||[new d.StringBlock(t,"SELECT"),new d.FunctionBlock(t),new d.DistinctBlock(t),new d.GetFieldBlock(t),new d.FromTableBlock(t),new d.JoinBlock(t),new d.WhereBlock(t),new d.GroupByBlock(t),new d.HavingBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t),new d.OffsetBlock(t),new d.LockBlock(t),new d.SetOpBlock(t)],n.call(this,t,e)}return r}(),d.Update=function(t){a(r,d.QueryBuilder);var n=o(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return h(this,r),e=e||[new d.StringBlock(t,"UPDATE"),new d.UpdateTableBlock(t),new d.SetFieldBlock(t),new d.WhereBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t)],n.call(this,t,e)}return r}(),d.Delete=function(t){a(r,d.QueryBuilder);var n=o(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return h(this,r),e=e||[new d.StringBlock(t,"DELETE"),new d.TargetTableBlock(t),new d.FromTableBlock(y({},t,{singleTable:!0})),new d.JoinBlock(t),new d.WhereBlock(t),new d.OrderByBlock(t),new d.LimitBlock(t)],n.call(this,t,e)}return r}(),d.Insert=function(t){a(r,d.QueryBuilder);var n=o(r);function r(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;return h(this,r),e=e||[new d.StringBlock(t,"INSERT"),new d.IntoTableBlock(t),new d.InsertFieldValueBlock(t),new d.InsertFieldsFromQueryBlock(t)],n.call(this,t,e)}return r}();var e={VERSION:"5.15.1",flavour:t,expr:function(t){return new d.Expression(t)},case:function(t,e){return new d.Case(t,e)},select:function(t,e){return new d.Select(t,e)},update:function(t,e){return new d.Update(t,e)},insert:function(t,e){return new d.Insert(t,e)},delete:function(t,e){return new d.Delete(t,e)},str:function(){var t=new d.FunctionBlock;return t.function.apply(t,arguments),t},rstr:function(){var t=new d.FunctionBlock({rawNesting:!0});return t.function.apply(t,arguments),t},registerValueHandler:d.registerValueHandler};return e.remove=e.delete,e.cls=d,e}var B=k();return B.flavours={},B.useFlavour=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;if(!t)return B;if(B.flavours[t]instanceof Function){var e=k(t);return B.flavours[t].call(null,e),e.flavours=B.flavours,e.useFlavour=B.useFlavour,e}throw new Error("Flavour not available: ".concat(t))},B});