foxhound
Version:
A Database Query generation library.
16 lines (15 loc) • 25.1 kB
JavaScript
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Foxhound=e()}}((function(){return function e(r,t,n){function a(o,u){if(!t[o]){if(!r[o]){var s="function"==typeof require&&require;if(!u&&s)return s(o,!0);if(i)return i(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=t[o]={exports:{}};r[o][0].call(c.exports,(function(e){return a(r[o][1][e]||e)}),c,c.exports,e,r,t,n)}return t[o].exports}for(var i="function"==typeof require&&require,o=0;o<n.length;o++)a(n[o]);return a}({1:[function(e,r,t){
/**
* Simple browser shim loader - assign the npm module to a window global automatically
*
* @license MIT
* @author <steven@velozo.com>
*/
var n=e("./Foxhound.js");"object"!=typeof window||window.hasOwnProperty("Foxhound")||(window.Foxhound=n),r.exports=n},{"./Foxhound.js":3}],2:[function(e,r,t){getDialects=()=>{let r={};return r.ALASQL=e("./dialects/ALASQL/FoxHound-Dialect-ALASQL.js"),r.English=e("./dialects/English/FoxHound-Dialect-English.js"),r.MeadowEndpoints=e("./dialects/MeadowEndpoints/FoxHound-Dialect-MeadowEndpoints.js"),r.MySQL=e("./dialects/MySQL/FoxHound-Dialect-MySQL.js"),r.default=r.English,r},r.exports=getDialects()},{"./dialects/ALASQL/FoxHound-Dialect-ALASQL.js":5,"./dialects/English/FoxHound-Dialect-English.js":6,"./dialects/MeadowEndpoints/FoxHound-Dialect-MeadowEndpoints.js":7,"./dialects/MySQL/FoxHound-Dialect-MySQL.js":8}],3:[function(e,r,t){
/**
* FoxHound Query Generation Library
* @license MIT
* @author Steven Velozo <steven@velozo.com>
*/
const n=e("./Parameters.js");r.exports=function r(t,a){if("object"!=typeof t||!("fable"in t))return{new:r};var i=t,o=void 0===a?{}:a,u=!1,s=e("./Foxhound-Dialects.js"),l=i.getUUID(),c=0,y=!1,d=function(){return(u=i.Utility.extend({},n,o)).query={disableAutoIdentity:!1,disableAutoDateStamp:!1,disableAutoUserStamp:!1,disableDeleteTracking:!1,body:!1,schema:!1,IDUser:0,UUID:i.getUUID(),records:!1,parameters:{}},u.result={executed:!1,value:!1,error:void 0},this};d();var f=function(e,r,t,n){if("string"!=typeof e)return i.log.warn("Tried to add an invalid query join table",{queryUUID:l,parameters:u}),this;if(void 0===r||void 0===t)return i.log.warn("Tried to add an invalid query join field",{queryUUID:l,parameters:u}),this;if(0!=r.indexOf(e))return i.log.warn("Tried to add an invalid query join field, join must come FROM the join table!",{queryUUID:l,parameters:u,invalidField:r}),this;if(t.indexOf(".")<=0)return i.log.warn("Tried to add an invalid query join field, join must go TO a field on another table ([table].[field])!",{queryUUID:l,parameters:u,invalidField:t}),this;var a={Type:void 0===n?"INNER JOIN":n,Table:e,From:r,To:t};return Array.isArray(u.join)?u.join.push(a):u.join=[a],c>2&&i.log.info("Added a join",{queryUUID:l,parameters:u}),this},p=function(e){return"string"!=typeof e?(i.log.warn("Dialect set to English - invalid name",{queryUUID:l,parameters:u,invalidDialect:e}),p("English")):(s.hasOwnProperty(e)?(y=s[e](i),c>2&&i.log.info("Dialog set to: "+e,{queryUUID:l,parameters:u})):(i.log.error('Dialect not set - unknown dialect "'+e+"'",{queryUUID:l,parameters:u,invalidDialect:e}),p("English")),this)},m=function(){!1===y&&p("English")},D={resetParameters:d,mergeParameters:function(e){return u=i.Utility.extend({},u,e),this},setLogLevel:function(e){var r=0;return"number"==typeof e&&e%1==0&&(r=e),c=r,this},setScope:function(e){var r=!1;return"string"==typeof e?r=e:!1!==e&&i.log.error("Scope set failed. You must pass in a string or array.",{queryUUID:l,parameters:u,invalidScope:e}),u.scope=r,c>2&&i.log.info("Scope set: "+r,{queryUUID:l,parameters:u}),this},setDistinct:function(e){return u.distinct=!!e,c>2&&i.log.info("Distinct set: "+u.distinct,{queryUUID:l,parameters:u}),this},setIDUser:function(e){var r=0;return"number"==typeof e&&e%1==0&&e>=0?r=e:!1!==e&&i.log.error("User set failed; non-positive or non-numeric argument.",{queryUUID:l,parameters:u,invalidIDUser:e}),u.userID=r,u.query.IDUser=r,c>2&&i.log.info("IDUser set to: "+r,{queryUUID:l,parameters:u}),this},setDataElements:function(e){var r=!1;return Array.isArray(e)&&(r=e),"string"==typeof e&&(r=[e]),u.dataElements=r,c>2&&i.log.info("Data Elements set",{queryUUID:l,parameters:u}),this},setBegin:function(e){var r=!1;return"number"==typeof e&&e%1==0&&e>=0?r=e:!1!==e&&i.log.error("Begin set failed; non-positive or non-numeric argument.",{queryUUID:l,parameters:u,invalidBeginAmount:e}),u.begin=r,c>2&&i.log.info("Begin set: "+e,{queryUUID:l,parameters:u}),this},setCap:function(e){var r=!1;return"number"==typeof e&&e%1==0&&e>=0?r=e:!1!==e&&i.log.error("Cap set failed; non-positive or non-numeric argument.",{queryUUID:l,parameters:u,invalidCapAmount:e}),u.cap=r,c>2&&i.log.info("Cap set to: "+r,{queryUUID:l,parameters:u}),this},setFilter:function(e){var r=!1;return Array.isArray(e)?r=e:"object"==typeof e&&(r=[e]),u.filter=r,c>2&&i.log.info("Filter set",{queryUUID:l,parameters:u}),this},addFilter:function(e,r,t,n,a){if("string"!=typeof e)return i.log.warn("Tried to add an invalid query filter column",{queryUUID:l,parameters:u}),this;if(void 0===r)return i.log.warn("Tried to add an invalid query filter value",{queryUUID:l,parameters:u,invalidColumn:e}),this;var o=void 0===a?e:a,s={Column:e,Operator:void 0===t?"=":t,Value:r,Connector:void 0===n?"AND":n,Parameter:o=o.replace(".","_")};return Array.isArray(u.filter)?u.filter.push(s):u.filter=[s],c>2&&i.log.info("Added a filter",{queryUUID:l,parameters:u,newFilter:s}),this},setSort:function(e){var r=!1;return Array.isArray(e)?r=e:"string"==typeof e?r=[{Column:e,Direction:"Ascending"}]:"object"==typeof e&&(r=[e]),u.sort=r,c>2&&i.log.info("Sort set",{queryUUID:l,parameters:u}),this},addSort:function(e){var r=!1;return"string"==typeof e&&(r={Column:e,Direction:"Ascending"}),"object"==typeof e&&(r=e),u.sort||(u.sort=[]),u.sort.push(r),c>2&&i.log.info("Sort set",{queryUUID:l,parameters:u}),this},setJoin:function(e){return u.join=[],Array.isArray(e)?e.forEach((function(e){f(e.Table,e.From,e.To,e.Type)})):"object"==typeof e&&f(e.Table,e.From,e.To,e.Type),this},addJoin:f,addRecord:function(e){return"object"!=typeof e?(i.log.warn("Tried to add an invalid record to the query -- records must be an object",{queryUUID:l,parameters:u}),this):(Array.isArray(u.query.records)?u.query.records.push(e):u.query.records=[e],c>2&&i.log.info("Added a record to the query",{queryUUID:l,parameters:u,newRecord:e}),this)},setDisableAutoIdentity:function(e){return u.query.disableAutoIdentity=e,this},setDisableAutoDateStamp:function(e){return u.query.disableAutoDateStamp=e,this},setDisableAutoUserStamp:function(e){return u.query.disableAutoUserStamp=e,this},setDisableDeleteTracking:function(e){return u.query.disableDeleteTracking=e,this},setDialect:p,buildCreateQuery:function(){return m(),u.query.body=y.Create(u),this},buildReadQuery:function(){return m(),u.query.body=y.Read(u),this},buildUpdateQuery:function(){return m(),u.query.body=y.Update(u),this},buildDeleteQuery:function(){return m(),u.query.body=y.Delete(u),this},buildUndeleteQuery:function(){return m(),u.query.body=y.Undelete(u),this},buildCountQuery:function(){return m(),u.query.body=y.Count(u),this},clone:function(){var e=r(i,n).setScope(u.scope).setBegin(u.begin).setCap(u.cap);return e.query.schema=u.query.schema,u.dataElements&&(e.parameters.dataElements=u.dataElements.slice()),u.sort&&(e.parameters.sort=u.sort.slice()),u.filter&&(e.parameters.filter=u.filter.slice()),e},new:r};return Object.defineProperty(D,"query",{get:function(){return u.query},set:function(e){u.query=e},enumerable:!0}),Object.defineProperty(D,"result",{get:function(){return u.result},set:function(e){u.result=e},enumerable:!0}),Object.defineProperty(D,"parameters",{get:function(){return u},set:function(e){u=e},enumerable:!0}),Object.defineProperty(D,"dialect",{get:function(){return y},enumerable:!0}),Object.defineProperty(D,"uuid",{get:function(){return l},enumerable:!0}),Object.defineProperty(D,"logLevel",{get:function(){return c},enumerable:!0}),D}()},{"./Foxhound-Dialects.js":2,"./Parameters.js":4}],4:[function(e,r,t){r.exports={scope:!1,dataElements:!1,begin:!1,cap:!1,filter:!1,sort:!1,join:!1,queryOverride:!1,query:!1,userID:0,result:!1}},{}],5:[function(e,r,t){r.exports=function(e){_Fable=e;var r=function(e){return" "+e.scope},t=(e,r)=>{if(e.indexOf(".")<0)return"`"+e+"`";var t=r.scope;return e.indexOf(t+".")>-1?"`"+e.replace(t+".","")+"`":"`"+e+"`"},n=function(e,r){var n=e.dataElements;if(!Array.isArray(n)||n.length<1){if(!r)return" *";const t=Array.isArray(e.query.schema)?e.query.schema:[];if(t.length<1)return"";const n=t.find((e=>"AutoIdentity"===e.Type));return n?` ${n.Column}`:""}for(var a=" ",i=0;i<n.length;i++)i>0&&(a+=", "),a+=t(n[i],e);return a},a=function(e){var n=Array.isArray(e.filter)?e.filter:[],a=r(e).trim();if(!e.query.disableDeleteTracking)for(var i=Array.isArray(e.query.schema)?e.query.schema:[],o=0;o<i.length;o++){var u=i[o];if("Deleted"===u.Type){var s=!1;if(n.length>0)for(var l=0;l<n.length;l++)if(n[l].Column===u.Column){s=!0;break}s||n.push({Column:a+"."+u.Column,Operator:"=",Value:0,Connector:"AND",Parameter:"Deleted"});break}}if(n.length<1)return"";var c=" WHERE",y=!1;for(o=0;o<n.length;o++){var d;"NONE"!=n[o].Connector&&")"!=n[o].Operator&&" WHERE"!=c&&0==y&&(c+=" "+n[o].Connector),y=!1,"("===n[o].Operator?(c+=" (",y=!0):")"===n[o].Operator?c+=" )":"IN"===n[o].Operator?(d=n[o].Parameter+"_w"+o,c+=" "+t(n[o].Column,e)+" "+n[o].Operator+" ( :"+d+" )",e.query.parameters[d]=n[o].Value):"IS NOT NULL"===n[o].Operator?c+=" "+t(n[o].Column,e)+" "+n[o].Operator:(d=n[o].Parameter+"_w"+o,c+=" "+t(n[o].Column,e)+" "+n[o].Operator+" :"+d,e.query.parameters[d]=n[o].Value)}return c},i={Create:function(e){var n=r(e),a=function(e){var r=e.query.records,n=Array.isArray(e.query.schema)?e.query.schema:[],a="";for(var i in r[0]){for(var o={Column:i,Type:"Default"},u=0;u<n.length;u++)if(i==n[u].Column){o=n[u];break}(e.query.disableDeleteTracking||"DeleteDate"!==o.Type&&"DeleteIDUser"!==o.Type)&&(o.Type,""!=a&&(a+=","),a+=" "+t(i,e))}return a}(e),i=function(e){var r=e.query.records;if(!Array.isArray(r)||r.length<1)return!1;var t=Array.isArray(e.query.schema)?e.query.schema:[],n="",a=0;for(var i in r[0]){for(var o={Column:i,Type:"Default"},u=0;u<t.length;u++)if(i==t[u].Column){o=t[u];break}if(e.query.disableDeleteTracking||"DeleteDate"!==o.Type&&"DeleteIDUser"!==o.Type){a>0&&(n+=",");var s,l=function(){var t=i+"_"+a;n+=" :"+t,e.query.parameters[t]=r[0][i]};switch(o.Type){case"AutoIdentity":e.query.disableAutoIdentity?l():n+=" NULL";break;case"AutoGUID":e.query.disableAutoIdentity||r[0][i]&&r[0][i].length>=5&&"0x0000000000000000"!==r[0][i]?l():(n+=" :"+(s=i+"_"+a),e.query.parameters[s]=e.query.UUID);break;case"UpdateDate":case"CreateDate":case"DeleteDate":e.query.disableAutoDateStamp?l():n+=" NOW()";break;case"UpdateIDUser":case"CreateIDUser":case"DeleteIDUser":e.query.disableAutoUserStamp?l():(n+=" :"+(s=i+"_"+a),e.query.parameters[s]=e.query.IDUser);break;default:l()}a++}}return""!==n&&n}(e);return!!i&&"INSERT INTO"+n+" ("+a+") VALUES ("+i+");"},Read:function(e){var i=n(e),o=r(e),u=a(e),s=function(e){var r=e.sort;if(!Array.isArray(r)||r.length<1)return"";for(var n=" ORDER BY",a=0;a<r.length;a++)a>0&&(n+=","),n+=" "+t(r[a].Column,e),"Descending"==r[a].Direction&&(n+=" DESC");return n}(e),l=function(e){if(!e.cap)return"";var r=" LIMIT";return r+=" "+e.cap,!1!==e.begin&&(r+=" FETCH "+e.begin),r}(e);const c=e.distinct?" DISTINCT":"";if(e.queryOverride)try{return _Fable.Utility.template(e.queryOverride)({FieldList:i,TableName:o,Where:u,OrderBy:s,Limit:l,Distinct:c,_Params:e})}catch(r){return console.log("Error with custom Read Query ["+e.queryOverride+"]: "+r),!1}return`SELECT${c}${i} FROM${o}${u}${s}${l};`},Update:function(e){var n=r(e),i=a(e),o=function(e){var r=e.query.records;if(!Array.isArray(r)||r.length<1)return!1;var n=Array.isArray(e.query.schema)?e.query.schema:[],a="",i=0;for(var o in r[0]){for(var u={Column:o,Type:"Default"},s=0;s<n.length;s++)if(o==n[s].Column){u=n[s];break}if(!(e.query.disableAutoDateStamp&&"UpdateDate"===u.Type||e.query.disableAutoUserStamp&&"UpdateIDUser"===u.Type)){switch(u.Type){case"AutoIdentity":case"CreateDate":case"CreateIDUser":case"DeleteDate":case"DeleteIDUser":continue}switch(i>0&&(a+=","),u.Type){case"UpdateDate":a+=" "+t(o,e)+" = NOW()";break;case"UpdateIDUser":var l=o+"_"+i;a+=" "+t(o,e)+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:var c=o+"_"+i;a+=" "+t(o,e)+" = :"+c,e.query.parameters[c]=r[0][o]}i++}}return""!==a&&a}(e);return!!o&&"UPDATE"+n+" SET"+o+i+";"},Delete:function(e){var n=r(e),i=a(e),o=function(e){if(e.query.disableDeleteTracking)return!1;for(var r=Array.isArray(e.query.schema)?e.query.schema:[],n=0,a=!1,i="",o={Type:"Default"},u=0;u<r.length;u++){var s=null;switch((o=r[u]).Type){case"Deleted":s=" "+t(o.Column,e)+" = 1",a=!0;break;case"DeleteDate":case"UpdateDate":s=" "+t(o.Column,e)+" = NOW()";break;case"DeleteIDUser":var l=o.Column+"_"+n;s=" "+t(o.Column,e)+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:continue}n>0&&(i+=","),i+=s,n++}return!(!a||""===i)&&i}(e);return o?"UPDATE"+n+" SET"+o+i+";":"DELETE FROM"+n+i+";"},Undelete:function(e){var n=r(e);let i=e.query.disableDeleteTracking;e.query.disableDeleteTracking=!0;var o=a(e),u=function(e){for(var r=Array.isArray(e.query.schema)?e.query.schema:[],n=0,a=!1,i="",o={Type:"Default"},u=0;u<r.length;u++){var s=null;switch((o=r[u]).Type){case"Deleted":s=" "+t(o.Column,e)+" = 0",a=!0;break;case"UpdateDate":s=" "+t(o.Column,e)+" = NOW()";break;case"UpdateIDUser":var l=o.Column+"_"+n;s=" "+t(o.Column,e)+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:continue}n>0&&(i+=","),i+=s,n++}return!(!a||""===i)&&i}(e);return e.query.disableDeleteTracking=i,u?"UPDATE"+n+" SET"+u+o+";":"SELECT NULL;"},Count:function(e){var t=r(e),i=a(e);const o=e.distinct?n(e,!0):"*";e.distinct&&o.length<1&&console.warn("Distinct requested but no field list or schema are available, so not honoring distinct for count query.");const u=e.distinct&&o.length>0?"DISTINCT":"";if(e.queryOverride)try{return _Fable.Utility.template(e.queryOverride)({FieldList:[],TableName:t,Where:i,OrderBy:"",Limit:"",Distinct:u,_Params:e})}catch(r){return console.log("Error with custom Count Query ["+e.queryOverride+"]: "+r),!1}return`SELECT COUNT(${u}${o||"*"}) AS RowCount FROM${t}${i};`}};return Object.defineProperty(i,"name",{get:function(){return"ALASQL"},enumerable:!0}),i}},{}],6:[function(e,r,t){r.exports=function(){var e={Create:function(e){return"Here is a "+e.scope+"."},Read:function(e){var r=e.scope;return`Please give me all your ${e.distinct?"unique ":""}${r} records. Thanks.`},Update:function(e){return"I am changing your "+e.scope+"."},Delete:function(e){return"I am deleting your "+e.scope+"."},Undelete:function(e){return"I am undeleting your "+e.scope+"."},Count:function(e){var r=e.scope;return`Count your ${e.distinct?"unique ":""}${r}.`}};return Object.defineProperty(e,"name",{get:function(){return"English"},enumerable:!0}),e}},{}],7:[function(e,r,t){r.exports=function(){var e=function(e){return e.scope},r=function(r){var t=Array.isArray(r.filter)?r.filter:[],a=(e(r),"");let i=(e,r)=>{a.length>0&&(a+="~"),a+=`${e}~${r[0]}~${r[1]}~${r[2]}`},o=e=>{switch(tmpNewOperator="EQ",e.toUpperCase()){case"!=":tmpNewOperator="NE";break;case">":tmpNewOperator="GT";break;case">=":tmpNewOperator="GE";break;case"<=":tmpNewOperator="LE";break;case"<":tmpNewOperator="LT";break;case"LIKE":tmpNewOperator="LK";break;case"IN":tmpNewOperator="INN";break;case"NOT IN":tmpNewOperator="NI"}return tmpNewOperator};r.query.disableDeleteTracking&&i("FBV",["Deleted","GE","0"]);for(var u=0;u<t.length;u++)if("("===t[u].Operator)i("FOP",["0","(","0"]);else if(")"===t[u].Operator)i("FCP",["0",")","0"]);else if("IN"===t[u].Operator||"NOT IN"===t[u].Operator){let e="FBV";"OR"==t[u].Connector&&(e="FBVOR"),i(e,[t[u].Column,o(t[u].Operator),t[u].Value.map(encodeURIComponent).join(",")])}else if("IS NULL"===t[u].Operator)i("FBV",[t[u].Column,"IN","0"]);else if("IS NOT NULL"===t[u].Operator)i("FBV",[t[u].Column,"NN","0"]);else{let e="FBV";"OR"==t[u].Connector&&(e="FBVOR"),i(e,[t[u].Column,o(t[u].Operator),encodeURIComponent(t[u].Value)])}let s=n(r);return s&&(a&&(a+="~"),a+=s),a};function t(e){let r=e.query.disableAutoDateStamp,t=e.query.disableDeleteTracking,n=e.query.disableAutoIdentity,a=e.query.disableAutoUserStamp,i="",o=(e,r)=>{e&&(i.length>0&&(i+=","),i+=r)};return o(r,"DisableAutoDateStamp"),o(t,"DisableDeleteTracking"),o(n,"DisableAutoIdentity"),o(a,"DisableAutoUserStamp"),i}var n=function(e){var r=e.sort,t=!1;if(!Array.isArray(r)||r.length<1)return t;t="";for(var n=0;n<r.length;n++)n>0&&(t+="~"),t+=`FSF~${r[n].Column}~`,"Descending"==r[n].Direction?t+="DESC~0":t+="ASC~0";return t},a={Create:function(r){var n=e(r),a=t(r);if(n){let e=n;return a&&(e=`${e}/WithFlags/${a}`),e}return!1},Read:function(t){var n=e(t),a=function(e){var r=e.dataElements;if(!Array.isArray(r)||r.length<1)return"";for(var t="",n=0;n<r.length;n++)n>0&&(t+=","),t+=r[n];return t}(t),i=r(t),o=function(e){return e.cap?`${!1!==e.begin?e.begin:0}/${e.cap}`:""}(t),u=`${n}`;return t.filter&&1==t.filter.length&&t.filter[0].Column===function(e){return`ID${e.scope}`}(t)&&"="===t.filter[0].Operator&&""==o&&""==a&&!t.sort?u=`${u}/${t.filter[0].Value}`:(u=`${u}s`,a&&(u=`${u}/LiteExtended/${a}`),i&&(u=`${u}/FilteredTo/${i}`),o&&(u=`${u}/${o}`)),u},Update:function(r){var n=e(r),a=t(r);if(n){let e=n;return a&&(e=`${e}/WithFlags/${a}`),e}return!1},Delete:function(r){var t=e(r),n=function(e){var r=Array.isArray(e.filter)?e.filter:[],t=!1;if(r.length<1)return t;for(var n=0;n<r.length;n++)for(var a=Array.isArray(e.query.schema)?e.query.schema:[],i=(r[n].Column,0);i<a.length;i++)if(r[n].Column==a[i].Column&&"AutoIdentity"==a[i].Type){t=r[n].Value;break}return t}(r);return!!n&&`${t}/${n}`},Count:function(t){var n=e(t),a=r(t);return a?`${n}s/Count/FilteredTo/${a}`:`${n}s/Count`}};return Object.defineProperty(a,"name",{get:function(){return"MeadowEndpoints"},enumerable:!0}),a}},{}],8:[function(e,r,t){r.exports=function(e){const r="NOW(3)";_Fable=e;var t=function(e){return e.scope&&e.scope.indexOf("`")>=0?" "+e.scope:" `"+e.scope+"`"},n=function(e,r){var n=e.dataElements;if(!Array.isArray(n)||n.length<1){const n=t(e);if(!r)return n+".*";const a=Array.isArray(e.query.schema)?e.query.schema:[];if(a.length<1)return"";const i=a.find((e=>"AutoIdentity"===e.Type));if(!i)return"";const u=`${n}.${i.Column}`;return` ${o(u)}`}for(var a=" ",i=0;i<n.length;i++)i>0&&(a+=", "),Array.isArray(n[i])?(a+=o(n[i][0]),n[i].length>1&&n[i][1]&&(a+=" AS "+o(n[i][1]))):a+=o(n[i]);return a};const a=/^[` ]+|[` ]+$/g,i=e=>e.replace(a,"");var o=function(e){let r=e.split(".");if(r.length>1){const e=i(r[1]);return"*"===e?"`"+i(r[0])+"`.*":"`"+i(r[0])+"`.`"+e+"`"}return"*"===i(r[0])?"*":"`"+i(r[0])+"`"},u=function(e){var r=Array.isArray(e.filter)?e.filter:[],n=t(e);if(!e.query.disableDeleteTracking)for(var a=Array.isArray(e.query.schema)?e.query.schema:[],i=0;i<a.length;i++){var o=a[i];if("Deleted"===o.Type){var u=!1;if(r.length>0)for(var s=0;s<r.length;s++)if(r[s].Column===o.Column){u=!0;break}u||r.push({Column:n+"."+o.Column,Operator:"=",Value:0,Connector:"AND",Parameter:"Deleted"});break}}if(r.length<1)return"";var l=" WHERE",c=!1;for(i=0;i<r.length;i++){var y;"NONE"!=r[i].Connector&&")"!=r[i].Operator&&" WHERE"!=l&&0==c&&(l+=" "+r[i].Connector),c=!1,"("===r[i].Operator?(l+=" (",c=!0):")"===r[i].Operator?l+=" )":"IN"===r[i].Operator||"NOT IN"===r[i].Operator?(y=r[i].Parameter+"_w"+i,l+=" "+r[i].Column+" "+r[i].Operator+" ( :"+y+" )",e.query.parameters[y]=r[i].Value):"IS NULL"===r[i].Operator||"IS NOT NULL"===r[i].Operator?l+=" "+r[i].Column+" "+r[i].Operator:(y=r[i].Parameter+"_w"+i,l+=" "+r[i].Column+" "+r[i].Operator+" :"+y,e.query.parameters[y]=r[i].Value)}return l},s=function(e){var r=e.join;if(!Array.isArray(r)||r.length<1)return"";for(var t="",n=0;n<r.length;n++){var a=r[n];a.Type&&a.Table&&a.From&&a.To&&(t+=` ${a.Type} ${a.Table} ON ${a.From} = ${a.To}`)}return t},l={Create:function(e){var n=t(e),a=function(e){var r=e.query.records,t=Array.isArray(e.query.schema)?e.query.schema:[],n="";for(var a in r[0]){for(var i={Column:a,Type:"Default"},o=0;o<t.length;o++)if(a==t[o].Column){i=t[o];break}(e.query.disableDeleteTracking||"DeleteDate"!==i.Type&&"DeleteIDUser"!==i.Type)&&(i.Type,""!=n&&(n+=","),n+=" "+a)}return n}(e),i=function(e){var t=e.query.records;if(!Array.isArray(t)||t.length<1)return!1;var n=Array.isArray(e.query.schema)?e.query.schema:[],a="",i=0;for(var o in t[0]){for(var u={Column:o,Type:"Default"},s=0;s<n.length;s++)if(o==n[s].Column){u=n[s];break}if(e.query.disableDeleteTracking||"DeleteDate"!==u.Type&&"DeleteIDUser"!==u.Type){i>0&&(a+=",");var l,c=function(){var r=o+"_"+i;a+=" :"+r,e.query.parameters[r]=t[0][o]};switch(u.Type){case"AutoIdentity":e.query.disableAutoIdentity?c():a+=" NULL";break;case"AutoGUID":e.query.disableAutoIdentity||t[0][o]&&t[0][o].length>=5&&"0x0000000000000000"!==t[0][o]?c():(a+=" :"+(l=o+"_"+i),e.query.parameters[l]=e.query.UUID);break;case"UpdateDate":case"CreateDate":case"DeleteDate":e.query.disableAutoDateStamp?c():a+=" "+r;break;case"DeleteIDUser":case"UpdateIDUser":case"CreateIDUser":e.query.disableAutoUserStamp?c():(a+=" :"+(l=o+"_"+i),e.query.parameters[l]=e.query.IDUser);break;default:c()}i++}}return""!==a&&a}(e);return!!i&&"INSERT INTO"+n+" ("+a+") VALUES ("+i+");"},Read:function(e){var r=n(e),a=t(e),i=u(e),o=s(e),l=function(e){var r=e.sort;if(!Array.isArray(r)||r.length<1)return"";for(var t=" ORDER BY",n=0;n<r.length;n++)n>0&&(t+=","),t+=" "+r[n].Column,"Descending"==r[n].Direction&&(t+=" DESC");return t}(e),c=function(e){if(!e.cap)return"";var r=" LIMIT";return!1!==e.begin&&(r+=" "+e.begin+","),r+" "+e.cap}(e);const y=e.distinct?" DISTINCT":"";if(e.queryOverride)try{return _Fable.Utility.template(e.queryOverride)({FieldList:r,TableName:a,Where:i,Join:o,OrderBy:l,Limit:c,Distinct:y,_Params:e})}catch(r){return console.log("Error with custom Read Query ["+e.queryOverride+"]: "+r),!1}return`SELECT${y}${r} FROM${a}${o}${i}${l}${c};`},Update:function(e){var n=t(e),a=u(e),i=function(e){var t=e.query.records;if(!Array.isArray(t)||t.length<1)return!1;var n=Array.isArray(e.query.schema)?e.query.schema:[],a="",i=0;for(var o in t[0]){for(var u={Column:o,Type:"Default"},s=0;s<n.length;s++)if(o==n[s].Column){u=n[s];break}if(!(e.query.disableAutoDateStamp&&"UpdateDate"===u.Type||e.query.disableAutoUserStamp&&"UpdateIDUser"===u.Type)){switch(u.Type){case"AutoIdentity":case"CreateDate":case"CreateIDUser":case"DeleteDate":case"DeleteIDUser":continue}switch(i>0&&(a+=","),u.Type){case"UpdateDate":a+=" "+o+" = "+r;break;case"UpdateIDUser":var l=o+"_"+i;a+=" "+o+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:var c=o+"_"+i;a+=" "+o+" = :"+c,e.query.parameters[c]=t[0][o]}i++}}return""!==a&&a}(e);return!!i&&"UPDATE"+n+" SET"+i+a+";"},Delete:function(e){var n=t(e),a=u(e),i=function(e){if(e.query.disableDeleteTracking)return!1;for(var t=Array.isArray(e.query.schema)?e.query.schema:[],n=0,a=!1,i="",o={Type:"Default"},u=0;u<t.length;u++){var s=null;switch((o=t[u]).Type){case"Deleted":s=" "+o.Column+" = 1",a=!0;break;case"DeleteDate":case"UpdateDate":s=" "+o.Column+" = "+r;break;case"DeleteIDUser":var l=o.Column+"_"+n;s=" "+o.Column+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:continue}n>0&&(i+=","),i+=s,n++}return!(!a||""===i)&&i}(e);return i?"UPDATE"+n+" SET"+i+a+";":"DELETE FROM"+n+a+";"},Undelete:function(e){var n=t(e);let a=e.query.disableDeleteTracking;e.query.disableDeleteTracking=!0;var i=u(e),o=function(e){for(var t=Array.isArray(e.query.schema)?e.query.schema:[],n=0,a=!1,i="",o={Type:"Default"},u=0;u<t.length;u++){var s=null;switch((o=t[u]).Type){case"Deleted":s=" "+o.Column+" = 0",a=!0;break;case"UpdateDate":s=" "+o.Column+" = "+r;break;case"UpdateIDUser":var l=o.Column+"_"+n;s=" "+o.Column+" = :"+l,e.query.parameters[l]=e.query.IDUser;break;default:continue}n>0&&(i+=","),i+=s,n++}return!(!a||""===i)&&i}(e);return e.query.disableDeleteTracking=a,o?"UPDATE"+n+" SET"+o+i+";":"SELECT NULL;"},Count:function(e){var r=e.distinct?n(e,!0):"*",a=t(e),i=s(e),o=u(e);e.distinct&&r.length<1&&console.warn("Distinct requested but no field list or schema are available, so not honoring distinct for count query.");const l=e.distinct&&r.length>0?"DISTINCT":"";if(e.queryOverride)try{return _Fable.Utility.template(e.queryOverride)({FieldList:[],TableName:a,Where:o,OrderBy:"",Limit:"",Distinct:l,_Params:e})}catch(r){return console.log("Error with custom Count Query ["+e.queryOverride+"]: "+r),!1}return`SELECT COUNT(${l}${r||"*"}) AS RowCount FROM${a}${i}${o};`}};return Object.defineProperty(l,"name",{get:function(){return"MySQL"},enumerable:!0}),l}},{}]},{},[1])(1)}));
//# sourceMappingURL=foxhound.min.js.map