@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 7.96 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{isUnknownTimeZone as e}from"./sql/UnknownTimeZone.js";import{isDate as t}from"../support/guards.js";import{getLuxonTimeZone as r}from"../time/timeZoneUtils.js";import{FixedOffsetZone as n,DateTime as s}from"luxon";let i;async function a(){return null==i&&(i=import("./sql/WhereClauseCache.js").then(e=>new e.WhereClauseCache(500,500))),i}function l(){i=null}async function c(e,t){const r=await a(),n=r.get(e,t);if(null==n)throw r.getError(e,t);return n}function o(e,t){return e||=null,t||=null,"1=1"===e?t??e:"1=1"===t?e??t:e&&t?`(${e}) AND (${t})`:e??t}function u(e,t,r){return`${e} BETWEEN ${t} AND ${r}`}function f(e,t,r){return`${e} NOT BETWEEN ${t} AND ${r}`}function d(e,t){return e||=null,t||=null,"1=1"===e||"1=1"===t||e===t?"1=1"===e?e:t:e&&t?`(${e}) OR (${t})`:e??t}function p(e,t){return 0===t.length?null:`${e} IN (${m(t)})`}function T(e,t){return 0===t.length?null:`${e} NOT IN (${m(t)})`}function m(e){return e.map(e=>"string"==typeof e?y(e):e).join(",")}function y(e,t){return null==e?"NULL":`${t??""}'${e.replaceAll("'","''")}'`}function g(e){return Number.isFinite(e)?String(e):"NULL"}function w(e){const[t,r]=e.split("T");return`${t} ${r.replace("Z","+00:00").replace(/[+-]/,e=>` ${e}`)}`}function F(e){return e.split("T")[0]}function h(e){const t=e.indexOf("T")+1,r=Math.max(e.indexOf("-",t),e.indexOf("+",t),e.indexOf("Z",t));return e.slice(t,r>0?r:void 0)}function E(e,t){const i=null!=t?r(t):n.utcInstance,a=s.fromMillis(e,{zone:i});return a.isValid?a:null}function v(e,t){return E(e,t)?.toSQL({includeOffset:!1})}function $(e,t){return E(e,t)?.toSQL({includeOffset:!0})?.replace("Z","+00:00")}function b(e,t){return E(e,t)?.toSQLDate()}function I(e,t){return E(e,t)?.toSQLTime({includeOffset:!1})}function L(e){return"string"==typeof e?e:e?.type}function O(e){return null==e?"NULL":e?"TRUE":"FALSE"}function D(e,t){if(null==e)return"NULL";const r=L(t);switch(typeof e){case"string":switch(r){case"string":case"esriFieldTypeString":case void 0:return g(Number(e));default:throw new Error(`Cannot convert ${r} to sql numeric literal.`)}case"boolean":return e?"1":"0";case"number":switch(r){case"small-integer":case"esriFieldTypeSmallInteger":case"integer":case"esriFieldTypeInteger":case"single":case"esriFieldTypeSingle":case"double":case"esriFieldTypeDouble":case"big-integer":case"esriFieldTypeBigInteger":case"long":case"esriFieldTypeLong":case"oid":case"esriFieldTypeOID":case void 0:return g(e);default:throw new Error(`Cannot convert ${r} to sql numeric literal.`)}}throw new Error("Cannot convert value to sql numeric literal.")}function S(e,r,n){if(null==e)return"NULL";const s=L(r);switch(typeof e){case"string":switch(s){case"timestamp-offset":case"esriFieldTypeTimestampOffset":return y(w(e));case"date-only":case"esriFieldTypeDateOnly":case"time-only":case"esriFieldTypeTimeOnly":case"string":case"esriFieldTypeString":case"global-id":case"esriFieldTypeGlobalID":case"guid":case"esriFieldTypeGUID":case"xml":case"esriFieldTypeXML":case void 0:return y(e);default:throw new Error(`Cannot convert ${s} to sql string literal.`)}case"boolean":return e?"'true'":"'false'";case"number":switch(s){case"date":case"esriFieldTypeDate":return y(v(e,n));case"small-integer":case"esriFieldTypeSmallInteger":case"integer":case"esriFieldTypeInteger":case"single":case"esriFieldTypeSingle":case"double":case"esriFieldTypeDouble":case"big-integer":case"esriFieldTypeBigInteger":case"long":case"esriFieldTypeLong":case"oid":case"esriFieldTypeOID":case void 0:return Number.isFinite(e)?`'${e}'`:"NULL";default:throw new Error(`Cannot convert ${s} to sql string literal.`)}case"object":if(t(e))return y(v(e.valueOf(),n))}throw new Error("Cannot convert value to sql string literal.")}function M(e,r,n){if(null==e)return"NULL";const s=L(r);switch(typeof e){case"string":switch(s){case"timestamp-offset":case"esriFieldTypeTimestampOffset":return y(F(e),"DATE");case"date-only":case"esriFieldTypeDateOnly":case"string":case"esriFieldTypeString":case void 0:return y(e,"DATE");default:throw new Error(`Cannot convert ${s} to sql date literal.`)}case"number":switch(s){case"date":case"esriFieldTypeDate":case void 0:return y(b(e,n),"DATE");default:throw new Error(`Cannot convert ${s} to sql date literal.`)}case"object":if(t(e))return y(b(e.valueOf(),n),"DATE")}throw new Error("Cannot convert value to sql date literal.")}function C(e,r,n){if(null==e)return"NULL";const s=L(r);switch(typeof e){case"string":switch(s){case"timestamp-offset":case"esriFieldTypeTimestampOffset":return y(h(e),"TIME");case"time-only":case"esriFieldTypeTimeOnly":case"string":case"esriFieldTypeString":case void 0:return y(e,"TIME");default:throw new Error(`Cannot convert ${s} to sql time literal.`)}case"number":switch(s){case"date":case"esriFieldTypeDate":case void 0:return y(I(e,n),"TIME");default:throw new Error(`Cannot convert ${s} to sql time literal.`)}case"object":if(t(e))return y(I(e.valueOf(),n),"TIME")}throw new Error("Cannot convert value to sql time literal.")}function N(e,r,n){if(null==e)return"NULL";const s=L(r);switch(typeof e){case"string":switch(s){case"timestamp-offset":case"esriFieldTypeTimestampOffset":return y(w(e),"TIMESTAMP");case"date-only":case"esriFieldTypeDateOnly":return y(`${e} 00:00:00`,"TIMESTAMP");case"string":case"esriFieldTypeString":case void 0:return y(e,"TIMESTAMP");default:throw new Error(`Cannot convert ${s} to sql timestamp literal.`)}case"number":switch(s){case"date":case"esriFieldTypeDate":case void 0:return y(v(e,n),"TIMESTAMP");default:throw new Error(`Cannot convert ${s} to sql timestamp literal.`)}case"object":if(t(e))return y(v(e.valueOf(),n),"TIMESTAMP")}throw new Error("Cannot convert value to sql timestamp literal.")}function q(e,r,n){if(null==e)return"NULL";const s=L(r);switch(typeof e){case"string":switch(s){case"timestamp-offset":case"esriFieldTypeTimestampOffset":return y(w(e),"TIMESTAMP");case"string":case"esriFieldTypeString":case void 0:return y(e,"TIMESTAMP");default:throw new Error(`Cannot convert ${s} to sql timestamp offset literal.`)}case"number":switch(s){case"date":case"esriFieldTypeDate":case void 0:return y($(e,n),"TIMESTAMP");default:throw new Error(`Cannot convert ${s} to sql timestamp offset literal.`)}case"object":if(t(e))return y($(e.valueOf(),n),"TIMESTAMP")}throw new Error("Cannot convert value to sql timestamp offset literal.")}function A(t,r){return null==t?r:null==r||e(t)||e(r)?t:r}function U(e,r,n){if(null==e)return"NULL";if(null==r&&null==n){switch(typeof e){case"string":return S(e);case"number":return D(e);case"boolean":return O(e);case"object":if(t(e))return N(e)}throw new Error("Cannot convert value to sql literal.")}const s=A(r?.timeZone,n?.timeZone),i=L(r?.type);switch(L(n?.type)??i){case"small-integer":case"esriFieldTypeSmallInteger":case"integer":case"esriFieldTypeInteger":case"single":case"esriFieldTypeSingle":case"double":case"esriFieldTypeDouble":case"big-integer":case"esriFieldTypeBigInteger":case"long":case"esriFieldTypeLong":case"oid":case"esriFieldTypeOID":return D(e,i);case"global-id":case"esriFieldTypeGlobalID":case"guid":case"esriFieldTypeGUID":case"xml":case"esriFieldTypeXML":case"string":case"esriFieldTypeString":return S(e,i,s);case"date":case"esriFieldTypeDate":return N(e,i,s);case"timestamp-offset":case"esriFieldTypeTimestampOffset":return q(e,i,s);case"date-only":case"esriFieldTypeDateOnly":return M(e,i,s);case"time-only":case"esriFieldTypeTimeOnly":return C(e,i,s);default:throw new Error("Unsupported sql target type: "+i)}}function j(e){return/^[a-zA-Z_][a-zA-Z_0-9]*$/.test(e)?e:`"${e.replaceAll('"','""')}"`}export{l as cleanupWhereClauseCache,c as parseWhereClause,o as sqlAnd,u as sqlBetween,O as sqlBooleanLiteral,M as sqlDateLiteral,p as sqlIn,U as sqlLiteral,j as sqlName,f as sqlNotBetween,T as sqlNotIn,D as sqlNumericLiteral,d as sqlOr,S as sqlStringLiteral,C as sqlTimeLiteral,N as sqlTimestampLiteral,q as sqlTimestampOffsetLiteral};