orcaq 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{CQzADP3y.js → 1VXrIDkr.js} +1 -1
- package/.output/public/_nuxt/1fIGBJPQ.js +1 -0
- package/.output/public/_nuxt/{BQfpgF4f.js → 1kY3DHv7.js} +1 -1
- package/.output/public/_nuxt/{CbANTWsS.js → 2TwRWQjG.js} +1 -1
- package/.output/public/_nuxt/{CWrGZxpH.js → 39ZZCZCn.js} +1 -1
- package/.output/public/_nuxt/{BmDMzOju.js → 3vYvhEat.js} +1 -1
- package/.output/public/_nuxt/9bnMBg54.js +1 -0
- package/.output/public/_nuxt/{BcuPgKcZ.js → B-u0WX5Q.js} +1 -1
- package/.output/public/_nuxt/{Di0QgSJz.js → B41tp0B8.js} +1 -1
- package/.output/public/_nuxt/B5rxJs06.js +1 -0
- package/.output/public/_nuxt/{jwI3t-NN.js → BCm7jnPt.js} +1 -1
- package/.output/public/_nuxt/BFMjnjgH.js +1 -0
- package/.output/public/_nuxt/{2bjDg-PP.js → BGAd-CMD.js} +1 -1
- package/.output/public/_nuxt/BG_B-fo0.js +1 -0
- package/.output/public/_nuxt/{DoIRSvuP.js → BLEKzUmC.js} +1 -1
- package/.output/public/_nuxt/BN2mQ8OV.js +20 -0
- package/.output/public/_nuxt/{XAHyd86s.js → BNnChlxR.js} +1 -1
- package/.output/public/_nuxt/BNyWhB4W.js +1 -0
- package/.output/public/_nuxt/{Dtfetpn0.js → BO-QgaRL.js} +1 -1
- package/.output/public/_nuxt/{D4dXVtWp.js → BOVFFCPB.js} +1 -1
- package/.output/public/_nuxt/{CFLipT9o.js → BRVpLa1E.js} +3 -3
- package/.output/public/_nuxt/{CtcvFTZM.js → BV4g1sVY.js} +1 -1
- package/.output/public/_nuxt/BXziI6Bt.js +3 -0
- package/.output/public/_nuxt/{BtWocXUF.js → BZQUF1W4.js} +1 -1
- package/.output/public/_nuxt/BZmEvFAZ.js +28 -0
- package/.output/public/_nuxt/B_G752SV.js +20 -0
- package/.output/public/_nuxt/Ba_fqsW2.js +1 -0
- package/.output/public/_nuxt/{DynamicTable.B3c2woGb.css → BaseDataGrid.C2ywM2-T.css} +1 -1
- package/.output/public/_nuxt/BbzZxPNQ.js +1 -0
- package/.output/public/_nuxt/{CGewvTrI.js → BhT0iBlH.js} +1 -1
- package/.output/public/_nuxt/Bhm1GL_M.js +1 -0
- package/.output/public/_nuxt/BiSZmDoN.js +1 -0
- package/.output/public/_nuxt/BjK8Fug8.js +1 -0
- package/.output/public/_nuxt/BjpSpz5C.js +1 -0
- package/.output/public/_nuxt/BkqB6n0T.js +1 -0
- package/.output/public/_nuxt/BoPjUGS6.js +1 -0
- package/.output/public/_nuxt/BtwwqY0e.js +1 -0
- package/.output/public/_nuxt/{BptGnFIG.js → BvD9dW-2.js} +1 -1
- package/.output/public/_nuxt/{CdVERIz5.js → Bw-4PosZ.js} +1 -1
- package/.output/public/_nuxt/C0l_59dE.js +1 -0
- package/.output/public/_nuxt/C1TOiVRQ.js +9 -0
- package/.output/public/_nuxt/{CQUEIz0K.js → C7A87LE3.js} +1 -1
- package/.output/public/_nuxt/C80Zs8U0.js +1 -0
- package/.output/public/_nuxt/CB56S0b2.js +39 -0
- package/.output/public/_nuxt/{i2P9wHne.js → CBgbjsPd.js} +1 -1
- package/.output/public/_nuxt/{_q4rKPCs.js → CCk2r9DD.js} +1 -1
- package/.output/public/_nuxt/CFZerEKx.js +2 -0
- package/.output/public/_nuxt/{CUU4aZu3.js → CG4v011f.js} +1 -1
- package/.output/public/_nuxt/{B9FaYCWq.js → CJnTtXrv.js} +1 -1
- package/.output/public/_nuxt/{Ba5PGSyB.js → CRDIOG8r.js} +1 -1
- package/.output/public/_nuxt/CSPqdI4x.js +1 -0
- package/.output/public/_nuxt/CTYqoFvv.js +1 -0
- package/.output/public/_nuxt/{hJtoF0XJ.js → CWGzL6OE.js} +1 -1
- package/.output/public/_nuxt/CYJEOEaU.js +1 -0
- package/.output/public/_nuxt/CYu-xp_f.js +1 -0
- package/.output/public/_nuxt/CZvnl0uO.js +52 -0
- package/.output/public/_nuxt/CadjlDLt.js +1 -0
- package/.output/public/_nuxt/{Ce7ha8Ij.js → CczQKYUP.js} +1 -1
- package/.output/public/_nuxt/CeXr_3vU.js +2 -0
- package/.output/public/_nuxt/{CY5xaULp.js → Ch-A9iSC.js} +1 -1
- package/.output/public/_nuxt/{MPvsaAca.js → Cj9tYr3P.js} +1 -1
- package/.output/public/_nuxt/Clm3Z8VL.js +1 -0
- package/.output/public/_nuxt/CpkrwN3Q.js +9 -0
- package/.output/public/_nuxt/{98JSO6jv.js → CrwM3gOU.js} +1 -1
- package/.output/public/_nuxt/{lID_8ynt.js → Culm7V2R.js} +1 -1
- package/.output/public/_nuxt/{ZS8y2W5x.js → CxZK-Vs6.js} +1 -1
- package/.output/public/_nuxt/{D0o3znGI.js → Cym7bWgs.js} +1 -1
- package/.output/public/_nuxt/CzBFxx8v.js +1 -0
- package/.output/public/_nuxt/{COm5WeiJ.js → D0oaRUYx.js} +1 -1
- package/.output/public/_nuxt/{BNM5p7H5.js → D7uoAo-G.js} +181 -181
- package/.output/public/_nuxt/D8KJQqug.js +1 -0
- package/.output/public/_nuxt/D8Z5BXgG.js +26 -0
- package/.output/public/_nuxt/{-lZvfnzr.js → D9Ycznwo.js} +1 -1
- package/.output/public/_nuxt/DDK9-_jm.js +1 -0
- package/.output/public/_nuxt/DDQU7vSH.js +1 -0
- package/.output/public/_nuxt/{C6Cu0sLe.js → DEjwIQuc.js} +1 -1
- package/.output/public/_nuxt/{B6tZoMuV.js → DLIUYAz9.js} +1 -1
- package/.output/public/_nuxt/{D2eDr3o2.js → DQdL5Jcl.js} +1 -1
- package/.output/public/_nuxt/{CZGnIeYQ.js → DRuCf0Sx.js} +1 -1
- package/.output/public/_nuxt/DSEkO8kW.js +1 -0
- package/.output/public/_nuxt/{BzOiQq7V.js → DSOwr8Hs.js} +4 -4
- package/.output/public/_nuxt/{BiDM-4Ma.js → DStg2VwN.js} +1 -1
- package/.output/public/_nuxt/{Di03NGSO.js → DTlu-CJn.js} +1 -1
- package/.output/public/_nuxt/{CGW0AH4b.js → DUvUg_V7.js} +1 -1
- package/.output/public/_nuxt/{BEhaJXPi.js → D_fdC3mJ.js} +1 -1
- package/.output/public/_nuxt/Da1F0IxL.js +1 -0
- package/.output/public/_nuxt/{Ds73uRhN.js → DcXAnOS1.js} +1 -1
- package/.output/public/_nuxt/DdtQIDaq.js +1 -0
- package/.output/public/_nuxt/Dfz8k_Rn.js +1 -0
- package/.output/public/_nuxt/DitYzGT4.js +1 -0
- package/.output/public/_nuxt/Djh3G2Nf.js +1 -0
- package/.output/public/_nuxt/DmWFeTaU.js +1 -0
- package/.output/public/_nuxt/{DcCuT_qB.js → DtgJAz2h.js} +1 -1
- package/.output/public/_nuxt/{DKGci8Z9.js → DuKway_J.js} +1 -1
- package/.output/public/_nuxt/{BqjI13AR.js → DxF9DsEl.js} +1 -1
- package/.output/public/_nuxt/{BX-UQU8e.js → DyFXtlg0.js} +1 -1
- package/.output/public/_nuxt/DzN4YRfa.js +7 -0
- package/.output/public/_nuxt/{B8-wNbMP.js → DzaPC1WB.js} +1 -1
- package/.output/public/_nuxt/{O78AcFB2.js → DzjHXopz.js} +1 -1
- package/.output/public/_nuxt/{default.B0xlD4Sl.css → FileTree.CtTH3U6l.css} +1 -1
- package/.output/public/_nuxt/{CopwM-Pr.js → LUfaevBS.js} +1 -1
- package/.output/public/_nuxt/PreviewRelationTable.BA0i90jA.css +1 -0
- package/.output/public/_nuxt/{DWkbgNG-.js → RFRrMFyH.js} +1 -1
- package/.output/public/_nuxt/{B1LoOOkn.js → RTN5rY4m.js} +1 -1
- package/.output/public/_nuxt/W-4KVxy4.js +22 -0
- package/.output/public/_nuxt/{DehrK61g.js → XVZ0obUR.js} +1 -1
- package/.output/public/_nuxt/Z5g5B4NJ.js +1 -0
- package/.output/public/_nuxt/_ltJfz1p.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/1cbed594-12e2-48e6-bea9-7a9159c3c1d3.json +1 -0
- package/.output/public/_nuxt/default.DixIpIal.css +1 -0
- package/.output/public/_nuxt/dkyHOJLf.js +1 -0
- package/.output/public/_nuxt/entry.D1DMaixs.css +1 -0
- package/.output/public/_nuxt/{D2uh44XM.js → gWmEw6BT.js} +1 -1
- package/.output/public/_nuxt/{index.P0q-dO_S.css → index.C4HrDOPM.css} +1 -1
- package/.output/public/_nuxt/ixgiI20S.js +1 -0
- package/.output/public/_nuxt/{LQx-wtAv.js → jJeqAxmP.js} +1 -1
- package/.output/public/_nuxt/lisFd8W1.js +2 -0
- package/.output/public/_nuxt/{DCaozlmM.js → nrlEwpIH.js} +2 -2
- package/.output/public/_nuxt/uHyBIwWw.js +1 -0
- package/.output/public/_nuxt/vGkKA7iH.js +16 -0
- package/.output/public/_nuxt/{BYWbdMZt.js → z1xPtaLw.js} +1 -1
- package/.output/server/chunks/_/db-connection.mjs +3 -0
- package/.output/server/chunks/_/db-connection.mjs.map +1 -1
- package/.output/server/chunks/_/registry.mjs +116 -0
- package/.output/server/chunks/_/registry.mjs.map +1 -0
- package/.output/server/chunks/_/{native-backup.mjs → runtime.mjs} +325 -164
- package/.output/server/chunks/_/runtime.mjs.map +1 -0
- package/.output/server/chunks/_/{native-backup-jobs.mjs → service.mjs} +185 -248
- package/.output/server/chunks/_/service.mjs.map +1 -0
- package/.output/server/chunks/_/sql-mutation-statements.mjs +496 -0
- package/.output/server/chunks/_/sql-mutation-statements.mjs.map +1 -0
- package/.output/server/chunks/_/tables.factory.mjs +57 -29
- package/.output/server/chunks/_/tables.factory.mjs.map +1 -1
- package/.output/server/chunks/build/client.manifest.mjs +816 -687
- package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +692 -655
- package/.output/server/chunks/routes/api/database-backup/capability.get.mjs +7 -2
- package/.output/server/chunks/routes/api/database-backup/capability.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/export-database.mjs +4 -3
- package/.output/server/chunks/routes/api/database-export/export-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs +1 -20
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs +1 -20
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/import-database.mjs +14 -3
- package/.output/server/chunks/routes/api/database-import/import-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs +1 -20
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs +18 -10
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/bulk-insert.post.mjs +90 -0
- package/.output/server/chunks/routes/api/tables/bulk-insert.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs +50 -9
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs.map +1 -1
- package/.output/server/package.json +1 -2
- package/package.json +1 -1
- package/.output/public/_nuxt/0olA6U9-.js +0 -1
- package/.output/public/_nuxt/3MFLtJaB.js +0 -2
- package/.output/public/_nuxt/5eGdUlL5.js +0 -1
- package/.output/public/_nuxt/9N_axiMO.js +0 -1
- package/.output/public/_nuxt/B7-PqSUV.js +0 -1
- package/.output/public/_nuxt/BDMb-Pyv.js +0 -1
- package/.output/public/_nuxt/BN6ZmV2J.js +0 -1
- package/.output/public/_nuxt/BjdYdiyf.js +0 -1
- package/.output/public/_nuxt/By3LMj8D.js +0 -1
- package/.output/public/_nuxt/CAw6QK8a.js +0 -1
- package/.output/public/_nuxt/CGtwVe-7.js +0 -1
- package/.output/public/_nuxt/CJZf1MDD.js +0 -1
- package/.output/public/_nuxt/CKTZRDiI.js +0 -1
- package/.output/public/_nuxt/CQas_zLl.js +0 -20
- package/.output/public/_nuxt/CS5akSNT.js +0 -1
- package/.output/public/_nuxt/CTkQN1XK.js +0 -39
- package/.output/public/_nuxt/CUiGarir.js +0 -1
- package/.output/public/_nuxt/CYMhtSRb.js +0 -1
- package/.output/public/_nuxt/CYkdQXWd.js +0 -1
- package/.output/public/_nuxt/CZmkQ9aO.js +0 -2
- package/.output/public/_nuxt/Cc2igSge.js +0 -67
- package/.output/public/_nuxt/Cgf5py_m.js +0 -9
- package/.output/public/_nuxt/CpBFRs2a.js +0 -1
- package/.output/public/_nuxt/Cr2BKem3.js +0 -1
- package/.output/public/_nuxt/CuaktsoE.js +0 -1
- package/.output/public/_nuxt/D1veMm0L.js +0 -1
- package/.output/public/_nuxt/D3ZJP2ze.js +0 -1
- package/.output/public/_nuxt/DGuH4YHZ.js +0 -1
- package/.output/public/_nuxt/DJa6BJMa.js +0 -1
- package/.output/public/_nuxt/DTEzbo2c.js +0 -1
- package/.output/public/_nuxt/DUliC29v.js +0 -1
- package/.output/public/_nuxt/DW1m4Hxy.js +0 -1
- package/.output/public/_nuxt/DWnJMbXf.js +0 -1
- package/.output/public/_nuxt/DXQS6bj6.js +0 -2
- package/.output/public/_nuxt/Dah6izTx.js +0 -22
- package/.output/public/_nuxt/Dcz-n576.js +0 -1
- package/.output/public/_nuxt/DdUuVBMi.js +0 -1
- package/.output/public/_nuxt/Di_nUA-u.js +0 -7
- package/.output/public/_nuxt/DnPYRTtC.js +0 -1
- package/.output/public/_nuxt/DpyRXhd7.js +0 -1
- package/.output/public/_nuxt/DuMEW1lw.js +0 -1
- package/.output/public/_nuxt/DvATq7eC.js +0 -1
- package/.output/public/_nuxt/DwfS-MFd.js +0 -1
- package/.output/public/_nuxt/DyIuwJ7R.js +0 -1
- package/.output/public/_nuxt/OMgXwGIN.js +0 -26
- package/.output/public/_nuxt/QuickQuery.CJ7tNjo4.css +0 -1
- package/.output/public/_nuxt/Th_o-5A0.js +0 -1
- package/.output/public/_nuxt/ZDrzZQNQ.js +0 -1
- package/.output/public/_nuxt/builds/meta/5680cb77-cc14-4e94-a235-c54fb463e1ca.json +0 -1
- package/.output/public/_nuxt/entry.CNXXuHFL.css +0 -1
- package/.output/public/_nuxt/fkIyRXiG.js +0 -1
- package/.output/public/_nuxt/nZnnkbcv.js +0 -3
- package/.output/public/_nuxt/s75xJ0Ts.js +0 -10
- package/.output/server/chunks/_/native-backup-jobs.mjs.map +0 -1
- package/.output/server/chunks/_/native-backup.mjs.map +0 -1
- package/.output/server/node_modules/ag-grid-community/dist/package/main.esm.mjs +0 -50065
- package/.output/server/node_modules/ag-grid-community/package.json +0 -113
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./98JSO6jv.js","./BNM5p7H5.js","./entry.CNXXuHFL.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
var $s=Object.defineProperty;var zs=(s,e,t)=>e in s?$s(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var ae=(s,e,t)=>zs(s,typeof e!="symbol"?e+"":e,t);import{a6 as Z,d as X,bU as ks,ae as Ls,ar as As,k as A,o as g,w as v,D as he,g as u,p as ss,bT as Ot,bS as Ms,a9 as Ns,aa as Is,ab as Os,ac as Ps,ee as Ds,L as ns,ef as at,eg as Fs,c as O,bM as Vs,j as Ze,m as f,f as h,bN as qs,cX as St,e as N,z as I,l as U,a1 as wt,W as _t,X as Et,Y as Tt,A as me,Z as Bs,t as D,$ as as,a0 as ze,bj as Rt,F as se,s as le,n as ge,a_ as ye,a$ as xe,aY as be,r as K,i as ot,eh as js,ei as Hs,ej as os,ek as rs,el as Us,bk as ls,em as Qs,en as Ws,e7 as Ks,e8 as Gs,e9 as Ys,eo as je,d2 as Js,au as de,av as $t,aQ as zt,aT as Re,q as Zs,aS as De,aR as Xs,aZ as Fe,az as en,ay as Ve,cg as is,am as us,G as tn,aq as lt,bV as Pt,bY as sn,bl as nn,bD as an,bE as on,bF as rn,ep as ln,aP as Ue,aL as un,P as cs,aC as cn,aH as dn,eq as Dt,ao as ds,er as mn,es as kt,et as pn,eu as fn,ev as hn,ew as vn,ex as gn,M as yn,ey as ms,ba as xn,bb as ut,ez as bn,bd as Cn,bc as Sn,eA as wn,be as _n,bf as En,eB as Tn,bg as Rn,eC as Ft,eD as $n,eE as zn,bi as kn,eF as Ln,bC as An,a8 as ps,eG as Mn,a3 as Nn,a as In,aK as On,b9 as Pn,co as Dn}from"./BNM5p7H5.js";import{_ as Fn,u as Vn}from"./5eGdUlL5.js";import{_ as qn}from"./DW1m4Hxy.js";import{_ as Bn}from"./CJZf1MDD.js";import{_ as Lt}from"./XAHyd86s.js";import{c as fs,d as hs,e as vs,C as q,f as jn,g as Xe,h as Hn,i as Un,j as Qn,k as Wn,_ as ct,a as dt,b as Kn}from"./fkIyRXiG.js";import{_ as Gn,a as Yn,b as Jn}from"./Th_o-5A0.js";import{f as gt,a as Qe,b as Ke}from"./-lZvfnzr.js";import{M as Zn,_ as Vt,j as qt,k as Bt}from"./DGuH4YHZ.js";import{p as Xn,D as ea,_ as ta,a as mt,b as sa}from"./CAw6QK8a.js";import{_ as jt}from"./CKTZRDiI.js";import{_ as na}from"./DehrK61g.js";import{s as aa}from"./B6tZoMuV.js";import{_ as At,c as Ht,a as pt,e as Ut,b as Qt}from"./Cgf5py_m.js";import{i as oa}from"./Di0QgSJz.js";import{_ as gs}from"./CuaktsoE.js";import{r as ra}from"./CQas_zLl.js";import{c as la,a as ia,m as ua}from"./CQUEIz0K.js";import"./DCaozlmM.js";import"./CbANTWsS.js";import"./BN6ZmV2J.js";import"./DpyRXhd7.js";import"./CYMhtSRb.js";import"./BjdYdiyf.js";import"./CZGnIeYQ.js";import"./CS5akSNT.js";class ca{constructor(e){this.rawError=e}get nomaltliztionErrror(){var t;const e=((t=this.rawError)==null?void 0:t.message)||"Error parsing SQL execution.";if(!this.rawError)return{message:e};switch(this.rawError.dbType){case Z.POSTGRES:return this.normalizePostgresError(e);case Z.MYSQL:return this.normalizeMysqlError(e);case Z.SQLITE3:return this.normalizeSqliteError(e);case Z.MARIADB:return this.normalizeMysqlError(e);case Z.ORACLE:return this.normalizeOracleError(e);default:return{message:e}}}normalizePostgresError(e){let t;return this.rawError.position&&(t=typeof this.rawError.position=="string"?Number(this.rawError.position):this.rawError.position,Number.isNaN(t)&&(t=void 0)),{message:this.rawError.message||e,position:t,hint:this.rawError.hint}}normalizeMysqlError(e){return{message:this.rawError.sqlMessage||this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeSqliteError(e){return{message:this.rawError.message||e,hint:this.rawError.code?`Error Code: ${this.rawError.code}`:void 0}}normalizeOracleError(e){return{message:this.rawError.message||e,hint:this.rawError.errorNum?`ORA-${String(this.rawError.errorNum).padStart(5,"0")}`:void 0}}}var da=X({__name:"MenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1,default:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=ks(t,["modelValue"]),o=Ls(a),r=As(t,"modelValue",n);return Xn({modelValue:r}),(l,i)=>(g(),A(Zn,ss({role:"menuitemcheckbox"},u(o),{"aria-checked":u(Ot)(u(r))?"mixed":u(r),"data-state":u(Ms)(u(r)),onSelect:i[0]||(i[0]=async d=>{n("select",d),u(Ot)(u(r))?r.value=!0:r.value=!u(r)})}),{default:v(()=>[he(l.$slots,"default",{modelValue:u(r)})]),_:3},16,["aria-checked","data-state"]))}}),ma=da,pa=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String],required:!1},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,a=Ns(e);return Is(),(o,r)=>(g(),A(u(ma),Os(Ps({...t,...u(a)})),{default:v(()=>[he(o.$slots,"default")]),_:3},16))}}),fa=pa;function Mt(s,e){s.dispatch(Ds(s.state,e))}function ha(s){return s===Z.POSTGRES?"postgres-positional":s===Z.ORACLE?"oracle-positional":"question-mark"}function va(s,e,t,n={}){if(!Object.keys(e).length)return s;const a=n.style??ha(t);let o=n.startIndex??1,r="",l=0;for(;l<s.length;){const i=s[l];if(i==="'"){const d=l++;for(;l<s.length;)if(s[l]==="'"&&s[l+1]==="'")l+=2;else if(s[l]==="'"){l++;break}else l++;r+=s.slice(d,l);continue}if(i==='"'){const d=l++;for(;l<s.length&&s[l]!=='"';)l++;l++,r+=s.slice(d,l);continue}if(i==="$"&&t===Z.POSTGRES){const d=l;let m="$",c=l+1;for(;c<s.length&&s[c]!=="$"&&/[a-zA-Z0-9_]/.test(s[c]);)m+=s[c++];if(c<s.length&&s[c]==="$"){m+="$",c++;const p=s.indexOf(m,c);if(p!==-1){l=p+m.length,r+=s.slice(d,l);continue}}}if(i===":"&&l+1<s.length&&/[a-zA-Z_]/.test(s[l+1])){const d=l++;let m="";for(;l<s.length&&/[a-zA-Z0-9_]/.test(s[l]);)m+=s[l++];m in e?a==="postgres-positional"?r+=`$${o++}`:a==="oracle-positional"?r+=`:${o++}`:r+="?":r+=s.slice(d,l);continue}r+=i,l++}return r}function ga(s,e,t){if(s===e)return t;let n=0,a=0;for(;a<t&&n<s.length;){const o=s[n],r=e[a],l=/\s/.test(o),i=/\s/.test(r);if(l&&i){n++,a++;continue}if(o===":"&&(r==="$"||r==="?"||r===":")){for(;n<s.length&&/[:a-zA-Z0-9_]/.test(s[n]);)n++;if(r==="$")for(;a<e.length&&/[$0-9]/.test(e[a]);)a++;else if(r===":")for(;a<e.length&&/[:0-9]/.test(e[a]);)a++;else a++;if(a>=t)return n;continue}o===r?(n++,a++):n++}return n}function Wt({editorView:s,originalSql:e,statementFrom:t,fileParameters:n={},errorDetail:a,clientType:o,queryPrefix:r}){if(!s||!a)return;const{message:l,position:i}=a.normalizeError||new ca(a).nomaltliztionErrror;if(!i){xa(s,t,e,l);return}const d=`${r}${e}`,m=va(d,n,o),c=ga(d,m,i),p=Math.max(c-1,0)-((r==null?void 0:r.length)||0),{from:C,to:w}=ya(e,t,p);Mt(s,[{from:C,to:w,severity:"error",message:l}])}function ya(s,e,t){let n=t;for(;n<s.length&&!/[\s\n\r\t]/.test(s[n]);)n++;return{from:e+t,to:e+n}}function xa(s,e,t,n){const a=[{from:e,to:e+t.length,severity:"error",message:n}];Mt(s,a)}function ba(s){Mt(s,[])}const Ca=s=>ns.of([{key:"Mod-Enter",mac:"Cmd-Enter",run:e=>{const{currentStatements:t}=at(e),n=Fs(e);return t.length&&s({currentStatements:t,treeNodes:n||[]}),!0},preventDefault:!0}]),Sa={class:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center"},wa=X({__name:"DropdownMenuCheckboxItem",props:{modelValue:{type:[Boolean,String]},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},emits:["select","update:modelValue"],setup(s,{emit:e}){const t=s,n=e,a=O(()=>{const{class:r,...l}=t;return l}),o=Vs(a,n);return(r,l)=>(g(),A(u(fa),ss({"data-slot":"dropdown-menu-checkbox-item"},u(o),{class:u(Ze)("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class)}),{default:v(()=>[f("span",Sa,[h(u(ea),null,{default:v(()=>[h(u(qs),{class:"size-4"})]),_:1})]),he(r.$slots,"default")]),_:3},16,["class"]))}}),_a={},Ea={class:"p-4 flex flex-col items-center justify-center h-full text-center space-y-4"},Ta={class:"text-muted-foreground space-y-3"},Ra={class:"list-disc text-sm list-inside text-left space-y-2"};function $a(s,e){const t=Bn,n=qn,a=Lt;return g(),N("div",Ea,[h(n,{class:"rounded-2xl size-20 shadow-md"},{default:v(()=>[h(t,{src:"/logo.png",alt:"@unovue"})]),_:1}),f("div",Ta,[e[7]||(e[7]=f("h2",{class:"text-md font-normal text-foreground"},"Getting Started",-1)),f("ol",Ra,[e[5]||(e[5]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Write your query"),I(" in the editor. ")],-1)),e[6]||(e[6]=f("li",null,[f("span",{class:"font-normal text-foreground"},"Click inside your query"),I(" to select it. ")],-1)),f("li",null,[e[1]||(e[1]=I(" Click ")),e[2]||(e[2]=f("span",{class:"text-foreground font-normal"},"'Execute current'",-1)),e[3]||(e[3]=I(" or use shortcut ")),h(a,{class:"font-normal border rounded-md p-1 px-1.5 text-foreground"},{default:v(()=>e[0]||(e[0]=[I("⌘↵")])),_:1}),e[4]||(e[4]=I(" to run the query. "))])])])])}const za=St(_a,[["render",$a]]),ka={class:"font-medium text-foreground"},La={class:"font-medium text-foreground"},Aa=X({__name:"RawQueryConnectionConfirmDialog",props:{open:{type:Boolean},targetConnectionName:{},currentConnectionName:{}},emits:["confirm","cancel"],setup(s,{emit:e}){const t=e,n=()=>{t("confirm")},a=()=>{t("cancel")};return(o,r)=>{const l=me;return o.open?(g(),A(u(wt),{key:0,open:o.open,"onUpdate:open":r[0]||(r[0]=i=>!i&&a())},{default:v(()=>[h(u(_t),{class:"max-w-md"},{default:v(()=>[h(u(Et),null,{default:v(()=>[h(u(Tt),{class:"flex items-center gap-2"},{default:v(()=>[h(l,{name:"hugeicons:alert-02",class:"size-5 text-amber-500"}),r[1]||(r[1]=I(" Confirm query execution "))]),_:1}),h(u(Bs),null,{default:v(()=>[r[2]||(r[2]=I(" This query will execute on ")),f("span",ka,D(o.targetConnectionName),1),r[3]||(r[3]=I(" . The current connection is ")),f("span",La,D(o.currentConnectionName),1),r[4]||(r[4]=I(" . Make sure before executing. "))]),_:1})]),_:1}),h(u(as),null,{default:v(()=>[h(u(ze),{variant:"outline",onClick:a},{default:v(()=>r[5]||(r[5]=[I("Cancel")])),_:1}),h(u(ze),{class:"gap-1",onClick:n},{default:v(()=>[h(l,{name:"lucide:play",class:"size-4"}),r[6]||(r[6]=I(" Execute "))]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])):U("",!0)}}}),Ma={key:1,class:"text-xs text-muted-foreground ml-2"},Na=X({__name:"RawQueryEditorContextMenu",props:{contextMenuItems:{}},emits:["update:open"],setup(s,{emit:e}){const t=e,n=o=>typeof o>"u"?!0:!!o,a=o=>{t("update:open",o)};return(o,r)=>{const l=hs,i=jn,d=me,m=Lt,c=Xe,p=Hn,C=Qn,w=Wn,y=Un,x=vs,S=fs;return g(),A(S,{"onUpdate:open":a},{default:v(()=>[h(l,{"as-child":""},{default:v(()=>[he(o.$slots,"default")]),_:3}),h(x,{class:"min-w-56",onCloseAutoFocus:r[0]||(r[0]=Rt(()=>{},["prevent"]))},{default:v(()=>[(g(!0),N(se,null,le(o.contextMenuItems,($,Q)=>(g(),N(se,{key:Q},[$.type===u(q).LABEL&&n($.condition)?(g(),A(i,{key:0,class:"font-medium text-xs text-muted-foreground"},{default:v(()=>[I(D($.title),1)]),_:2},1024)):$.type===u(q).ACTION&&n($.condition)?(g(),A(c,{key:1,onSelect:$.select,disabled:$.disabled},{default:v(()=>[$.icon?(g(),A(d,{key:0,name:$.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):U("",!0),I(" "+D($.title)+" ",1),$.shortcut?(g(),A(m,{key:1},{default:v(()=>[I(D($.shortcut),1)]),_:2},1024)):U("",!0)]),_:2},1032,["onSelect","disabled"])):$.type===u(q).SEPARATOR&&n($.condition)?(g(),A(p,{key:2})):$.type===u(q).SUBMENU&&n($.condition)?(g(),A(y,{key:3,disabled:!$.items||$.items.length===0},{default:v(()=>[h(C,null,{default:v(()=>[$.icon?(g(),A(d,{key:0,name:$.icon,class:"size-4! min-w-4 text-muted-foreground mr-2"},null,8,["name"])):U("",!0),I(" "+D($.title)+" ",1),$.desc?(g(),N("span",Ma,D($.desc),1)):U("",!0)]),_:2},1024),h(w,{class:ge("min-w-52")},{default:v(()=>[(g(!0),N(se,null,le($.items,(M,T)=>(g(),N(se,{key:T},[M.type===u(q).ACTION&&n(M.condition)?(g(),A(c,{key:0,onSelect:M.select},{default:v(()=>[M.icon?(g(),A(d,{key:0,name:M.icon,class:"size-4! min-w-4 text-muted-foreground"},null,8,["name"])):U("",!0),I(" "+D(M.title)+" ",1),M.shortcut?(g(),A(m,{key:1},{default:v(()=>[I(D(M.shortcut),1)]),_:2},1024)):U("",!0)]),_:2},1032,["onSelect"])):M.type===u(q).LABEL&&n(M.condition)?(g(),A(i,{key:1,class:"font-medium text-xs text-muted-foreground"},{default:v(()=>[I(D(M.title),1)]),_:2},1024)):M.type===u(q).SEPARATOR&&n(M.condition)?(g(),A(p,{key:2})):U("",!0)],64))),128))]),_:2},1024)]),_:2},1032,["disabled"])):U("",!0)],64))),128))]),_:1})]),_:3})}}}),Ia={},Oa={class:"mb-2 flex items-center gap-1.5 text-sm font-semibold"};function Pa(s,e){const t=me,n=ze,a=Yn,o=ye,r=xe,l=Jn,i=Gn,d=be;return g(),A(d,null,{default:v(()=>[h(i,null,{default:v(()=>[h(o,{"as-child":""},{default:v(()=>[h(a,{"as-child":""},{default:v(()=>[h(n,{size:"iconSm",variant:"ghost",class:"h-4 w-4 p-0 text-muted-foreground hover:text-foreground",title:"How to use query variables","aria-label":"How to use query variables"},{default:v(()=>[h(t,{name:"hugeicons:help-circle",class:"size-3.5!"})]),_:1})]),_:1})]),_:1}),h(r,null,{default:v(()=>e[0]||(e[0]=[f("p",null,"How to use query variables",-1)])),_:1}),h(l,{side:"top",align:"start",class:"w-[440px] p-4 text-xs"},{default:v(()=>[f("p",Oa,[h(t,{name:"hugeicons:help-circle",class:"size-4!"}),e[1]||(e[1]=I(" Passing variables in queries "))]),e[2]||(e[2]=f("p",{class:"mb-3 text-muted-foreground"},[I(" Use "),f("code",{class:"rounded bg-muted px-1"},":variable_name"),I(" syntax to bind parameters. For array operators, cast to the correct type: ")],-1)),e[3]||(e[3]=f("div",{class:"space-y-3"},[f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},[f("code",{class:"rounded bg-muted px-1"},"= ANY()")]),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE id = ANY (ARRAY[:your_variable]::integer[])
|
|
3
|
-
WHERE status = ANY (ARRAY[:statuses]::text[])`)]),f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},[f("code",{class:"rounded bg-muted px-1"},"IN()")]),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE id IN (:your_variable)
|
|
4
|
-
WHERE name IN (:names)`)]),f("div",null,[f("p",{class:"mb-1 font-medium text-foreground"},"Scalar variable"),f("pre",{class:"overflow-x-auto whitespace-pre-wrap break-all rounded bg-muted p-2 text-xs"},`WHERE created_at > :start_date
|
|
5
|
-
WHERE user_id = :user_id`)])],-1)),e[4]||(e[4]=f("p",{class:"mt-3 border-t pt-2 text-muted-foreground"},[I(" Replace "),f("code",{class:"rounded bg-muted px-1"},"alias_type"),I(" with the actual PostgreSQL type, e.g. "),f("code",{class:"rounded bg-muted px-1"},"integer"),I(", "),f("code",{class:"rounded bg-muted px-1"},"uuid"),I(", "),f("code",{class:"rounded bg-muted px-1"},"text"),I(". ")],-1))]),_:1})]),_:1})]),_:1})}const Da=St(Ia,[["render",Pa]]),Fa={class:"h-fit py-1 flex items-center justify-between px-2"},Va={class:"flex items-center gap-2"},qa={class:"font-normal text-xs text-muted-foreground"},Ba={key:0,class:"font-normal text-xs text-muted-foreground"},ja={key:0,class:"flex items-center gap-1"},Ha={key:1,class:"flex items-center gap-1"},Ua={key:2},Qa={key:0},Wa={key:1},Ka={class:"flex gap-1"},Ga={class:"flex items-center"},Ya={class:"flex items-center"},Ja={key:0},Za={key:1},Xa=X({__name:"RawQueryEditorFooter",props:{cursorInfo:{},isHaveOneExecute:{type:Boolean},executeLoading:{type:Boolean},executeErrors:{type:Boolean},isStreaming:{type:Boolean},streamingRowCount:{},queryTime:{},rawQueryResultsLength:{},isRawViewMode:{type:Boolean},explainAnalyzeOptionItems:{},serializeMode:{},isSupportFormat:{type:Boolean},isSupportVariable:{type:Boolean},isExplainSupported:{type:Boolean}},emits:["onFormatCurrentStatement","onFormatAll","onExplainAnalyzeCurrent","toggleExplainOption","update:serializeMode","onExecuteCurrent","update:isRawViewMode","onCancelQuery"],setup(s){const e=K(!1);return(t,n)=>{const a=Da,o=me,r=Lt,l=ze;return g(),N("div",Fa,[f("div",Va,[f("div",qa," Ln "+D(t.cursorInfo.line)+", Col "+D(t.cursorInfo.column),1),t.isSupportVariable?(g(),A(a,{key:0})):U("",!0)]),t.isHaveOneExecute?(g(),N("div",Ba,[t.isStreaming?(g(),N("span",ja,[h(o,{name:"hugeicons:loading-03",class:"size-4! animate-spin"}),I(" Streaming... "+D(u(gt)(t.streamingRowCount))+" rows ",1)])):t.executeLoading?(g(),N("span",Ha,[n[9]||(n[9]=I("Processing ")),h(o,{name:"hugeicons:loading-03",class:"size-4! animate-spin"})])):(g(),N("span",Ua,[t.executeErrors?(g(),N("span",Qa," Query: 1 error in "+D(u(Qe)(t.queryTime)),1)):(g(),N("span",Wa," Query success: "+D(u(gt)(t.rawQueryResultsLength))+" rows in "+D(u(Qe)(t.queryTime)),1))]))])):U("",!0),f("div",Ka,[t.isSupportFormat?(g(),A(u(be),{key:0},{default:v(()=>[h(u(ye),null,{default:v(()=>[f("div",Ga,[h(l,{onClick:n[0]||(n[0]=i=>t.$emit("onFormatCurrentStatement")),variant:"outline",size:"xxs",class:"rounded-r-none"},{default:v(()=>[h(o,{name:"hugeicons:magic-wand-01"}),n[11]||(n[11]=I(" Format ")),h(r,null,{default:v(()=>n[10]||(n[10]=[I("⌘S")])),_:1})]),_:1}),h(u(Vt),null,{default:v(()=>[h(u(qt),{"as-child":""},{default:v(()=>[h(l,{variant:"outline",size:"iconSm",class:"rounded-l-none border-l-0 px-2"},{default:v(()=>[h(o,{name:"hugeicons:arrow-down-01",class:"size-4! min-w-4"})]),_:1})]),_:1}),h(u(Bt),{align:"end",class:"min-w-44"},{default:v(()=>[h(u(ct),{class:"py-0"},{default:v(()=>n[12]||(n[12]=[I("Format Options ")])),_:1}),h(u(dt)),h(u(jt),{onClick:n[1]||(n[1]=i=>t.$emit("onFormatCurrentStatement")),class:"h-6 cursor-pointer"},{default:v(()=>[n[14]||(n[14]=I(" Current Statement ")),h(r,null,{default:v(()=>n[13]||(n[13]=[I("⌘S")])),_:1})]),_:1}),h(u(jt),{onClick:n[2]||(n[2]=i=>t.$emit("onFormatAll")),class:"h-6 cursor-pointer"},{default:v(()=>[n[16]||(n[16]=I(" All Statement ")),h(r,null,{default:v(()=>n[15]||(n[15]=[I("⇧⌥F")])),_:1})]),_:1})]),_:1})]),_:1})])]),_:1}),h(u(xe),null,{default:v(()=>n[17]||(n[17]=[f("p",null,"Format current statement (⌘S)",-1)])),_:1})]),_:1})):U("",!0),t.isExplainSupported?(g(),A(u(be),{key:1},{default:v(()=>[h(u(ye),null,{default:v(()=>[f("div",Ya,[h(l,{onClick:n[3]||(n[3]=i=>t.$emit("onExplainAnalyzeCurrent")),variant:"outline",size:"xxs",class:"rounded-r-none"},{default:v(()=>[h(o,{name:"hugeicons:analytics-up"}),n[19]||(n[19]=I(" Explain ")),h(r,null,{default:v(()=>n[18]||(n[18]=[I("⌘E")])),_:1})]),_:1}),h(u(Vt),{open:u(e),"onUpdate:open":n[6]||(n[6]=i=>ot(e)?e.value=i:null)},{default:v(()=>[h(u(qt),{"as-child":""},{default:v(()=>[h(l,{variant:"outline",size:"iconSm",class:"rounded-l-none border-l-0 px-2"},{default:v(()=>[h(o,{name:"hugeicons:arrow-down-01",class:"size-4! min-w-4"})]),_:1})]),_:1}),h(u(Bt),{align:"end",class:"min-w-52"},{default:v(()=>[h(u(ct),{class:"py-0"},{default:v(()=>n[20]||(n[20]=[I("Explain Analyze Options")])),_:1}),h(u(dt)),(g(!0),N(se,null,le(t.explainAnalyzeOptionItems,i=>(g(),A(u(wa),{key:i.key,"model-value":i.checked,onSelect:n[4]||(n[4]=Rt(()=>{},["prevent"])),"onUpdate:modelValue":d=>t.$emit("toggleExplainOption",i.key),class:"h-6 cursor-pointer"},{default:v(()=>[I(D(i.label),1)]),_:2},1032,["model-value","onUpdate:modelValue"]))),128)),h(u(dt)),h(u(ct),{class:"py-0"},{default:v(()=>n[21]||(n[21]=[I("Serialize")])),_:1}),h(u(ta),{"model-value":t.serializeMode,"onUpdate:modelValue":n[5]||(n[5]=i=>t.$emit("update:serializeMode",i))},{default:v(()=>[h(u(mt),{value:"NONE",class:"h-6 cursor-pointer"},{default:v(()=>n[22]||(n[22]=[I("None")])),_:1}),h(u(mt),{value:"TEXT",class:"h-6 cursor-pointer"},{default:v(()=>n[23]||(n[23]=[I("Text")])),_:1}),h(u(mt),{value:"BINARY",class:"h-6 cursor-pointer"},{default:v(()=>n[24]||(n[24]=[I("Binary")])),_:1})]),_:1},8,["model-value"])]),_:1})]),_:1},8,["open"])])]),_:1}),h(u(xe),null,{default:v(()=>n[25]||(n[25]=[f("p",null,"Run Explain Analyze (⌘E) or open options",-1)])),_:1})]),_:1})):U("",!0),h(u(be),null,{default:v(()=>[h(u(ye),{"as-child":""},{default:v(()=>[t.isStreaming||t.executeLoading?(g(),A(l,{key:0,onClick:n[7]||(n[7]=i=>t.$emit("onCancelQuery")),variant:"outline",size:"xxs"},{default:v(()=>[h(o,{name:"hugeicons:stop",class:"size-4! text-red-500"}),n[26]||(n[26]=I(" Cancel query "))]),_:1})):(g(),A(l,{key:1,onClick:n[8]||(n[8]=i=>t.$emit("onExecuteCurrent")),variant:"outline",size:"xxs"},{default:v(()=>[h(o,{name:"hugeicons:play"}),n[28]||(n[28]=I(" Execute current ")),h(r,null,{default:v(()=>n[27]||(n[27]=[I("⌘↵")])),_:1})]),_:1}))]),_:1}),h(u(xe),null,{default:v(()=>[t.isStreaming||t.executeLoading?(g(),N("p",Ja,"Cancel query")):(g(),N("p",Za,"Execute Query (⌘↵)"))]),_:1})]),_:1})])])}}}),ys=X({__name:"VariableEditor",props:{fileVariables:{}},emits:["updateVariables"],setup(s,{emit:e}){const t=e,n=K({line:1,column:1}),a=[js(`Please input your json variable
|
|
6
|
-
{
|
|
7
|
-
"key": "value"
|
|
8
|
-
}`),aa(r=>{try{return Us(r,{type:"space",size:2})}catch{return r}}),Hs(),os(),rs(Qs())],o=r=>{t("updateVariables",r)};return(r,l)=>(g(),A(ls,{"onUpdate:modelValue":o,"onUpdate:cursorInfo":l[0]||(l[0]=i=>n.value=i),modelValue:r.fileVariables,extensions:a,disabled:!1,ref:"codeEditorRef"},null,8,["modelValue"]))}}),eo={class:"h-full flex flex-col overflow-y-auto"},to=X({__name:"AddVariableModal",props:{open:{},fileVariables:{}},emits:["update:open","updateVariables"],setup(s,{emit:e}){const t=e,n=async a=>{t("updateVariables",a)};return(a,o)=>(g(),A(u(wt),{class:"",open:!!a.open,"onUpdate:open":o[1]||(o[1]=r=>t("update:open",r))},{default:v(()=>[h(u(_t),{class:"w-[60vw] h-[50vh] flex flex-col justify-between min-w-[60vw]"},{default:v(()=>[h(u(Et),null,{default:v(()=>[h(u(Tt),null,{default:v(()=>o[2]||(o[2]=[I(" Add Variable "),f("a",{class:"underline",href:"https://www.w3schools.com/js/js_json_syntax.asp",target:"_blank"}," (JSON format)",-1)])),_:1})]),_:1}),f("div",eo,[h(ys,{onUpdateVariables:n,fileVariables:a.fileVariables},null,8,["fileVariables"])]),h(u(as),{class:"mt-2"},{default:v(()=>[h(u(ze),{onClick:o[0]||(o[0]=r=>t("update:open",!1))},{default:v(()=>o[3]||(o[3]=[I(" Save ")])),_:1})]),_:1})]),_:1})]),_:1},8,["open"]))}}),so=X({__name:"RawQueryConfigModal",props:{open:{}},emits:["update:open"],setup(s,{emit:e}){const t=e;return(n,a)=>(g(),A(u(wt),{class:"",open:!!n.open,"onUpdate:open":a[0]||(a[0]=o=>t("update:open",o))},{default:v(()=>[h(u(_t),{class:"w-[50vw] h-[70vh] flex flex-col justify-between min-w-[50vw]"},{default:v(()=>[h(u(Et),null,{default:v(()=>[h(u(Tt),null,{default:v(()=>a[1]||(a[1]=[I(" Editor configs ")])),_:1})]),_:1}),h(Ws)]),_:1})]),_:1},8,["open"]))}}),no={class:"flex items-center justify-between p-1 rounded-md bg-muted"},ao={class:"flex gap-2 items-center"},oo={key:0},ro={key:1},lo=X({__name:"RawQueryEditorHeader",props:{currentFileInfo:{},fileVariables:{},workspaceId:{},selectedConnectionId:{},disableConnectionSwitch:{type:Boolean},connections:{},connection:{},isRedisConnection:{type:Boolean},isSupportVariable:{type:Boolean},redisDatabases:{},redisDatabaseIndex:{},codeEditorLayout:{}},emits:["update:connectionId","update:redisDatabaseIndex","update:updateFileVariables"],setup(s){const e=K(!1),t=K(!1),n=K(!1),a=()=>{e.value=!0},o=()=>{t.value=!0};return(r,l)=>{const i=me,d=sa,m=Ys,c=Gs,p=Ks,C=ze;return g(),N(se,null,[h(to,{onUpdateVariables:l[0]||(l[0]=w=>r.$emit("update:updateFileVariables",w)),"file-variables":r.fileVariables,open:u(e),"onUpdate:open":l[1]||(l[1]=w=>ot(e)?e.value=w:null)},null,8,["file-variables","open"]),h(so,{open:u(t),"onUpdate:open":l[2]||(l[2]=w=>ot(t)?t.value=w:null)},null,8,["open"]),f("div",no,[f("div",null,[h(p,null,{default:v(()=>[h(c,{class:"gap-0!"},{default:v(()=>[h(m,null,{default:v(()=>[h(d,{class:"flex items-center gap-0.5"},{default:v(()=>{var w,y;return[h(i,{name:(w=r.currentFileInfo)==null?void 0:w.icon},null,8,["name"]),I(" "+D((y=r.currentFileInfo)==null?void 0:y.title),1)]}),_:1})]),_:1})]),_:1})]),_:1})]),f("div",ao,[r.isSupportVariable&&r.codeEditorLayout===u(je).horizontal?(g(),A(u(be),{key:0},{default:v(()=>[h(u(ye),{"as-child":""},{default:v(()=>[h(C,{onClick:a,variant:"outline",size:"xxs",class:"relative"},{default:v(()=>[u(n)?(g(),A(i,{key:0,name:"lucide:triangle-alert",class:"absolute -top-1 -right-1 text-red-400"})):U("",!0),h(i,{name:"hugeicons:absolute"}),l[5]||(l[5]=I(" Add variables "))]),_:1})]),_:1}),h(u(xe),null,{default:v(()=>l[6]||(l[6]=[f("p",null,"Add variables",-1)])),_:1})]),_:1})):U("",!0),h(u(be),null,{default:v(()=>[h(u(ye),{"as-child":""},{default:v(()=>[h(na,{connectionId:r.selectedConnectionId,"onUpdate:connectionId":l[3]||(l[3]=w=>r.$emit("update:connectionId",w)),connections:r.connections,connection:r.connection,disabled:r.disableConnectionSwitch,class:"w-fit h-6! px-1.5",workspaceId:r.workspaceId},null,8,["connectionId","connections","connection","disabled","workspaceId"])]),_:1}),h(u(xe),null,{default:v(()=>[r.disableConnectionSwitch?(g(),N("p",oo," Connection switch is locked because the current connection has a strict mode tag ")):(g(),N("p",ro,"Select connection"))]),_:1})]),_:1}),r.isRedisConnection?(g(),A(Fn,{key:1,compact:"","trigger-id":"raw-query-redis-db-index","trigger-class":"bg-background",databases:r.redisDatabases||[],"database-index":r.redisDatabaseIndex??0,"onUpdate:databaseIndex":l[4]||(l[4]=w=>r.$emit("update:redisDatabaseIndex",w))},null,8,["databases","database-index"])):U("",!0),h(u(be),null,{default:v(()=>[h(u(ye),{"as-child":""},{default:v(()=>[h(C,{onClick:o,variant:"outline",size:"iconSm"},{default:v(()=>[h(i,{name:"hugeicons:dashboard-square-02"})]),_:1})]),_:1}),h(u(xe),null,{default:v(()=>l[7]||(l[7]=[f("p",null,"Query Settings",-1)])),_:1})]),_:1})])])],64)}}}),Ge={__name:"splitpanes",props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click","splitter-dblclick"],setup(s,{emit:e}){const t=e,n=s,a=Js(),o=K([]),r=O(()=>o.value.reduce((b,R)=>(b[~~R.id]=R)&&b,{})),l=O(()=>o.value.length),i=K(null),d=K(!1),m=K({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),c=K({splitter:null,timeoutId:null}),p=O(()=>({[`splitpanes splitpanes--${n.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":m.value.dragging})),C=()=>{document.addEventListener("mousemove",x,{passive:!1}),document.addEventListener("mouseup",S),"ontouchstart"in window&&(document.addEventListener("touchmove",x,{passive:!1}),document.addEventListener("touchend",S))},w=()=>{document.removeEventListener("mousemove",x,{passive:!1}),document.removeEventListener("mouseup",S),"ontouchstart"in window&&(document.removeEventListener("touchmove",x,{passive:!1}),document.removeEventListener("touchend",S))},y=(b,R)=>{const k=b.target.closest(".splitpanes__splitter");if(k){const{left:z,top:L}=k.getBoundingClientRect(),{clientX:_,clientY:F}="ontouchstart"in window&&b.touches?b.touches[0]:b;m.value.cursorOffset=n.horizontal?F-L:_-z}C(),m.value.mouseDown=!0,m.value.activeSplitter=R},x=b=>{m.value.mouseDown&&(b.preventDefault(),m.value.dragging=!0,requestAnimationFrame(()=>{P(T(b)),ne("resize",{event:b},!0)}))},S=b=>{m.value.dragging&&(window.getSelection().removeAllRanges(),ne("resized",{event:b},!0)),m.value.mouseDown=!1,m.value.activeSplitter=null,setTimeout(()=>{m.value.dragging=!1,w()},100)},$=(b,R)=>{"ontouchstart"in window&&(b.preventDefault(),c.value.splitter===R?(clearTimeout(c.value.timeoutId),c.value.timeoutId=null,Q(b,R),c.value.splitter=null):(c.value.splitter=R,c.value.timeoutId=setTimeout(()=>c.value.splitter=null,500))),m.value.dragging||ne("splitter-click",{event:b,index:R},!0)},Q=(b,R)=>{if(ne("splitter-dblclick",{event:b,index:R},!0),n.maximizePanes){let k=0;o.value=o.value.map((z,L)=>(z.size=L===R?z.max:z.min,L!==R&&(k+=z.min),z)),o.value[R].size-=k,ne("pane-maximize",{event:b,index:R,pane:o.value[R]}),ne("resized",{event:b,index:R},!0)}},M=(b,R)=>{ne("pane-click",{event:b,index:r.value[R].index,pane:r.value[R]})},T=b=>{const R=i.value.getBoundingClientRect(),{clientX:k,clientY:z}="ontouchstart"in window&&b.touches?b.touches[0]:b;return{x:k-(n.horizontal?0:m.value.cursorOffset)-R.left,y:z-(n.horizontal?m.value.cursorOffset:0)-R.top}},V=b=>{b=b[n.horizontal?"y":"x"];const R=i.value[n.horizontal?"clientHeight":"clientWidth"];return n.rtl&&!n.horizontal&&(b=R-b),b*100/R},P=b=>{const R=m.value.activeSplitter;let k={prevPanesSize:j(R),nextPanesSize:W(R),prevReachedMinPanes:0,nextReachedMinPanes:0};const z=0+(n.pushOtherPanes?0:k.prevPanesSize),L=100-(n.pushOtherPanes?0:k.nextPanesSize),_=Math.max(Math.min(V(b),L),z);let F=[R,R+1],G=o.value[F[0]]||null,te=o.value[F[1]]||null;const ve=G.max<100&&_>=G.max+k.prevPanesSize,Oe=te.max<100&&_<=100-(te.max+W(R+1));if(ve||Oe){ve?(G.size=G.max,te.size=Math.max(100-G.max-k.prevPanesSize-k.nextPanesSize,0)):(G.size=Math.max(100-te.max-k.prevPanesSize-W(R+1),0),te.size=te.max);return}if(n.pushOtherPanes){const Be=E(k,_);if(!Be)return;({sums:k,panesToResize:F}=Be),G=o.value[F[0]]||null,te=o.value[F[1]]||null}G!==null&&(G.size=Math.min(Math.max(_-k.prevPanesSize-k.prevReachedMinPanes,G.min),G.max)),te!==null&&(te.size=Math.min(Math.max(100-_-k.nextPanesSize-k.nextReachedMinPanes,te.min),te.max))},E=(b,R)=>{const k=m.value.activeSplitter,z=[k,k+1];return R<b.prevPanesSize+o.value[z[0]].min&&(z[0]=H(k).index,b.prevReachedMinPanes=0,z[0]<k&&o.value.forEach((L,_)=>{_>z[0]&&_<=k&&(L.size=L.min,b.prevReachedMinPanes+=L.min)}),b.prevPanesSize=j(z[0]),z[0]===void 0)?(b.prevReachedMinPanes=0,o.value[0].size=o.value[0].min,o.value.forEach((L,_)=>{_>0&&_<=k&&(L.size=L.min,b.prevReachedMinPanes+=L.min)}),o.value[z[1]].size=100-b.prevReachedMinPanes-o.value[0].min-b.prevPanesSize-b.nextPanesSize,null):R>100-b.nextPanesSize-o.value[z[1]].min&&(z[1]=J(k).index,b.nextReachedMinPanes=0,z[1]>k+1&&o.value.forEach((L,_)=>{_>k&&_<z[1]&&(L.size=L.min,b.nextReachedMinPanes+=L.min)}),b.nextPanesSize=W(z[1]-1),z[1]===void 0)?(b.nextReachedMinPanes=0,o.value.forEach((L,_)=>{_<l.value-1&&_>=k+1&&(L.size=L.min,b.nextReachedMinPanes+=L.min)}),o.value[z[0]].size=100-b.prevPanesSize-W(z[0]-1),null):{sums:b,panesToResize:z}},j=b=>o.value.reduce((R,k,z)=>R+(z<b?k.size:0),0),W=b=>o.value.reduce((R,k,z)=>R+(z>b+1?k.size:0),0),H=b=>[...o.value].reverse().find(R=>R.index<b&&R.size>R.min)||{},J=b=>o.value.find(R=>R.index>b+1&&R.size>R.min)||{},B=()=>{var b;const R=Array.from(((b=i.value)==null?void 0:b.children)||[]);for(const k of R){const z=k.classList.contains("splitpanes__pane"),L=k.classList.contains("splitpanes__splitter");!z&&!L&&(k.remove(),console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed."))}},ee=(b,R,k=!1)=>{const z=b-1,L=document.createElement("div");L.classList.add("splitpanes__splitter"),k||(L.onmousedown=_=>y(_,z),typeof window<"u"&&"ontouchstart"in window&&(L.ontouchstart=_=>y(_,z)),L.onclick=_=>$(_,z+1)),L.ondblclick=_=>Q(_,z+1),R.parentNode.insertBefore(L,R)},pe=b=>{b.onmousedown=void 0,b.onclick=void 0,b.ondblclick=void 0,b.remove()},ue=()=>{var b;const R=Array.from(((b=i.value)==null?void 0:b.children)||[]);for(const z of R)z.className.includes("splitpanes__splitter")&&pe(z);let k=0;for(const z of R)z.className.includes("splitpanes__pane")&&(!k&&n.firstSplitter?ee(k,z,!0):k&&ee(k,z),k++)},Le=({uid:b,...R})=>{const k=r.value[b];for(const[z,L]of Object.entries(R))k[z]=L},Ae=b=>{var R;let k=-1;Array.from(((R=i.value)==null?void 0:R.children)||[]).some(z=>(z.className.includes("splitpanes__pane")&&k++,z.isSameNode(b.el))),o.value.splice(k,0,{...b,index:k}),o.value.forEach((z,L)=>z.index=L),d.value&&Ve(()=>{ue(),Se({addedPane:o.value[k]}),ne("pane-add",{pane:o.value[k]})})},Me=b=>{const R=o.value.findIndex(z=>z.id===b);o.value[R].el=null;const k=o.value.splice(R,1)[0];o.value.forEach((z,L)=>z.index=L),Ve(()=>{ue(),ne("pane-remove",{pane:k}),Se({removedPane:{...k}})})},Se=(b={})=>{!b.addedPane&&!b.removedPane?ie():o.value.some(R=>R.givenSize!==null||R.min||R.max<100)?Ee(b):Ne(),d.value&&ne("resized")},Ne=()=>{const b=100/l.value;let R=0;const k=[],z=[];for(const L of o.value)L.size=Math.max(Math.min(b,L.max),L.min),R-=L.size,L.size>=L.max&&k.push(L.id),L.size<=L.min&&z.push(L.id);R>.1&&we(R,k,z)},ie=()=>{let b=100;const R=[],k=[];let z=0;for(const _ of o.value)b-=_.size,_.givenSize!==null&&z++,_.size>=_.max&&R.push(_.id),_.size<=_.min&&k.push(_.id);let L=100;if(b>.1){for(const _ of o.value)_.givenSize===null&&(_.size=Math.max(Math.min(b/(l.value-z),_.max),_.min)),L-=_.size;L>.1&&we(L,R,k)}},Ee=({addedPane:b,removedPane:R}={})=>{let k=100/l.value,z=0;const L=[],_=[];((b==null?void 0:b.givenSize)??null)!==null&&(k=(100-b.givenSize)/(l.value-1));for(const F of o.value)z-=F.size,F.size>=F.max&&L.push(F.id),F.size<=F.min&&_.push(F.id);if(!(Math.abs(z)<.1)){for(const F of o.value)(b==null?void 0:b.givenSize)!==null&&(b==null?void 0:b.id)===F.id||(F.size=Math.max(Math.min(k,F.max),F.min)),z-=F.size,F.size>=F.max&&L.push(F.id),F.size<=F.min&&_.push(F.id);z>.1&&we(z,L,_)}},we=(b,R,k)=>{let z;b>0?z=b/(l.value-R.length):z=b/(l.value-k.length),o.value.forEach((L,_)=>{if(b>0&&!R.includes(L.id)){const F=Math.max(Math.min(L.size+z,L.max),L.min),G=F-L.size;b-=G,L.size=F}else if(!k.includes(L.id)){const F=Math.max(Math.min(L.size+z,L.max),L.min),G=F-L.size;b-=G,L.size=F}}),Math.abs(b)>.1&&Ve(()=>{d.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})},ne=(b,R=void 0,k=!1)=>{const z=(R==null?void 0:R.index)??m.value.activeSplitter??null;t(b,{...R,...z!==null&&{index:z},...k&&z!==null&&{prevPane:o.value[z-(n.firstSplitter?1:0)],nextPane:o.value[z+(n.firstSplitter?0:1)]},panes:o.value.map(L=>({min:L.min,max:L.max,size:L.size}))})};de(()=>n.firstSplitter,()=>ue()),$t(()=>{B(),ue(),Se(),ne("ready"),d.value=!0}),zt(()=>d.value=!1);const Ie=()=>{var b;return en("div",{ref:i,class:p.value},(b=a.default)==null?void 0:b.call(a))};return Re("panes",o),Re("indexedPanes",r),Re("horizontal",O(()=>n.horizontal)),Re("requestUpdate",Le),Re("onPaneAdd",Ae),Re("onPaneRemove",Me),Re("onPaneClick",M),(b,R)=>(g(),A(Zs(Ie)))}},$e={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(s){var e;const t=s,n=De("requestUpdate"),a=De("onPaneAdd"),o=De("horizontal"),r=De("onPaneRemove"),l=De("onPaneClick"),i=(e=Xs())==null?void 0:e.uid,d=De("indexedPanes"),m=O(()=>d.value[i]),c=K(null),p=O(()=>{const x=isNaN(t.size)||t.size===void 0?0:parseFloat(t.size);return Math.max(Math.min(x,w.value),C.value)}),C=O(()=>{const x=parseFloat(t.minSize);return isNaN(x)?0:x}),w=O(()=>{const x=parseFloat(t.maxSize);return isNaN(x)?100:x}),y=O(()=>{var x;return`${o.value?"height":"width"}: ${(x=m.value)==null?void 0:x.size}%`});return de(()=>p.value,x=>n({uid:i,size:x})),de(()=>C.value,x=>n({uid:i,min:x})),de(()=>w.value,x=>n({uid:i,max:x})),$t(()=>{a({id:i,el:c.value,min:C.value,max:w.value,givenSize:t.size===void 0?null:p.value,size:p.value})}),zt(()=>r(i)),(x,S)=>(g(),N("div",{ref_key:"paneEl",ref:c,class:"splitpanes__pane",onClick:S[0]||(S[0]=$=>u(l)($,x._.uid)),style:Fe(y.value)},[he(x.$slots,"default")],4))}},io={class:"w-full h-full"},uo={class:"flex flex-col w-full h-full overflow-y-auto"},co={class:"flex flex-col flex-1 h-full p-1"},mo={class:"flex flex-col flex-1 h-full p-1 pl-0 relative"},po=X({__name:"RawQueryLayout",props:{layout:{},customLayout:{},showResultPanel:{type:Boolean}},setup(s){const e=s,t=is(),{editorLayoutSizes:n,editorLayoutInnerVariableSizes:a}=us(t),o=T=>{n.value=[T[0].size,T[1].size]},r=T=>{a.value=[T[0].size,T[1].size]},l=O(()=>n.value[0]),i=O(()=>a.value[0]),d=O(()=>a.value[1]),m=O(()=>n.value[1]),c=O(()=>e.layout===je.horizontalWithVariables||e.layout===je.vertical),p=O(()=>e.layout===je.horizontalWithVariables),C=O(()=>!!e.customLayout),w=O(()=>{var T;return((T=e.customLayout)==null?void 0:T.direction)==="vertical"}),y=O(()=>{var T,V;return((V=(T=e.customLayout)==null?void 0:T.innerSplit)==null?void 0:V.direction)==="vertical"}),x=T=>{var E,j,W,H,J;const V=(E=e.customLayout)==null?void 0:E.id;if(!V)return((W=(j=e.customLayout)==null?void 0:j.panels[T])==null?void 0:W.defaultSize)??50;const P=t.customLayoutSizes[V];return(P==null?void 0:P.panels[T])??((J=(H=e.customLayout)==null?void 0:H.panels[T])==null?void 0:J.defaultSize)??50},S=T=>{var E,j,W,H,J,B,ee;const V=(E=e.customLayout)==null?void 0:E.id;if(!V)return((H=(W=(j=e.customLayout)==null?void 0:j.innerSplit)==null?void 0:W.panels[T])==null?void 0:H.defaultSize)??50;const P=t.customLayoutSizes[V];return(P==null?void 0:P.innerPanels[T])??((ee=(B=(J=e.customLayout)==null?void 0:J.innerSplit)==null?void 0:B.panels[T])==null?void 0:ee.defaultSize)??50},$=T=>{var P;const V=(P=e.customLayout)==null?void 0:P.id;V&&t.updateCustomLayoutSizes(V,T.map(E=>E.size))},Q=T=>{var E,j,W;const V=(E=e.customLayout)==null?void 0:E.id;if(!V)return;const P=((j=t.customLayoutSizes[V])==null?void 0:j.panels)??((W=e.customLayout)==null?void 0:W.panels.map(H=>H.defaultSize))??[];t.updateCustomLayoutSizes(V,P,T.map(H=>H.size))},M={content:"flex flex-col w-full h-full overflow-y-auto",variables:"flex flex-col flex-1 h-full p-1",result:"flex flex-col flex-1 h-full p-1 pl-0 relative"};return(T,V)=>(g(),N("div",io,[u(C)&&T.customLayout?(g(),A(u(Ge),{key:0,class:"default-theme",horizontal:u(w),onResize:V[1]||(V[1]=P=>$(P.panes))},{default:v(()=>[(g(!0),N(se,null,le(T.customLayout.panels,(P,E)=>(g(),N(se,{key:E},[T.customLayout.innerSplit&&T.customLayout.innerSplit.panelIndex===E?(g(),A(u($e),{key:0,size:x(E),"min-size":P.minSize,"max-size":P.maxSize},{default:v(()=>[h(u(Ge),{horizontal:u(y),class:"default-theme",onResize:V[0]||(V[0]=j=>Q(j.panes))},{default:v(()=>[(g(!0),N(se,null,le(T.customLayout.innerSplit.panels,(j,W)=>(g(),A(u($e),{key:`inner-${W}`,size:S(W),"min-size":j.minSize,"max-size":j.maxSize},{default:v(()=>[f("div",{class:ge(M[j.slot])},[he(T.$slots,j.slot)],2)]),_:2},1032,["size","min-size","max-size"]))),128))]),_:3},8,["horizontal"])]),_:2},1032,["size","min-size","max-size"])):(g(),A(u($e),{key:1,size:x(E),"min-size":P.minSize,"max-size":P.maxSize},{default:v(()=>[f("div",{class:ge(M[P.slot])},[he(T.$slots,P.slot)],2)]),_:2},1032,["size","min-size","max-size"]))],64))),128))]),_:3},8,["horizontal"])):(g(),A(u(Ge),{key:1,onResize:V[3]||(V[3]=P=>o(P.panes)),class:"default-theme",horizontal:T.layout===u(je).vertical},{default:v(()=>[h(u($e),{size:u(l)},{default:v(()=>[h(u(Ge),{horizontal:u(p),onResize:V[2]||(V[2]=P=>u(c)?r(P.panes):null)},{default:v(()=>[h(u($e),{size:u(c)?u(i):100,"min-size":"30"},{default:v(()=>[f("div",uo,[he(T.$slots,"content")])]),_:3},8,["size"]),u(c)?(g(),A(u($e),{key:0,size:u(d),"min-size":"0","max-size":"70"},{default:v(()=>[f("div",co,[he(T.$slots,"variables")])]),_:3},8,["size"])):U("",!0)]),_:3},8,["horizontal"])]),_:3},8,["size"]),e.showResultPanel!==!1?(g(),A(u($e),{key:0,size:u(m),"min-size":"0","max-size":"80"},{default:v(()=>[f("div",mo,[he(T.$slots,"result")])]),_:3},8,["size"])):U("",!0)]),_:3},8,["horizontal"]))]))}}),Nt={SELECT:"DML",INSERT:"DML",UPDATE:"DML",DELETE:"DML",MERGE:"DML",VALUES:"DML",TRUNCATE:"DML",COPY:"DML",CREATE:"DDL",ALTER:"DDL",DROP:"DDL",COMMENT:"DDL",ANALYZE:"DDL",VACUUM:"DDL",REINDEX:"DDL",CLUSTER:"DDL","REFRESH MATERIALIZED VIEW":"DDL","IMPORT FOREIGN SCHEMA":"DDL","SECURITY LABEL":"DDL",GRANT:"DCL",REVOKE:"DCL",BEGIN:"TCL",COMMIT:"TCL",ROLLBACK:"TCL",SAVEPOINT:"TCL","RELEASE SAVEPOINT":"TCL","ROLLBACK TO SAVEPOINT":"TCL","PREPARE TRANSACTION":"TCL","COMMIT PREPARED":"TCL","ROLLBACK PREPARED":"TCL","SET TRANSACTION":"TCL",SET:"SYSTEM",SHOW:"SYSTEM",RESET:"SYSTEM",DISCARD:"SYSTEM",EXPLAIN:"SYSTEM",LOAD:"SYSTEM",LOCK:"SYSTEM",MOVE:"SYSTEM",FETCH:"SYSTEM",CLOSE:"SYSTEM",DECLARE:"SYSTEM",DEALLOCATE:"SYSTEM",PREPARE:"SYSTEM",EXECUTE:"SYSTEM",LISTEN:"SYSTEM",UNLISTEN:"SYSTEM",NOTIFY:"SYSTEM",DO:"SYSTEM",ABORT:"SYSTEM",CHECKPOINT:"SYSTEM"},fo=Object.keys(Nt).sort((s,e)=>e.length-s.length),xs=s=>{if(!s)return"";const e=s.toUpperCase().trim().replace(/;$/,"");for(const t of fo)if(e===t||e.startsWith(`${t} `))return t;return e.split(/\s+/)[0]||e},ho=s=>{if(!s)return!1;const e=s.toUpperCase().trim(),t=xs(e);if(["SELECT","VALUES","SHOW","EXPLAIN","TABLE"].includes(t))return!1;const a=Nt[t];return!!(["INSERT","UPDATE","DELETE","TRUNCATE","COPY","MERGE","CALL","DO"].includes(t)||a==="DDL"||a==="DCL"||["SET","RESET","GRANT","REVOKE","COMMENT","ANALYZE","VACUUM","REINDEX","CLUSTER"].includes(t)||["CREATE","DROP","ALTER"].includes(t))},vo=(s,e)=>{const t=s||"Query",n=e??0;return["INSERT","UPDATE","DELETE"].includes(t.toUpperCase())?`${t} successful. ${n} rows affected.`:`${t} successful.`};class qe{constructor(e,t){ae(this,"cmd");ae(this,"commandKey");ae(this,"rowCount");this.cmd=(e||"").toUpperCase().trim(),this.commandKey=xs(this.cmd),this.rowCount=t}isMutation(){return ho(this.cmd)}getMessage(e){return e?vo(this.cmd,this.rowCount):""}getCategory(){return Nt[this.commandKey]??"UNKNOWN"}build(){const e=this.isMutation();return{isMutation:e,message:this.getMessage(e),category:this.getCategory()}}}class go extends qe{isMutation(){return["VACUUM","ANALYZE","REINDEX","CLUSTER"].includes(this.commandKey)?!0:super.isMutation()}}class yt extends qe{isMutation(){return this.commandKey==="OPTIMIZE"?!0:super.isMutation()}getMessage(e){return this.commandKey==="TRUNCATE"?"TRUNCATE successful.":super.getMessage(e)}}class yo extends yt{}class bs extends qe{isMutation(){return this.commandKey==="TRUNCATE"?!0:super.isMutation()}getMessage(e){return this.commandKey==="INSERT"?`INSERT successful. ${this.rowCount} row(s) affected.`:super.getMessage(e)}}class xo extends bs{}class Kt extends qe{}class bo extends qe{getMessage(e){return this.commandKey==="MERGE"?`MERGE successful. ${this.rowCount} rows affected.`:super.getMessage(e)}}class Co extends qe{getMessage(e){return this.commandKey==="TRUNCATE"?"TRUNCATE successful.":this.commandKey==="MERGE"?`MERGE successful. ${this.rowCount} rows affected.`:super.getMessage(e)}}const So={[Z.POSTGRES]:go,[Z.MARIADB]:yt,[Z.MYSQL]:yt,[Z.MYSQL2]:yo,[Z.REDIS]:Kt,[Z.SQLITE3]:bs,[Z.SNOWFLAKE]:Kt,[Z.BETTER_SQLITE3]:xo,[Z.MSSQL]:bo,[Z.ORACLE]:Co},wo=(s,e=0,t=Z.POSTGRES)=>{const n=So[t];if(!n)throw new Error(`Unsupported database client type: "${t}"`);return new n(s,e).build()};function Gt(s,e){return Object.prototype.hasOwnProperty.call(s,e)}function _o(s,e){if(Array.isArray(s))return Object.fromEntries(e.map((o,r)=>[o.name,s[r]]));const t=s;if(!e.length)return{...t};const n={};let a=!1;return e.forEach((o,r)=>{if(Gt(t,o.name)){n[o.name]=t[o.name],a=!0;return}const l=String(r);Gt(t,l)&&(n[o.name]=t[l],a=!0)}),a?n:{...t}}function Eo(s,e){return(s||[]).map(t=>_o(t,e))}const To={class:"h-full p-2 overflow-y-auto"},Ro={key:0,class:"space-y-2"},$o={class:"flex items-center justify-between gap-2"},zo={class:"flex items-center gap-1"},ko={class:"text-sm pl-5 text-muted-foreground decoration-wavy underline decoration-red-600"},Lo={key:0,class:"pl-5 mt-1 text-sm text-amber-600/90 font-medium"},Ao={class:"pt-2 border-t"},Mo={class:"error-query-container"},No={key:0,class:"pt-2 border-t"},Io=X({__name:"ResultTabErrorView",props:{activeTab:{}},emits:["onChangeView"],setup(s,{emit:e}){const t=s,n=c=>!!c.metadata.executeErrors,a=O(()=>{var p,C;const c=(p=t.activeTab.metadata.executeErrors)==null?void 0:p.data;return((C=c==null?void 0:c.normalizeError)==null?void 0:C.position)||null}),o=O(()=>{var C;const c=t.activeTab.metadata.executeErrors,p=c==null?void 0:c.data;return((C=p==null?void 0:p.normalizeError)==null?void 0:C.message)||(c==null?void 0:c.message)||""}),r=O(()=>{var p,C;const c=(p=t.activeTab.metadata.executeErrors)==null?void 0:p.data;return((C=c==null?void 0:c.normalizeError)==null?void 0:C.hint)||null}),l=O(()=>{const c=t.activeTab.metadata.statementQuery;if(!c)return[];const p=a.value,C=[];if(p&&p>0){const w=p-1;let y=w;for(;y<c.length&&c[y]!==`
|
|
9
|
-
`&&c[y]!=="\r"&&c[y]!==" "&&c[y]!==" ";)y++;y<=w&&(y=Math.min(w+1,c.length)),C.push({start:w,end:y,properties:{class:"error-highlight"}})}return C}),i=async()=>{if(typeof window>"u")return;await Ve();const c=document.querySelector(".error-query-container .error-highlight");c&&c.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})};de(()=>l.value,()=>{i()},{flush:"post"});const d=O(()=>{var p;const c={...((p=t.activeTab.metadata.executeErrors)==null?void 0:p.data)||{}};return c==null||delete c.normalizeError,c?typeof c=="string"?c:JSON.stringify(c,null,2):""}),m=O(()=>t.activeTab.metadata.statementQuery||"");return(c,p)=>{var y;const C=me,w=At;return g(),N("div",To,[n(c.activeTab)?(g(),N("div",Ro,[f("div",$o,[f("div",null,[f("div",zo,[h(C,{name:"hugeicons:alert-02",class:"size-4 text-red-500 mt-0.5"}),p[0]||(p[0]=f("div",{class:"font-medium text-red-600"},"Error Message",-1))]),f("span",ko,D(o.value),1),r.value?(g(),N("div",Lo," Hint: "+D(r.value),1)):U("",!0)])]),f("div",Ao,[p[1]||(p[1]=f("div",{class:"mb-2"},[f("span",{class:"font-normal text-sm text-muted-foreground flex items-center gap-1"}," View executed query : ")],-1)),f("div",Mo,[h(w,{code:m.value,decorations:l.value,"show-copy-button":""},null,8,["code","decorations"])])]),(y=c.activeTab.metadata.executeErrors)!=null&&y.data?(g(),N("div",No,[p[2]||(p[2]=f("div",{class:"flex items-center justify-between mb-2"},[f("div",{class:"text-sm text-muted-foreground"},"Error Details:")],-1)),h(w,{code:d.value,language:"json"},null,8,["code"])])):U("",!0)])):U("",!0)])}}}),Oo=St(Io,[["__scopeId","data-v-3dcef677"]]),Po={class:"h-full p-4 space-y-3 overflow-y-auto"},Do={class:"space-y-2"},Fo={class:"flex items-center gap-2 text-sm"},Vo={class:"font-medium"},qo={class:"flex items-center gap-2 text-sm"},Bo={class:"font-medium"},jo={class:"flex items-center gap-2 text-sm"},Ho={class:"font-medium"},Uo={class:"flex items-center gap-2 text-sm"},Qo={class:"font-medium"},Wo={class:"flex items-center gap-2 text-sm"},Ko={class:"font-medium"},Go={key:0,class:"flex items-center gap-2 text-sm"},Yo={class:"font-medium"},Jo={class:"pt-3 border-t"},Zo={key:0,class:"pt-3 border-t"},Xo={class:"flex flex-wrap gap-1"},er=X({__name:"ResultTabInfoView",props:{activeTab:{}},setup(s){const e=s,t=typeof TextEncoder<"u"?new TextEncoder:null,n=O(()=>{var o;const a=((o=e.activeTab)==null?void 0:o.result)??[];if(!t)return{bytes:0,formatted:"N/A"};try{const r=JSON.stringify(a),l=r?t.encode(r).length:0;return{bytes:l,formatted:tn(l)}}catch{return{bytes:0,formatted:"N/A"}}});return(a,o)=>{var i,d,m,c;const r=me,l=At;return g(),N("div",Po,[f("div",Do,[f("div",Fo,[h(r,{name:"hugeicons:clock-01",class:"size-4 text-muted-foreground"}),o[0]||(o[0]=f("span",{class:"text-muted-foreground"},"Query Time:",-1)),f("span",Vo,D(u(Qe)(a.activeTab.metadata.queryTime)),1)]),f("div",qo,[h(r,{name:"hugeicons:summation-01",class:"size-4 text-muted-foreground"}),o[1]||(o[1]=f("span",{class:"text-muted-foreground"},"Rows:",-1)),f("span",Bo,D(u(gt)(((i=a.activeTab.result)==null?void 0:i.length)||0)),1)]),f("div",jo,[h(r,{name:"hugeicons:file-02",class:"size-4 text-muted-foreground"}),o[2]||(o[2]=f("span",{class:"text-muted-foreground"},"Result Size:",-1)),f("span",Ho,D(n.value.formatted),1)]),f("div",Uo,[h(r,{name:"hugeicons:chart-column",class:"size-4 text-muted-foreground"}),o[3]||(o[3]=f("span",{class:"text-muted-foreground"},"Columns:",-1)),f("span",Qo,D(((d=a.activeTab.metadata.fieldDefs)==null?void 0:d.length)||0),1)]),f("div",Wo,[h(r,{name:"hugeicons:calendar-03",class:"size-4 text-muted-foreground"}),o[4]||(o[4]=f("span",{class:"text-muted-foreground"},"Executed At:",-1)),f("span",Ko,D(((m=a.activeTab.metadata.executedAt)==null?void 0:m.toLocaleString())||"N/A"),1)]),a.activeTab.metadata.connection?(g(),N("div",Go,[h(r,{name:"hugeicons:plug-socket",class:"size-4 text-muted-foreground"}),o[5]||(o[5]=f("span",{class:"text-muted-foreground"},"Connection:",-1)),f("span",Yo,D(a.activeTab.metadata.connection.name||"Unknown"),1)])):U("",!0)]),f("div",Jo,[o[6]||(o[6]=f("div",{class:"text-sm text-muted-foreground mb-2"},"Query:",-1)),h(l,{code:a.activeTab.metadata.statementQuery||""},null,8,["code"])]),(c=a.activeTab.metadata.fieldDefs)!=null&&c.length?(g(),N("div",Zo,[o[7]||(o[7]=f("div",{class:"text-sm text-muted-foreground mb-2"},"Fields:",-1)),f("div",Xo,[(g(!0),N(se,null,le(a.activeTab.metadata.fieldDefs,p=>(g(),N("span",{key:p.name,class:"text-xs bg-muted px-2 py-1 rounded"},D(p.name),1))),128))])])):U("",!0)])}}}),tr={class:"h-full flex flex-col flex-1 overflow-hidden"},sr=X({__name:"ResultTabRawView",props:{formattedData:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},setup(s){const e=s;return(t,n)=>{const a=lt;return g(),N("div",tr,[e.formattedData.length===0&&!t.executeLoading&&!t.isStreaming?(g(),A(a,{key:0,title:"No Raw Data",desc:"The query returned no records to display as JSON."})):(g(),A(u(oa),{key:1,modelValue:e.formattedData,mode:"text",readOnly:!0,navigationBar:!1,class:"h-full"},null,8,["modelValue"]))])}}}),nr=X({__name:"RawQueryContextMenu",props:{cellContextMenu:{},cellHeaderContextMenu:{},data:{},selectedRows:{},tableName:{},schemaName:{}},emits:["onClearContextMenu"],setup(s,{emit:e}){const t=s,n=e,a=O(()=>{var y,x,S,$;return((x=(y=t.cellContextMenu)==null?void 0:y.column)==null?void 0:x.getColId())??(($=(S=t.cellHeaderContextMenu)==null?void 0:S.column)==null?void 0:$.getColId())}),o=O(()=>{var y,x,S;return((y=t.cellContextMenu)==null?void 0:y.column.getColDef().headerName)??((S=(x=t.cellHeaderContextMenu)==null?void 0:x.column)==null?void 0:S.getColDef().headerName)??""}),r=y=>{Ht(t.selectedRows||[],o.value??"",y)},l=y=>{Ht(t.data||[],o.value??"",y)},i=y=>pt(t.selectedRows||[],t.tableName||"table_data",y,t.schemaName),d=y=>pt(t.data||[],t.tableName||"table_data",y,t.schemaName),m=y=>Ut(t.selectedRows||[],t.tableName||"table_data",y,"selected",t.schemaName),c=y=>Ut(t.data||[],t.tableName||"table_data",y,"all",t.schemaName),p=()=>{var x;const y=(x=t.cellContextMenu)==null?void 0:x.value;if(y!==void 0){if(typeof y=="object")return Qt(JSON.stringify(y));Qt(String(y))}},C=()=>{var y;if(t.cellContextMenu){const x=(y=t.cellContextMenu)==null?void 0:y.data;pt([x],t.tableName||"table_data","csv-no-header",t.schemaName)}},w=O(()=>{var P;const y=!!t.cellContextMenu,x=t.selectedRows.length>0,S=t.selectedRows.length,$=((P=t.data)==null?void 0:P.length)||0,Q=!!a.value,M=[{type:q.LABEL,title:`${S} selected`,condition:x&&y},{type:q.ACTION,title:"Copy as text",icon:"hugeicons:file-01",select:()=>r("list"),condition:x&&y},{type:q.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>r("json"),condition:x&&y},{type:q.SEPARATOR,condition:x&&y},{type:q.LABEL,title:"All data in column"},{type:q.ACTION,title:"Copy as text",icon:"hugeicons:file-01",select:()=>l("list")},{type:q.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>l("json")}],T=[{type:q.LABEL,title:`${S} selected row(s)`,condition:x},{type:q.ACTION,title:"Copy as CSV/TSV",icon:"hugeicons:csv-02",select:()=>i("csv-no-header"),condition:x},{type:q.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>i("json"),condition:x},{type:q.ACTION,title:"Copy as SQL",icon:"hugeicons:database",select:()=>i("sql"),condition:x},{type:q.SEPARATOR,condition:x},{type:q.LABEL,title:"All rows"},{type:q.ACTION,title:"Copy as CSV/TSV",icon:"hugeicons:csv-02",select:()=>d("csv-no-header")},{type:q.ACTION,title:"Copy as JSON",icon:"hugeicons:code",select:()=>d("json")},{type:q.ACTION,title:"Copy as SQL",icon:"hugeicons:database",select:()=>d("sql")}],V=[{type:q.LABEL,title:`${S} selected row${S>1?"s":""}`,condition:x},{type:q.ACTION,title:"Export as CSV",icon:"hugeicons:csv-01",select:()=>m("csv-no-header"),condition:x},{type:q.ACTION,title:"Export as CSV (have headers)",icon:"hugeicons:csv-01",select:()=>m("csv-with-header"),condition:x},{type:q.ACTION,title:"Export as JSON",icon:"hugeicons:code",select:()=>m("json"),condition:x},{type:q.ACTION,title:"Export as SQL",icon:"hugeicons:database",select:()=>m("sql"),condition:x},{type:q.SEPARATOR,condition:x},{type:q.LABEL,title:`All ${$.toLocaleString()} row${$!==1?"s":""}`},{type:q.ACTION,title:"Export as CSV",icon:"hugeicons:csv-01",select:()=>c("csv-no-header")},{type:q.ACTION,title:"Export as CSV (have headers)",icon:"hugeicons:csv-01",select:()=>c("csv-with-header")},{type:q.ACTION,title:"Export as JSON",icon:"hugeicons:code",select:()=>c("json")},{type:q.ACTION,title:"Export as SQL",icon:"hugeicons:database",select:()=>c("sql")}];return[{type:q.ACTION,title:"Copy current cell",icon:"hugeicons:copy-02",select:p,condition:y},{type:q.ACTION,title:"Copy current row",icon:"hugeicons:copy-02",select:C,condition:x&&y},{type:q.SEPARATOR,condition:y},{type:q.SUBMENU,title:"Copy column",icon:"hugeicons:layout-3-column",items:M,condition:Q,desc:o.value||"Select a column"},{type:q.SUBMENU,title:"Copy row(s)",icon:"hugeicons:layout-3-row",items:T},{type:q.SEPARATOR},{type:q.SUBMENU,title:"Export",icon:"hugeicons:file-download",items:V}]});return(y,x)=>(g(),A(u(Kn),{contextMenuItems:u(w),onOnClearContextMenu:x[0]||(x[0]=S=>n("onClearContextMenu"))},{default:v(()=>[he(y.$slots,"default")]),_:3},8,["contextMenuItems"]))}}),ar={class:"h-full w-full"},or=X({__name:"ResultTabResultView",props:{activeTab:{},activeTabColumns:{},formattedData:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},setup(s){const e=s,t=K(),n=K([]),a=d=>{n.value=d},o=O(()=>n.value||[]),r=O(()=>{var d;return wo(e.activeTab.metadata.command||"",e.activeTab.metadata.rowCount||0,(d=e.activeTab.metadata.connection)==null?void 0:d.type)}),l=O(()=>r.value.isMutation),i=O(()=>r.value.message);return(d,m)=>{var C,w;const c=lt,p=gs;return g(),N("div",ar,[d.activeTab.result.length===0&&u(l)&&!d.executeLoading&&!d.isStreaming?(g(),A(c,{key:0,desc:u(i),hiddenIcon:"",class:"h-full"},null,8,["desc"])):d.activeTab.result.length===0&&!d.executeLoading&&!d.isStreaming?(g(),A(c,{key:1,title:"No Results",desc:"The query returned no records.",class:"h-full"})):(g(),A(nr,{key:2,data:d.formattedData||[],selectedRows:u(o)||[],cellContextMenu:(C=u(t))==null?void 0:C.cellContextMenu,cellHeaderContextMenu:(w=u(t))==null?void 0:w.cellHeaderContextMenu,onOnClearContextMenu:m[0]||(m[0]=y=>{var x;return(x=u(t))==null?void 0:x.clearCellContextMenu()})},{default:v(()=>[h(p,{ref_key:"rawQueryTableRef",ref:t,columns:d.activeTabColumns,data:d.formattedData||[],selectedRows:u(n),onOnSelectedRows:a,class:"h-full","skip-re-column-size":"",columnKeyBy:"field"},null,8,["columns","data","selectedRows"])]),_:1},8,["data","selectedRows","cellContextMenu","cellHeaderContextMenu"]))])}}});var et=(s=>(s.GRID="grid",s.TIMELINE="time-line",s.RAW="raw",s))(et||{});const rr=[{value:"time-line",label:"Timeline",icon:"hugeicons:chart-line-data-01"},{value:"grid",label:"Grid",icon:"hugeicons:grid-table"},{value:"raw",label:"Raw",icon:"hugeicons:3rd-bracket"}],lr={class:"flex items-center justify-between px-3 py-2 border-b shrink-0"},ir={class:"flex items-center gap-3 min-w-0"},ur={class:"flex items-center gap-2 flex-wrap"},cr={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},dr={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},mr={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},pr={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},fr={class:"flex flex-col gap-1 max-w-[250px] sm:max-w-xs"},hr={class:"text-[11px] text-muted-foreground list-disc pl-3 break-words whitespace-normal"},vr={class:"flex items-center gap-2 shrink-0"},gr=X({__name:"ExplainPlanHeader",props:Pt({summaryStats:{},isExpanded:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:Pt(["toggle-expand"],["update:modelValue"]),setup(s,{emit:e}){const t=e,n=sn(s,"modelValue");return(a,o)=>{const r=me,l=nn,i=ye,d=xe,m=be,c=rn,p=on,C=an,w=ze;return g(),N("div",lr,[f("div",ir,[h(r,{name:"hugeicons:analytics-up",class:"size-4 text-muted-foreground"}),o[6]||(o[6]=f("span",{class:"text-sm font-medium"},"Execution Plan",-1)),f("div",ur,[a.summaryStats.executionTime!==void 0?(g(),A(l,{key:0,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:v(()=>[h(r,{name:"hugeicons:clock-01",class:"size-3"}),I(" "+D(u(Qe)(a.summaryStats.executionTime)),1)]),_:1})):U("",!0),a.summaryStats.planningTime!==void 0?(g(),A(l,{key:1,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:v(()=>[I(" Planning: "+D(u(Qe)(a.summaryStats.planningTime)),1)]),_:1})):U("",!0),a.summaryStats.nodeCount>0?(g(),A(m,{key:2},{default:v(()=>{var y;return[h(i,{"as-child":""},{default:v(()=>[h(l,{variant:"outline",class:"text-[11px] h-5 gap-1 cursor-help"},{default:v(()=>[I(D(a.summaryStats.nodeCount)+" nodes ",1)]),_:1})]),_:1}),(y=a.summaryStats.allNodes)!=null&&y.length?(g(),A(d,{key:0},{default:v(()=>[f("div",cr,[o[2]||(o[2]=f("span",{class:"font-medium text-xs"},"Nodes:",-1)),f("ul",dr,[(g(!0),N(se,null,le(a.summaryStats.allNodes,x=>(g(),N("li",{key:x.id},D(x.label),1))),128))])])]),_:1})):U("",!0)]}),_:1})):(g(),A(l,{key:3,variant:"outline",class:"text-[11px] h-5 gap-1"},{default:v(()=>o[3]||(o[3]=[I(" 0 nodes ")])),_:1})),a.summaryStats.expensiveCount>0?(g(),A(m,{key:4},{default:v(()=>{var y;return[h(i,{"as-child":""},{default:v(()=>[h(l,{variant:"outline",class:"text-[11px] h-5 gap-1 border-amber-300 text-amber-700 dark:text-amber-400 cursor-help"},{default:v(()=>[I(D(a.summaryStats.expensiveCount)+" expensive ",1)]),_:1})]),_:1}),(y=a.summaryStats.expensiveNodes)!=null&&y.length?(g(),A(d,{key:0},{default:v(()=>[f("div",mr,[o[4]||(o[4]=f("span",{class:"font-medium text-xs"},"Expensive Nodes:",-1)),f("ul",pr,[(g(!0),N(se,null,le(a.summaryStats.expensiveNodes,x=>(g(),N("li",{key:x.id},D(x.label),1))),128))])])]),_:1})):U("",!0)]}),_:1})):U("",!0),a.summaryStats.slowCount>0?(g(),A(m,{key:5},{default:v(()=>{var y;return[h(i,{"as-child":""},{default:v(()=>[h(l,{variant:"outline",class:"text-[11px] h-5 gap-1 border-red-300 text-red-700 dark:text-red-400 cursor-help"},{default:v(()=>[I(D(a.summaryStats.slowCount)+" slowest ",1)]),_:1})]),_:1}),(y=a.summaryStats.slowNodes)!=null&&y.length?(g(),A(d,{key:0},{default:v(()=>[f("div",fr,[o[5]||(o[5]=f("span",{class:"font-medium text-xs"},"Slowest Node(s):",-1)),f("ul",hr,[(g(!0),N(se,null,le(a.summaryStats.slowNodes,x=>(g(),N("li",{key:x.id},D(x.label),1))),128))])])]),_:1})):U("",!0)]}),_:1})):U("",!0)])]),f("div",vr,[h(C,{modelValue:n.value,"onUpdate:modelValue":o[0]||(o[0]=y=>n.value=y),class:"gap-0"},{default:v(()=>[h(p,{class:"h-6"},{default:v(()=>[(g(!0),N(se,null,le(u(rr),y=>(g(),A(c,{key:y.value,value:y.value,class:"text-xs px-1 rounded-sm cursor-pointer"},{default:v(()=>[h(r,{name:y.icon,class:"size-3.5!"},null,8,["name"]),I(" "+D(y.label),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),h(w,{variant:"outline",size:"iconSm",onClick:o[1]||(o[1]=y=>t("toggle-expand"))},{default:v(()=>[h(r,{name:a.isExpanded?"hugeicons:arrow-shrink":"hugeicons:arrow-expand",class:"size-3.5"},null,8,["name"])]),_:1})])])}}}),yr={class:"flex items-center text-xs h-full w-full overflow-hidden whitespace-nowrap"},xr={key:0,class:"text-muted-foreground shrink-0 whitespace-pre",style:{"font-family":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important"}},br={key:1,class:"font-normal shrink-0"},Cr={key:2,class:"text-xxs pl-0.5 text-muted-foreground truncate shrink min-w-0"},Sr=X({__name:"ExplainOperationCell",props:{params:{}},setup(s){const e=s,t=O(()=>{var n;return((n=e.params)==null?void 0:n.data)??{}});return(n,a)=>(g(),N("div",yr,[u(t).treePrefix?(g(),N("span",xr,D(u(t).treePrefix),1)):U("",!0),u(t).nodeType?(g(),N("span",br,D(u(t).nodeType),1)):U("",!0),u(t).contextLabel?(g(),N("span",Cr,D(u(t).contextLabel),1)):U("",!0)]))}}),Yt={"Seq Scan":"scan","Index Scan":"scan","Index Only Scan":"scan","Bitmap Index Scan":"scan","Bitmap Heap Scan":"scan","CTE Scan":"scan","Function Scan":"scan","Values Scan":"scan","Subquery Scan":"scan",Aggregate:"agg",HashAggregate:"agg",GroupAggregate:"agg",Sort:"sort","Incremental Sort":"sort",Hash:"hash","Hash Join":"join","Merge Join":"join","Nested Loop":"join"},re=s=>s?String(s).replace(/^[\[]|[\]]$/g,"").replace(/"/g,"").trim():"",wr=s=>s==="Seq Scan"?"bad":Yt[s]?Yt[s]:s.includes("Join")?"join":s.includes("Scan")?"scan":s.includes("Aggregate")?"agg":s.includes("Sort")?"sort":"other",Jt=(s,e,t)=>{for(let n=e+1;n<s.length;n++){const a=s[n].depth??0;if(a<t)return!1;if(a===t)return!0}return!1},_r=(s,e)=>{const n=s[e].depth??0;if(n===0)return"";const a=[];for(let r=1;r<n;r++)a.push(Jt(s,e,r)?"│ ":" ");const o=!Jt(s,e,n);return a.push(o?"└─ ":"├─ "),a.join("")},Er=s=>{const e=re(s.hashCond),t=re(s.mergeCond),n=re(s.joinFilter),a=re(s.joinType).toLowerCase();if(a||e||t||n){const y=e||t||n,x=a?`${a} `:"";return{label:y?`${x}on ${y}`.trim():`${x}join`.trim(),kind:"join"}}const o=re(s.indexCond),r=re(s.recheckCond),l=re(s.tidCond);if(o)return{label:`on ${o}`,kind:"relation"};if(r)return{label:`recheck: ${r}`,kind:"relation"};if(l)return{label:`tid: ${l}`,kind:"relation"};const i=re(s.sortKey);if(i)return{label:`by ${i}`,kind:"sort"};const d=re(s.groupKey),m=re(s.hashKey);if(d||m)return{label:`by ${d||m}`,kind:"group"};const c=re(s.oneTimeFilter);if(c)return{label:`one-time: ${c}`,kind:"relation"};const p=re(s.filter);if(p)return{label:`filter: ${p}`,kind:"relation"};const C=re(s.cteName);if(C)return{label:`cte: ${C}`,kind:"relation"};const w=re(s.subplanName);if(w)return{label:`subplan: ${w}`,kind:"relation"};if(s.relation){const y=s.alias&&s.alias!==s.relation?` (${s.alias})`:"";return{label:`on ${s.relation}${y}`,kind:"relation"}}return{label:"",kind:""}},Tr=s=>[...s].map(e=>{var d,m;const t=e["Plan Rows"]||0,n=e["Actual Rows"]||0,a=e.estimateRatio,o=e["Actual Startup Time"]||0,r=e["Plan Width"]||0,l=e.rowEstimateAccuracy||"accurate",i=[`Node: ${e["Node Type"]}`,e["Relation Name"]?`Relation: ${e["Relation Name"]}`:"",`Depth: ${e.depth}`,`Startup time: ${o.toFixed(3)} ms`,`Total time: ${(e["Actual Total Time"]||0).toFixed(3)} ms`,`Actual rows: ${n.toLocaleString()}`,`Plan rows: ${t.toLocaleString()}`,a!==void 0?`Estimate ratio: ${a}x (${l})`:"Estimate ratio: -",`Total cost: ${(e["Total Cost"]||0).toFixed(2)}`,`Plan width: ${r}`,`Loops: ${(e["Actual Loops"]||0).toLocaleString()}`,`Slowest: ${e.isSlowest?"yes":"no"}`,`Expensive: ${e.isExpensive?"yes":"no"}`].filter(Boolean).join(`
|
|
10
|
-
`);return{id:e.id,order:e.index,nodeType:e["Node Type"],relation:e["Relation Name"],alias:e.Alias,sortKey:((d=e["Sort Key"])==null?void 0:d.join(", "))??"",joinType:e["Join Type"]??"",groupKey:((m=e["Group Key"])==null?void 0:m.join(", "))??"",hashKey:"",filter:e.Filter??"",joinFilter:"",oneTimeFilter:"",indexCond:"",hashCond:e["Hash Cond"]??"",mergeCond:e["Merge Cond"]??"",recheckCond:"",tidCond:"",cteName:"",subplanName:"",timeMs:e["Actual Total Time"]||0,rows:n,planRows:t,estimateRatio:a,cost:e["Total Cost"]||0,width:r,loops:e["Actual Loops"]||0,depth:e.depth,indentPx:e.depth*16,hitReadRatio:e.hitReadRatio,isSlowest:e.isSlowest,isExpensive:e.isExpensive,tooltipLines:i}}),Rr=s=>{const e=s.reduce((t,n)=>t+(n.timeMs||0),0)||1;return s.map((t,n)=>{const a=_r(s,n),{label:o,kind:r}=Er(t),l=t.isSlowest?"slowest":t.isExpensive?"expensive":"normal";return{order:t.order,timeMs:t.timeMs,rows:t.rows,planRows:t.planRows,estimateRatioValue:t.estimateRatio,cost:t.cost,width:t.width,loops:t.loops,hitReadRatio:t.hitReadRatio,isSlowest:t.isSlowest,isExpensive:t.isExpensive,orderLabel:`${t.order}`,queryPercentLabel:`${(t.timeMs/e*100).toFixed(2)}%`,timeSpentLabel:`${t.timeMs.toFixed(3)} ms`,rowsLabel:t.rows.toLocaleString(),planRowsLabel:t.planRows.toLocaleString(),estimateLabel:t.estimateRatio!==void 0?`${t.estimateRatio}×`:"-",costLabel:t.cost.toFixed(2),widthLabel:t.width,loopsLabel:t.loops.toLocaleString(),hitReadRatioLabel:t.hitReadRatio!==void 0?`${(t.hitReadRatio*100).toFixed(2)}%`:"-",statusLabel:l,treePrefix:a,nodeType:t.nodeType,nodeTypeCategory:wr(t.nodeType),contextLabel:o,contextKind:r}})},$r={class:"h-full p-2"},zr=X({__name:"ExplainGridPane",props:{nodes:{}},setup(s){const e=s,t=O(()=>Tr(e.nodes)),n=O(()=>Rr(t.value)),a=O(()=>[{headerName:"#",field:"orderLabel",width:30,sortable:!0,resizable:!0,filter:!1,cellClass:"cellCenter"},{headerName:"Operation",field:"operationLabel",width:350,sortable:!1,resizable:!0,filter:!0,cellRenderer:"ExplainOperationCell",cellClass:"operation-cell",valueGetter:r=>`${r.data.treePrefix}${r.data.nodeType} ${r.data.contextLabel}`},{headerName:"Status",field:"statusLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:r=>{const l=r.value;return l==="slowest"?"cellCenter bg-red-300! dark:bg-red-900":l==="expensive"?"cellCenter bg-orange-100! dark:bg-orange-900":"cellCenter"}},{headerName:"Time Spent",field:"timeSpentLabel",width:110,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"% of Query",field:"queryPercentLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Actual Rows",field:"rowsLabel",width:96,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Plan Rows",field:"planRowsLabel",width:88,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Estim",field:"estimateLabel",width:76,sortable:!0,resizable:!0,filter:!0,cellClass:r=>{var i;const l=Number((i=r.data)==null?void 0:i.estimateRatioValue);return Number.isFinite(l)?l<.1||l>10?"cellCenter bg-red-200 dark:bg-red-900":l>=.1&&l<.5||l>2&&l<=10?"cellCenter bg-orange-100 dark:bg-orange-900":"cellCenter ":"cellCenter "}},{headerName:"Cost",field:"costLabel",width:88,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Hit Read Ratio",field:"hitReadRatioLabel",width:110,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Width",field:"widthLabel",width:72,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "},{headerName:"Loops",field:"loopsLabel",width:72,sortable:!0,resizable:!0,filter:!0,cellClass:"cellCenter "}]),o={ExplainOperationCell:Sr};return(r,l)=>(g(),N("div",$r,[h(u(gs),{class:"h-full",columns:[],data:[],"column-key-by":"index","skip-re-column-size":"","has-hash-index":!1,"override-column-defs":u(a),"override-row-data":u(n),"external-components":o},null,8,["override-column-defs","override-row-data"])]))}}),kr={class:"h-full p-2"},Lr={class:"rounded-lg border p-2 flex flex-col h-full min-h-0"},Ar={class:"flex justify-between items-center mb-4"},Mr={class:"text-sm font-bold text-muted-foreground uppercase flex items-center gap-2"},Nr={key:0,class:"h-full grid place-items-center text-sm text-muted-foreground"},Ir={key:1,class:"flex-1 overflow-auto relative"},Or={class:"min-w-[680px] text-xs"},Pr={class:"flex border-b pb-2 mb-2 sticky top-0 bg-background z-10 font-medium text-muted-foreground"},Dr={class:"flex-1 relative h-4"},Fr={class:"absolute right-0"},Vr={class:"pb-2"},qr=["onMouseenter"],Br={class:"w-[28%] min-w-[190px] max-w-[260px] px-2 flex items-center overflow-hidden"},jr={class:"truncate flex items-center gap-1"},Hr={class:"font-mono text-xxs text-right shrink-0 text-muted-foreground"},Ur={class:"flex flex-col truncate"},Qr=["title"],Wr={key:0,class:"text-muted-foreground text-xxs truncate"},Kr={key:0},Gr={class:"flex-1 relative h-6 mx-2"},Yr={class:"space-y-2 text-xs"},Jr={class:"font-semibold flex items-center gap-1"},Zr={class:"grid grid-cols-2 gap-x-3 gap-y-1 text-[11px]"},Xr={class:"font-mono"},el={class:"font-mono"},tl={class:"font-mono"},sl={class:"font-mono"},nl={class:"font-mono"},al={class:"font-mono"},ol={class:"font-mono"},rl={class:"font-mono"},ll={key:0,class:"text-[11px] text-muted-foreground"},il={key:0},Ye=14,ul=X({__name:"ExplainTimelineChartPane",props:{nodes:{},totalTime:{}},setup(s){const e=s,t=K(null),n=O(()=>{const c=[...e.nodes].filter(C=>typeof C["Actual Startup Time"]=="number"&&typeof C["Actual Total Time"]=="number").map(C=>{const w=C["Actual Startup Time"]||0,y=C["Actual Total Time"]||0,x=Math.max(0,y-w);return{id:C.id,nodeType:C["Node Type"],relation:C["Relation Name"],alias:C.Alias,depth:C.depth,actualRows:C["Actual Rows"],actualLoops:C["Actual Loops"],planRows:C["Plan Rows"],totalCost:C["Total Cost"],start:w,end:y,duration:x}}),p=(C,w)=>{for(let y=C+1;y<c.length;y+=1){const x=c[y].depth;if(x<w)return!1;if(x===w)return!0}return!1};return c.map((C,w)=>{const y=[];for(let x=1;x<C.depth;x+=1)p(w,x)&&y.push(x);return{...C,continuationLevels:y,hasNextSibling:C.depth>0?p(w,C.depth):!1}})}),a=O(()=>{const c=n.value.length?Math.max(...n.value.map(p=>p.end)):0;return Math.max(e.totalTime||0,c,1)}),o=(c,p)=>{const C=a.value>0?a.value:1,w=c/C*100,y=Math.max(p/C*100,.5);return{left:`${w}%`,width:`${y}%`}},r=c=>{const p=a.value>0?a.value:1;return(c/p*100).toFixed(2)},l=c=>`${Math.max(c,0)*Ye}px`,i=c=>`${(c-1)*Ye+Ye/2}px`,d=`${Ye/2}px`,m=c=>c==="Seq Scan"?"bg-gray-400 dark:bg-gray-600":c.includes("Scan")?"bg-gray-300 dark:bg-gray-700":c.includes("Join")?"bg-gray-500 dark:bg-gray-500":c==="Sort"?"bg-gray-300 dark:bg-gray-600":(c.includes("Aggregate"),"bg-gray-400 dark:bg-gray-600");return(c,p)=>{const C=me,w=ye,y=xe,x=be;return g(),N("div",kr,[f("div",Lr,[f("div",Ar,[f("h3",Mr,[h(C,{name:"hugeicons:clock-01",class:"size-4"}),p[1]||(p[1]=I(" Execution Plan Timeline "))]),p[2]||(p[2]=f("span",{class:"text-xs text-muted-foreground"},"Hover for details",-1))]),u(n).length===0?(g(),N("div",Nr," No timeline data available ")):(g(),N("div",Ir,[f("div",Or,[f("div",Pr,[p[7]||(p[7]=f("div",{class:"w-[28%] min-w-[190px] max-w-[260px] pl-2"}," Node Hierarchy ",-1)),f("div",Dr,[p[3]||(p[3]=f("div",{class:"absolute left-0"},"0ms",-1)),f("div",Fr,D(u(Ke)(u(a))),1),p[4]||(p[4]=f("div",{class:"absolute left-1/4 border-l h-full"},null,-1)),p[5]||(p[5]=f("div",{class:"absolute left-1/2 border-l h-full"},null,-1)),p[6]||(p[6]=f("div",{class:"absolute left-3/4 border-l h-full"},null,-1))])]),f("div",Vr,[(g(!0),N(se,null,le(u(n),S=>(g(),N("div",{key:S.id,class:ge(["flex items-center group rounded transition-colors hover:bg-muted",u(t)===S.id?"bg-muted/40":""]),onMouseenter:$=>t.value=S.id,onMouseleave:p[0]||(p[0]=$=>t.value=null)},[f("div",Br,[f("div",{class:"relative shrink-0 h-7",style:Fe({width:l(S.depth)})},[(g(!0),N(se,null,le(S.continuationLevels,$=>(g(),N("div",{key:`${S.id}-v-${$}`,class:"absolute top-0 bottom-0 border-l border-dashed border-muted-foreground/35",style:Fe({left:i($)})},null,4))),128)),S.depth>0?(g(),N(se,{key:0},[f("div",{class:"absolute top-0 border-l border-dashed border-muted-foreground/45",style:Fe({left:i(S.depth),height:S.hasNextSibling?"100%":"50%"})},null,4),f("div",{class:"absolute top-1/2 -translate-y-1/2 border-t border-dashed border-muted-foreground/45",style:Fe({left:i(S.depth),width:d})},null,4)],64)):U("",!0)],4),f("div",jr,[f("span",Hr," #"+D(S.id.replace("ep-","")),1),f("div",Ur,[f("span",{class:"truncate font-medium text-sm",title:S.nodeType},D(S.nodeType),9,Qr),S.relation?(g(),N("span",Wr,[I(D(S.relation)+" ",1),S.alias&&S.alias!==S.relation?(g(),N("span",Kr,"("+D(S.alias)+")",1)):U("",!0)])):U("",!0)])])]),f("div",Gr,[p[16]||(p[16]=ln('<div class="absolute top-0 bottom-0 left-0 w-px bg-muted"></div><div class="absolute top-0 bottom-0 right-0 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-1/4 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-1/2 w-px bg-muted"></div><div class="absolute top-0 bottom-0 left-3/4 w-px bg-muted"></div>',5)),h(x,null,{default:v(()=>[h(w,{"as-child":""},{default:v(()=>[f("div",{class:ge(["absolute top-1 bottom-1 rounded-sm transition-all shadow-sm opacity-90 cursor-default",[m(S.nodeType),u(t)===S.id?"brightness-105 ring-2 ring-border z-10":""]]),style:Fe(o(S.start,S.duration))},null,6)]),_:2},1024),h(y,{side:"top","side-offset":8,class:"max-w-[360px]"},{default:v(()=>{var $,Q,M,T;return[f("div",Yr,[f("div",Jr,[h(C,{name:"hugeicons:flow-square",class:"size-3.5"}),I(" "+D(S.nodeType),1)]),f("div",Zr,[p[8]||(p[8]=f("span",{class:"text-muted-foreground"},"Start",-1)),f("span",Xr,D(u(Ke)(S.start)),1),p[9]||(p[9]=f("span",{class:"text-muted-foreground"},"End",-1)),f("span",el,D(u(Ke)(S.end)),1),p[10]||(p[10]=f("span",{class:"text-muted-foreground"},"Duration",-1)),f("span",tl,D(u(Ke)(S.duration)),1),p[11]||(p[11]=f("span",{class:"text-muted-foreground"},"Share",-1)),f("span",sl,D(r(S.duration))+"%",1),p[12]||(p[12]=f("span",{class:"text-muted-foreground"},"Rows",-1)),f("span",nl,D((($=S.actualRows)==null?void 0:$.toLocaleString())??"-"),1),p[13]||(p[13]=f("span",{class:"text-muted-foreground"},"Plan Rows",-1)),f("span",al,D(((Q=S.planRows)==null?void 0:Q.toLocaleString())??"-"),1),p[14]||(p[14]=f("span",{class:"text-muted-foreground"},"Loops",-1)),f("span",ol,D(((M=S.actualLoops)==null?void 0:M.toLocaleString())??"-"),1),p[15]||(p[15]=f("span",{class:"text-muted-foreground"},"Total Cost",-1)),f("span",rl,D(((T=S.totalCost)==null?void 0:T.toFixed(2))??"-"),1)]),S.relation?(g(),N("div",ll,[I(" Relation: "+D(S.relation)+" ",1),S.alias&&S.alias!==S.relation?(g(),N("span",il,"("+D(S.alias)+")",1)):U("",!0)])):U("",!0)])]}),_:2},1024)]),_:2},1024)])],42,qr))),128))])])]))])])}}}),cl={class:"h-full overflow-auto p-2"},dl=X({__name:"ExplainRawPane",props:{rawText:{}},setup(s){const e=s,t=O(()=>{const n=e.rawText.trim();return n.startsWith("{")||n.startsWith("[")?"json":"sql"});return(n,a)=>{const o=At;return g(),N("div",cl,[h(o,{code:n.rawText,language:t.value,"max-height":"100%"},null,8,["code","language"])])}}});let rt=0;const ml=()=>(rt+=1,`ep-${rt}`),Zt=s=>s==null?"":typeof s=="string"?s:typeof s=="number"||typeof s=="boolean"?String(s):JSON.stringify(s),pl=s=>{const e=(s["Shared Hit Blocks"]??0)+(s["Local Hit Blocks"]??0),t=(s["Shared Read Blocks"]??0)+(s["Local Read Blocks"]??0),n=e+t;if(!(n<=0))return Number((e/n).toFixed(4))},fl=(s,e)=>{const t=e["Plan Rows"],n=e["Actual Rows"];if(t!==void 0&&n!==void 0&&t>0&&n>=0){s.estimateRatio=Number((n/t).toFixed(2));const a=n/t;a>10?s.rowEstimateAccuracy="underestimate":a<.1?s.rowEstimateAccuracy="overestimate":s.rowEstimateAccuracy="accurate"}s.hitReadRatio=pl(e),(e["Total Cost"]!==void 0&&e["Total Cost"]>1e3||e["Actual Total Time"]!==void 0&&e["Actual Total Time"]>100)&&(s.isExpensive=!0)},hl=s=>{let e=0,t="";for(const a of s){const o=a.children.reduce((l,i)=>l+(i["Actual Total Time"]??0)*(i["Actual Loops"]??1),0)/(a["Actual Loops"]??1),r=Math.max(0,(a["Actual Total Time"]??0)-o);r>e&&(e=r,t=a.id)}const n=s.find(a=>a.id===t);n&&(n.isSlowest=!0)},Cs=(s,e,t)=>{const{Plans:n,...a}=s,o=s["Node Type"]||"Unknown Node",r=s["Relation Name"],l={...a,id:ml(),index:rt,label:r?`${o} on ${r}`:o,estimateRatio:void 0,hitReadRatio:void 0,isExpensive:!1,isSlowest:!1,rowEstimateAccuracy:void 0,depth:e,children:(n??[]).map(i=>Cs(i,e+1,t))};return t.push(l),fl(l,s),l},vl=(s,e)=>{rt=0;const t=[],n=Cs(s.Plan,0,t),a={"Planning Time":s["Planning Time"],"Execution Time":s["Execution Time"],totalCost:n["Total Cost"],triggersInfo:(s.Triggers??[]).map(Zt),jitInfo:[],settingsInfo:s.Settings?Object.entries(s.Settings).map(([r,l])=>`${r}: ${Zt(l)}`):[],rawText:e};hl(t);const o=[...t].sort((r,l)=>r.index-l.index);return{root:n,summary:a,allNodes:o}},gl=s=>{const e={triggersInfo:[],jitInfo:[],settingsInfo:[],rawText:s},t=s.match(/Planning Time:\s*(\d+\.?\d*)\s*ms/i),n=s.match(/Execution Time:\s*(\d+\.?\d*)\s*ms/i);return t&&(e["Planning Time"]=Number.parseFloat(t[1])),n&&(e["Execution Time"]=Number.parseFloat(n[1])),{root:null,summary:e,allNodes:[]}},xt=s=>{if(!s)return null;if(typeof s=="string")try{return xt(JSON.parse(s))}catch{return null}return Array.isArray(s)?s.length?xt(s[0]):null:typeof s=="object"&&s!==null&&"Plan"in s&&typeof s.Plan=="object"?s:null},Ss=(s,e)=>{var t;if(!(s!=null&&s.length))return null;if(Array.isArray(s[0]))return s[0][0]??null;if(typeof s[0]=="object"&&s[0]!==null){const n=s[0],a=Object.keys(n).find(o=>o.toUpperCase()==="QUERY PLAN")||((t=e==null?void 0:e[0])==null?void 0:t.name)||Object.keys(n)[0];return a?n[a]??null:null}return s[0]??null},yl=(s,e)=>{const t=Ss(s,e);return t==null?"":typeof t=="string"?t:JSON.stringify(t,null,2)},xl=s=>{const e=typeof s=="string"?s:JSON.stringify(s,null,2),t=xt(s);return t?vl(t,e):gl(e)},bl={class:"h-full min-h-0"},Cl={key:0,class:"h-full flex flex-col items-center justify-center gap-2 text-muted-foreground"},Sl=X({__name:"ResultTabExplainView",props:{activeTab:{}},setup(s){const e=s,t=K(et.GRID),n=K(!1),a=O(()=>Ss(e.activeTab.result,e.activeTab.metadata.fieldDefs)),o=O(()=>yl(e.activeTab.result,e.activeTab.metadata.fieldDefs)),r=O(()=>xl(a.value)),l=O(()=>{const i=r.value.allNodes,d=i.filter(c=>c.isExpensive),m=i.filter(c=>c.isSlowest);return{planningTime:r.value.summary["Planning Time"],executionTime:r.value.summary["Execution Time"],nodeCount:i.length,expensiveCount:d.length,slowCount:m.length,allNodes:i,expensiveNodes:d,slowNodes:m}});return(i,d)=>{const m=gr,c=me,p=zr,C=ul,w=dl;return g(),N("div",bl,[u(n)?(g(),N("div",{key:0,class:"fixed inset-0 z-40 bg-background/70 backdrop-blur-[1px]",onClick:d[0]||(d[0]=y=>n.value=!1)})):U("",!0),f("div",{class:ge(["flex flex-col",u(n)?"fixed z-50 left-1/2 top-1/2 h-[90vh] w-[95vw] -translate-x-1/2 -translate-y-1/2 rounded-xl border bg-background shadow-2xl":"h-full min-h-0 overflow-hidden"])},[h(m,{modelValue:u(t),"onUpdate:modelValue":d[1]||(d[1]=y=>ot(t)?t.value=y:null),"summary-stats":u(l),"is-expanded":u(n),onToggleExpand:d[2]||(d[2]=y=>n.value=!u(n))},null,8,["modelValue","summary-stats","is-expanded"]),f("div",{class:ge(["flex-1 min-h-0",u(n)?"overflow-hidden":"overflow-y-auto"])},[u(r).root?u(t)===u(et).GRID?(g(),A(p,{key:1,nodes:u(r).allNodes},null,8,["nodes"])):u(t)===u(et).TIMELINE?(g(),A(C,{key:2,nodes:u(r).allNodes,"total-time":u(l).executionTime},null,8,["nodes","total-time"])):(g(),A(w,{key:3,"raw-text":u(o)},null,8,["raw-text"])):(g(),N("div",Cl,[h(c,{name:"hugeicons:alert-02",class:"size-8 opacity-50"}),d[3]||(d[3]=f("p",{class:"text-sm"},"Could not parse execution plan",-1))]))],2)],2)])}}}),wl={class:"h-full flex w-full"},_l={key:0,class:"flex mt-7 [writing-mode:vertical-rl]"},El=["onClick"],Tl={class:"h-full w-full flex flex-col"},Rl={class:"flex items-end overflow-x-auto pt-0.5"},$l=["onClick","onContextmenu"],zl={class:"truncate text-xs font-medium"},kl=["onClick"],Ll={class:"h-full w-full border rounded-md rounded-tl-none overflow-hidden"},Al=X({__name:"RawQueryResultTabs",props:{executedResults:{},activeTabId:{},executeLoading:{type:Boolean},isStreaming:{type:Boolean}},emits:["update:activeTab","close-tab","close-other-tabs","close-tabs-to-right","update:view"],setup(s,{emit:e}){const t=s,n=e,a=K(null),o=O(()=>{if(!a.value)return!1;const x=Array.from(t.executedResults.keys()),S=x.indexOf(a.value);return S>=0&&S<x.length-1}),r=[{value:"result",label:"Result"},{value:"explain",label:"Explain"},{value:"raw",label:"Raw"},{value:"info",label:"Info"},{value:"error",label:"Errors"}],l=new Map,i=Ue([]);let d=null;const m=O(()=>t.activeTabId&&t.executedResults.get(t.activeTabId)||null),c=O(()=>{var x;return((x=m.value)==null?void 0:x.view)||"result"}),p=O(()=>{var x;return(x=m.value)!=null&&x.metadata.fieldDefs?m.value.metadata.fieldDefs.map((S,$)=>{var Q;return{index:$,originalName:S.name,aliasFieldName:S.name,queryFieldName:S.name,isPrimaryKey:!1,isForeignKey:!1,type:((Q=S.dataTypeID)==null?void 0:Q.toString())||"unknown",tableName:""}}):[]}),C=x=>{var T;const S=((T=x.result)==null?void 0:T.length)||0,$=`${x.id}_${S}`;if(l.has($))return l.get($);const Q=x.metadata.fieldDefs||[],M=Eo(x.result||[],Q);l.set($,M);for(const V of l.keys())V.startsWith(`${x.id}_`)&&V!==$&&l.delete(V);return M};de(m,x=>{d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{i.value=x?C(x):[],d=null})},{immediate:!0}),un(()=>{d&&cancelAnimationFrame(d)});const w=x=>{t.activeTabId&&n("update:view",t.activeTabId,x)},y=x=>!!x.metadata.executeErrors;return(x,S)=>{const $=me,Q=ye,M=xe,T=be,V=cs,P=lt;return g(),N("div",wl,[u(m)?(g(),N("div",_l,[(g(),N(se,null,le(r,E=>f("div",{key:E.value,onClick:j=>y(u(m))&&(E.value==="result"||E.value==="raw")||E.value==="error"&&!y(u(m))?null:w(E.value),class:ge(u(Ze)("border px-1 text-xs font-normal transition-colors",u(c)===E.value?"bg-muted border-transparent border-r-border":"border-transparent",E.value==="error"&&y(u(m))?"hover:bg-muted cursor-pointer":E.value==="explain"&&!u(m).metadata.statementQuery.startsWith("EXPLAIN")?null:"",E.value==="error"&&!y(u(m))?"opacity-40 cursor-not-allowed":"",(E.value==="result"||E.value==="raw")&&y(u(m))?"opacity-40 cursor-not-allowed":"",E.value==="explain"&&!u(m).metadata.statementQuery.startsWith("EXPLAIN")?"opacity-40 cursor-not-allowed":"",E.value==="error"&&!y(u(m))||(E.value==="result"||E.value==="raw")&&y(u(m))||E.value==="explain"&&!u(m).metadata.statementQuery.startsWith("EXPLAIN")?"":"hover:bg-muted cursor-pointer"))},D(E.label),11,El)),64))])):U("",!0),f("div",Tl,[f("div",Rl,[h(u(fs),null,{default:v(()=>[h(u(hs),{class:"flex items-end"},{default:v(()=>[(g(!0),N(se,null,le(x.executedResults,([E,j])=>(g(),A(T,{key:E},{default:v(()=>[h(Q,{"as-child":""},{default:v(()=>[f("div",{onClick:W=>x.$emit("update:activeTab",E),onContextmenu:W=>a.value=E,class:ge(u(Ze)("h-6! flex gap-0.5 rounded-t-md max-w-44 justify-start! items-center font-normal p-1! hover:[&>div]:opacity-100 transition-all duration-200 border rounded-b-none cursor-pointer relative",E===x.activeTabId?"border-b-transparent bg-background dark:bg-accent":"border-transparent bg-muted/30"))},[h($,{name:y(j)?"hugeicons:alert-02":"hugeicons:sql",class:ge(u(Ze)("min-w-4",y(j)?"text-red-500":""))},null,8,["name","class"]),f("div",zl," Query "+D(j.seqIndex)+" - "+D(j.metadata.statementQuery),1),f("div",{onClick:Rt(W=>x.$emit("close-tab",E),["stop"]),class:"hover:bg-accent h-5 w-5 flex items-center justify-center rounded-full opacity-0"},[h($,{name:"lucide:x",class:"stroke-[2.5]! size-3!"})],8,kl)],42,$l)]),_:2},1024),h(M,{class:"max-w-xl"},{default:v(()=>[f("p",null,D(j.metadata.statementQuery),1)]),_:2},1024)]),_:2},1024))),128))]),_:1}),u(a)?(g(),A(u(vs),{key:0,hideWhenDetached:"",class:"w-56"},{default:v(()=>[h(u(Xe),{onSelect:S[0]||(S[0]=E=>x.$emit("close-tab",u(a)))},{default:v(()=>S[4]||(S[4]=[I(" Close ")])),_:1}),h(u(Xe),{onSelect:S[1]||(S[1]=E=>x.$emit("close-other-tabs",u(a)))},{default:v(()=>S[5]||(S[5]=[I(" Close Others ")])),_:1}),h(u(Xe),{disabled:!u(o),onSelect:S[2]||(S[2]=E=>x.$emit("close-tabs-to-right",u(a)))},{default:v(()=>S[6]||(S[6]=[I(" Close to the Right ")])),_:1},8,["disabled"])]),_:1})):U("",!0)]),_:1})]),f("div",Ll,[x.executeLoading&&x.activeTabId?(g(),A(V,{key:0,visible:""})):U("",!0),u(m)?u(m)&&u(c)==="result"?(g(),A(or,{"active-tab":u(m),"active-tab-columns":u(p),"formatted-data":u(i),"execute-loading":x.executeLoading,"is-streaming":x.isStreaming,key:u(m).id},null,8,["active-tab","active-tab-columns","formatted-data","execute-loading","is-streaming"])):u(m)&&u(c)==="explain"?(g(),A(Sl,{key:3,"active-tab":u(m)},null,8,["active-tab"])):u(m)&&u(c)==="raw"?(g(),A(sr,{key:4,"formatted-data":u(i),"execute-loading":x.executeLoading,"is-streaming":x.isStreaming},null,8,["formatted-data","execute-loading","is-streaming"])):u(m)&&u(c)==="info"?(g(),A(er,{key:5,"active-tab":u(m)},null,8,["active-tab"])):u(m)&&u(c)==="error"?(g(),A(Oo,{key:6,"active-tab":u(m),onOnChangeView:S[3]||(S[3]=E=>w(E))},null,8,["active-tab"])):U("",!0):(g(),A(P,{key:1,title:"No results",desc:"Execute a query to see results"}))])])])}}});function Ml({query:s,dbConnectionString:e,type:t,providerKind:n,managedSqlite:a,params:o,onMeta:r,onRows:l,onDone:i,onError:d}){const m=new AbortController;let c=0;return(async()=>{var C;try{const w=await fetch("/api/query/raw-execute-stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:s,dbConnectionString:e,type:t,providerKind:n,managedSqlite:a,params:o||{}}),signal:m.signal});if(!w.ok){const $=await w.text();d==null||d($||`HTTP ${w.status}`);return}const y=(C=w.body)==null?void 0:C.getReader();if(!y){d==null||d("No readable stream available");return}const x=new TextDecoder;let S="";for(;;){const{done:$,value:Q}=await y.read();if($)break;S+=x.decode(Q,{stream:!0});const M=S.split(`
|
|
11
|
-
`);S=M.pop()||"";for(const T of M){const V=T.trim();if(V)try{const P=JSON.parse(V);switch(P.type){case"meta":r==null||r(P.fields,P.command);break;case"rows":c+=P.data.length,l==null||l(P.data,c);break;case"done":i==null||i(P.rowCount,P.queryTime);break;case"error":d==null||d(P.message,P.error);break}}catch{console.warn("[StreamingQuery] Malformed NDJSON line:",V)}}}if(S.trim())try{const $=JSON.parse(S.trim());$.type==="done"?i==null||i($.rowCount,$.queryTime):$.type==="error"&&(d==null||d($.message))}catch{}}catch(w){if(w.name==="AbortError")return;d==null||d(w.message||"Stream connection failed")}})(),{abort:()=>m.abort()}}const Xt=s=>{if(s===null||typeof s!="object")return!1;const e=Object.getPrototypeOf(s);return e===Object.prototype||e===null},Je=s=>s.map(e=>({name:e})),Nl=s=>{if(Array.isArray(s)){if(s.every(e=>Xt(e))){const e=s,t=Array.from(new Set(e.flatMap(n=>Object.keys(n))));return{rows:e,fields:Je(t)}}return{rows:s.map((e,t)=>({index:t,value:e})),fields:Je(["index","value"])}}return Xt(s)?{rows:[s],fields:Je(Object.keys(s))}:{rows:[{value:s}],fields:Je(["value"])}};function Il({getEditorView:s,connection:e,redisDatabaseIndex:t,fileVariables:n,fieldDefs:a,resultTabs:o,buildExplainAnalyzePrefix:r,beforeExecute:l}){const i=Ue([]),d=Ue({}),m=Ue(0),c=cn({isHaveOneExecute:!1,executeLoading:!1,isStreaming:!1,streamingRowCount:0,queryTime:0,executeErrors:void 0,currentStatementQuery:""});let p=null;const C=async({currentStatements:S,queryPrefix:$})=>{var H,J,B,ee,pe,ue,Le,Ae,Me,Se,Ne,ie,Ee,we,ne,Ie,b,R,k,z,L;if(!S.length)return;const Q=S[0];if(l&&!await l())return;c.isHaveOneExecute=!0,c.currentStatementQuery=Q.text;let M=Q.text,T={};try{T=JSON.parse(n.value||"{}")}catch(_){console.log("fileParameters error::",_)}let V="result";const P=((H=e.value)==null?void 0:H.type)===Z.REDIS;$&&!P&&(M=`${$} ${M}`,$.startsWith("EXPLAIN")&&(V="explain")),a.value=[],i.value=[],d.value={},c.executeLoading=!0,c.isStreaming=!1,c.streamingRowCount=0,p&&(p(),p=null),m.value++;const E={id:dn(),metadata:{queryTime:0,statementQuery:M,executedAt:new Date,executeErrors:void 0,fieldDefs:void 0,connection:void 0},result:[],view:V,seqIndex:m.value};o.addResultTab(E),ba(s());const j=[];if(P){try{const _=Date.now(),F=await $fetch("/api/redis/workbench/execute",{method:"POST",body:{method:(J=e.value)==null?void 0:J.method,stringConnection:(B=e.value)==null?void 0:B.connectionString,host:(ee=e.value)==null?void 0:ee.host,port:(pe=e.value)==null?void 0:pe.port,username:(ue=e.value)==null?void 0:ue.username,password:(Le=e.value)==null?void 0:Le.password,database:(Ae=e.value)==null?void 0:Ae.database,databaseIndex:t==null?void 0:t.value,ssl:(Me=e.value)==null?void 0:Me.ssl,ssh:(Se=e.value)==null?void 0:Se.ssh,command:M}}),G=Nl(F.result),te=Date.now()-_;a.value=G.fields,E.metadata.fieldDefs=G.fields,E.metadata.connection=e.value,E.metadata.command=((Ne=F.command)==null?void 0:Ne[0])||((ie=M.trim().split(/\s+/)[0])==null?void 0:ie.toUpperCase())||"REDIS",E.metadata.queryTime=te,E.metadata.rowCount=G.rows.length,E.result=G.rows,d.value={rows:G.rows,fields:G.fields,queryTime:te},i.value=G.rows,c.executeLoading=!1,c.isStreaming=!1,c.streamingRowCount=G.rows.length,c.queryTime=te,c.executeErrors=void 0,o.refreshResultTab(E.id,E)}catch(_){const F=((Ee=_==null?void 0:_.data)==null?void 0:Ee.message)||(_==null?void 0:_.message)||"Failed to execute Redis command.";c.executeLoading=!1,c.isStreaming=!1,c.executeErrors={message:F,data:(_==null?void 0:_.data)||{message:F}},E.metadata.executeErrors=c.executeErrors,E.view="error",o.refreshResultTab(E.id,E)}return}if($&&V==="explain"){try{const _=await $fetch("/api/query/raw-execute",{method:"POST",body:{dbConnectionString:(we=e.value)==null?void 0:we.connectionString,type:(ne=e.value)==null?void 0:ne.type,providerKind:(Ie=e.value)==null?void 0:Ie.providerKind,managedSqlite:(b=e.value)==null?void 0:b.managedSqlite,query:M,params:T},onResponseError:({response:F})=>{var ve,Oe;const G=(ve=F._data)==null?void 0:ve.data,te=s();te&&G&&Wt({editorView:te,originalSql:Q.text,statementFrom:Number(Q.from),fileParameters:T,errorDetail:G,clientType:((Oe=e.value)==null?void 0:Oe.type)||Z.POSTGRES,queryPrefix:$})}});a.value=_.fields,E.metadata.fieldDefs=_.fields,E.result=_.rows,E.metadata.queryTime=_.queryTime||0,E.metadata.connection=e.value,d.value=_,i.value=_.rows,c.executeErrors=void 0,c.queryTime=_.queryTime||0}catch(_){c.executeErrors=_.data,E.metadata.executeErrors=_.data,E.view="error"}c.executeLoading=!1,o.refreshResultTab(E.id,E);return}c.isStreaming=!0,c.executeLoading=!1;const{abort:W}=Ml({query:M,dbConnectionString:((R=e.value)==null?void 0:R.connectionString)||"",type:(k=e.value)==null?void 0:k.type,providerKind:(z=e.value)==null?void 0:z.providerKind,managedSqlite:(L=e.value)==null?void 0:L.managedSqlite,params:T,onMeta:(_,F)=>{a.value=_,E.metadata.fieldDefs=_,E.metadata.connection=e.value,E.metadata.command=F,o.refreshResultTab(E.id,E)},onRows:(_,F)=>{j.push(..._),c.streamingRowCount=F,E.result=j,E.metadata.rowCount=F,i.value=j,o.refreshResultTab(E.id,E)},onDone:(_,F)=>{c.executeLoading=!1,c.isStreaming=!1,c.queryTime=F,c.executeErrors=void 0,c.streamingRowCount=_,E.metadata.queryTime=F,E.metadata.rowCount=_,d.value={rows:E.result,fields:a.value,queryTime:F},o.refreshResultTab(E.id,E),p=null},onError:(_,F)=>{var ve;const G={message:_,data:F||{message:_}};c.executeLoading=!1,c.isStreaming=!1,c.executeErrors=G,E.metadata.executeErrors=G,E.view="error";const te=s();te&&F&&Wt({editorView:te,originalSql:Q.text,statementFrom:Number(Q.from),fileParameters:T,errorDetail:F,clientType:((ve=e.value)==null?void 0:ve.type)||Z.POSTGRES}),o.refreshResultTab(E.id,E),p=null}});p=W};return{currentRawQueryResult:i,rawResponse:d,queryProcessState:c,executeCurrentStatement:C,onExecuteCurrent:()=>{const S=s();if(!S)return;const{currentStatements:$}=at(S);C({currentStatements:$})},onExplainAnalyzeCurrent:()=>{const S=s();if(!S)return;const{currentStatements:$}=at(S);C({currentStatements:$,queryPrefix:r()})},cancelStreamingQuery:()=>{p&&(p(),p=null,c.executeLoading=!1,c.isStreaming=!1)}}}function Ol(){const s=K({BUFFERS:!0,COSTS:!0,GENERIC_PLAN:!1,MEMORY:!1,SETTINGS:!0,SUMMARY:!0,TIMING:!0,VERBOSE:!0,WAL:!0}),e=K("NONE"),t=r=>{s.value[r]=!s.value[r]},n=r=>{e.value=r};return{explainAnalyzeOptionItems:O(()=>Dt.filter(r=>r.key!=="SERIALIZE").map(r=>({key:r.key,label:r.label,checked:s.value[r.key]}))),serializeMode:e,toggleExplainOption:t,setSerializeMode:n,buildExplainAnalyzePrefix:()=>{const r=Dt.filter(d=>d.key!=="SERIALIZE"&&s.value[d.key]).map(d=>d.key).flatMap(d=>d==="GENERIC_PLAN"?[]:[d]),l=e.value==="NONE"?[]:[`SERIALIZE ${e.value}`];return`EXPLAIN (${["ANALYZE","FORMAT JSON",...r,...l].join(", ")})`}}}function Pl(){const s=Ue(new Map),e=K(null),t=m=>{const c=new Map;c.set(m.id,m),s.value.forEach((p,C)=>{c.set(C,p)}),s.value=c,e.value=m.id},n=(m,c)=>{const p=new Map(s.value);p.set(m,{...c}),s.value=p};return{executedResults:s,activeResultTabId:e,addResultTab:t,refreshResultTab:n,setActiveResultTab:m=>{s.value.has(m)&&(e.value=m)},closeResultTab:m=>{const c=new Map(s.value);if(c.delete(m),s.value=c,e.value===m){const p=Array.from(c.keys());e.value=p.length>0?p[p.length-1]:null}},updateResultTabView:(m,c)=>{const p=s.value.get(m);p&&n(m,{...p,view:c})},closeOtherResultTabs:m=>{const c=s.value.get(m);if(!c)return;const p=new Map;p.set(m,c),s.value=p,e.value=m},closeResultTabsToRight:m=>{const c=Array.from(s.value.keys()),p=c.indexOf(m);if(p<0)return;const C=new Map;for(let w=0;w<=p;w++){const y=c[w],x=s.value.get(y);x&&C.set(y,x)}s.value=C,C.has(e.value||"")||(e.value=m)},updateResultTabResult:(m,c)=>{const C=new Map(s.value).get(m);C&&(C.result=c)}}}function He(s,...e){}const Dl=s=>{let e;return async()=>(e||(e=s()),await e)};class It{constructor(e={}){ae(this,"opts");ae(this,"parser",null);ae(this,"offsetRecord",{});ae(this,"getParser",Dl(async()=>{if(this.parser)return this.parser;const e=await ds(()=>import("./98JSO6jv.js").then(n=>n.i),__vite__mapDeps([0,1,2]),import.meta.url),{Parser:t}=e.default||e;return this.parser=new t,this.parser}));this.opts=e}async parse(e,t){var o,r;this.offsetRecord={};const n=(r=(o=this.opts).getParserOptions)==null?void 0:r.call(o,t.state),a=await this.sanitizeSql(e,n);try{const l=await this.getParser();if((n==null?void 0:n.database)==="DuckDB")return this.parseWithDuckDBSupport(a,n);const i=l.astify(a,n);return{success:!0,errors:[],ast:i}}catch(l){return{success:!1,errors:[this.extractErrorInfo(l,a)]}}}async sanitizeSql(e,t){if(t!=null&&t.ignoreBrackets){const{sql:n,offsetRecord:a}=ql(e);return this.offsetRecord=a,n}return e}async parseWithDuckDBSupport(e,t){const n=await this.getParser(),a=Fl(e).trimStart().toLowerCase();if(a.startsWith("from")||a.includes("macro"))return He(),{success:!0,errors:[]};let o=e;a.includes("create or replace table")&&(this.offsetRecord[e.indexOf("create or replace table")]=-11,o=e.replace(/create or replace table/i,"create table"));try{const r={...t,database:"PostgreSQL"},l=n.astify(o,r);return{success:!0,errors:[],ast:l}}catch(r){return{success:!1,errors:[this.extractErrorInfo(r,e)]}}}extractErrorInfo(e,t){var l,i,d;let n=1,a=1;const o=(e==null?void 0:e.message)||"SQL parsing error",r=e;if(r!=null&&r.location)n=((l=r.location.start)==null?void 0:l.line)||1,a=((i=r.location.start)==null?void 0:i.column)||1;else if(r!=null&&r.hash)n=r.hash.line||1,a=((d=r.hash.loc)==null?void 0:d.first_column)||1;else{const m=o.match(/line (\d+)/i),c=o.match(/column (\d+)/i);m!=null&&m[1]&&(n=parseInt(m[1],10)),c!=null&&c[1]&&(a=parseInt(c[1],10))}for(const[m,c]of Object.entries(this.offsetRecord))a>parseInt(m,10)&&(a-=c);return a>t.length&&(a=t.length),{message:this.cleanErrorMessage(o),line:Math.max(1,n),column:a,severity:"error"}}cleanErrorMessage(e){return e.replace(/^Error: /,"").replace(/Expected .* but .* found\./i,t=>t.replace(/but .* found/,"found unexpected token")).trim()}async validateSql(e,t){return(await this.parse(e,t)).errors}async extractTableReferences(e,t){var a,o;const n=t?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).tableList(e,n).map(i=>{const d=i.split("::");return d[d.length-1]||i})}catch{return[]}}async extractColumnReferences(e,t){var a,o;const n=t!=null&&t.state?(o=(a=this.opts).getParserOptions)==null?void 0:o.call(a,t.state):void 0;try{return(await this.getParser()).columnList(e,n).map(d=>{const m=d.split("::");return m[m.length-1]||d})}catch{return[]}}}function Fl(s,e=["/*","--"]){const t=[];if(e.includes("/*")&&t.push("/\\*[\\s\\S]*?\\*/"),e.includes("--")&&t.push("--[^\\n]*"),t.length===0)return s;const n=new RegExp(`^\\s*(${t.join("|")})\\s*`,"");let a=s,o="";for(;a!==o;)o=a,a=a.replace(n,"");return a}const Vl=2;function ql(s){const e={};return{sql:s.replace(/("(?:[^"\\]|\\.)*")|('(?:[^'\\]|\\.)*')|(\{[^}]*\})/g,(n,a,o,r,l)=>a||o?n:r?(e[l]=Vl,`'${r}'`):n),offsetRecord:e}}const Bl=750;function jl(s,e){const n=e.line(s.line).from+Math.max(0,s.column-1),a=n+1;return{from:n,to:a,severity:s.severity,message:s.message,source:"sql-parser"}}function Hl(s={}){const e=s.parser||new It;return rs(async t=>{const n=t.state.doc,a=n.toString();return a.trim()?(await e.validateSql(a,{state:t.state})).map(r=>jl(r,n)):[]},{delay:s.delay||Bl})}function ke(s){return typeof s=="object"&&!Array.isArray(s)&&!("self"in s)}function Ce(s){return typeof s=="object"&&!Array.isArray(s)&&"self"in s&&"children"in s}function fe(s){return Array.isArray(s)}function oe(s,e,t,n){const a=s.length;if(e==="string"||e==="completion"&&n&&fe(n))return"column";if(e==="namespace"&&t){if(fe(t))return"table";if(ke(t))return Object.values(t).some(r=>fe(r)||Ce(r)&&fe(r.children))?a<=1?"database":"schema":a===0?"database":"namespace"}if(e==="completion"&&t)return fe(t)?"table":(ke(t)&&Object.values(t).some(r=>fe(r)||Ce(r)&&fe(r.children)),a<=1?"database":"schema");switch(a){case 0:return"database";case 1:return"schema";default:return"namespace"}}function ws(s,e,t={}){const{maxDepth:n=10}=t;if(e===""&&Ce(s)){const o=oe([],"completion",s.children);return{completion:s.self,path:[],type:"completion",semanticType:o,namespace:s.children}}const a=e.split(".").filter(o=>o.length>0);return a.length===0||a.length>n?null:bt(s,a,[],t)}function bt(s,e,t,n,a){if(e.length===0){if(Ce(s)){const d=oe(t,"completion",s.children,a);return{completion:s.self,path:t,type:"completion",semanticType:d,namespace:s.children}}const i=oe(t,"namespace",s,a);return{path:t,type:"namespace",semanticType:i,namespace:s}}const[o,...r]=e,{caseSensitive:l=!1}=n;if(!o)return null;if(ke(s)){const i=l?Object.keys(s).find(d=>d===o):Object.keys(s).find(d=>d.toLowerCase()===o.toLowerCase());if(i){const d=s[i];if(d)return bt(d,r,[...t,i],n,s)}}else{if(Ce(s))return bt(s.children,e,t,n,s);if(fe(s)){for(const i of s)if(typeof i=="string"){if((l?i===o:i.toLowerCase()===o.toLowerCase())&&r.length===0){const m=oe([...t,i],"string",void 0,s);return{value:i,path:[...t,i],type:"string",semanticType:m}}}else if((l?i.label===o:i.label.toLowerCase()===o.toLowerCase())&&r.length===0){const m=oe([...t,i.label],"completion",void 0,s);return{completion:i,path:[...t,i.label],type:"completion",semanticType:m}}}}return null}function Ul(s,e,t={}){const n=[];if(e.includes(".")){const a=e.lastIndexOf("."),o=e.substring(0,a),r=e.substring(a+1),l=ws(s,o,t);if(l!=null&&l.namespace)return Ct(l.namespace,r,l.path,t)}else return Ct(s,e,[],t);return n}function Ct(s,e,t,n){const a=[],{caseSensitive:o=!1,allowPartialMatch:r=!0}=n;if(ke(s)){for(const[l,i]of Object.entries(s))if(r?o?l.startsWith(e):l.toLowerCase().startsWith(e.toLowerCase()):o?l===e:l.toLowerCase()===e.toLowerCase())if(Ce(i)){const m=oe([...t,l],"completion",i.children,s);a.push({completion:i.self,path:[...t,l],type:"completion",semanticType:m,namespace:i.children})}else{const m=oe([...t,l],"namespace",i,s);a.push({path:[...t,l],type:"namespace",semanticType:m,namespace:i})}}else if(Ce(s)){if(r?o?s.self.label.startsWith(e):s.self.label.toLowerCase().startsWith(e.toLowerCase()):o?s.self.label===e:s.self.label.toLowerCase()===e.toLowerCase()){const i=oe([...t,s.self.label],"completion",s.children);a.push({completion:s.self,path:[...t,s.self.label],type:"completion",semanticType:i,namespace:s.children})}a.push(...Ct(s.children,e,t,n))}else if(fe(s)){for(const l of s)if(typeof l=="string"){if(r?o?l.startsWith(e):l.toLowerCase().startsWith(e.toLowerCase()):o?l===e:l.toLowerCase()===e.toLowerCase()){const d=oe([...t,l],"string",void 0,s);a.push({value:l,path:[...t,l],type:"string",semanticType:d})}}else if(r?o?l.label.startsWith(e):l.label.toLowerCase().startsWith(e.toLowerCase()):o?l.label===e:l.label.toLowerCase()===e.toLowerCase()){const d=oe([...t,l.label],"completion",void 0,s);a.push({completion:l,path:[...t,l.label],type:"completion",semanticType:d})}}return a}function Ql(s,e,t={}){const n=[],{maxDepth:a=10}=t;tt(s,[],n,a);const{caseSensitive:o=!1}=t;return n.filter(l=>l.path.some(i=>o?i===e:i.toLowerCase()===e.toLowerCase())).sort((l,i)=>{var c,p;const d=o?l.path[l.path.length-1]===e:((c=l.path[l.path.length-1])==null?void 0:c.toLowerCase())===e.toLowerCase(),m=o?i.path[i.path.length-1]===e:((p=i.path[i.path.length-1])==null?void 0:p.toLowerCase())===e.toLowerCase();return d&&!m?-1:!d&&m?1:l.path.length-i.path.length})}function tt(s,e,t,n){if(!(e.length>=n)){if(ke(s))for(const[a,o]of Object.entries(s)){const r=[...e,a];if(Ce(o)){const l=oe(r,"completion",o.children,s);t.push({completion:o.self,path:r,type:"completion",semanticType:l,namespace:o.children}),tt(o.children,r,t,n)}else{const l=oe(r,"namespace",o,s);t.push({path:r,type:"namespace",semanticType:l,namespace:o}),tt(o,r,t,n)}}else if(Ce(s)){const a=oe(e,"completion",s.children);t.push({completion:s.self,path:e,type:"completion",semanticType:a,namespace:s.children}),tt(s.children,e,t,n)}else if(fe(s))for(const a of s)if(typeof a=="string"){const o=oe([...e,a],"string",void 0,s);t.push({value:a,path:[...e,a],type:"string",semanticType:o})}else{const o=oe([...e,a.label],"completion",void 0,s);t.push({completion:a,path:[...e,a.label],type:"completion",semanticType:o})}}}function es(s,e,t={}){const{enableFuzzySearch:n=!1}=t,a=ws(s,e,t);if(a)return a;const o=Ul(s,e,t);if(o.length>0)return o[0]||null;if(n){const r=Ql(s,e,t);if(r.length>0)return r[0]||null}return null}function _s(s,e){if(e.size===0)return{};if(ke(s)){const t={};for(const[n,a]of Object.entries(s))if(Array.from(e).some(r=>r.toLowerCase()===n.toLowerCase()))t[n]=a;else if(ke(a)){const r=_s(a,e);Object.keys(r).length>0&&(t[n]=r)}return t}return s}function Wl(s={}){const{schema:e={},keywords:t={},hoverTime:n=300,enableKeywords:a=!0,enableTables:o=!0,enableColumns:r=!0,enableFuzzySearch:l=!0,parser:i=new It,tooltipRender:d,tooltipRenderers:m={}}=s;let c=null;return mn(async(p,C,w)=>{const{from:y,to:x,text:S}=p.state.doc.lineAt(C);let $=C,Q=C;c===null&&(c=typeof t=="function"?t(p):Promise.resolve(t));const M=await c;for(;$>y&&/[\w.]/.test(S[$-y-1]??"");)$--;for(;Q<x&&/[\w.]/.test(S[Q-y]??"");)Q++;if($===C&&w<0||Q===C&&w>0)return null;const T=S.slice($-y,Q-y).toLowerCase();if(!T||T.length===0)return null;const V=typeof e=="function"?e(p):e;let P=null;if(He(),!P&&a&&M[T]){He("keywordResult",T,M[T]);const E={keyword:T,info:M[T]};P={word:T,view:p,pos:C,tooltipType:"keyword",keywordData:E}}if(!P&&(o||r)&&V){const E=p.state.doc.toString(),j=await i.extractTableReferences(E),W=new Set(j.map(B=>B.toLowerCase())),H=_s(V,W);let J=es(H,T,{enableFuzzySearch:l});if(!J&&W.size===0&&(J=es(V,T,{enableFuzzySearch:l})),J){He("namespaceResult (query-aware)",T,J,"tableRefs:",Array.from(W));const B={item:J,word:T,resolvedSchema:W.size>0?H:V};P={word:T,view:p,pos:C,tooltipType:"namespace",namespaceData:B}}else He("No namespace item found for:",T)}return P?{pos:$,end:Q,above:!0,create(E){if(d){const H=d(T,E,C);if(H)return{dom:H}}let j=null;if(P.tooltipType==="keyword"&&P.keywordData)j=m.keyword?m.keyword(P.keywordData):Gl(P.keywordData);else if(P.tooltipType==="namespace"&&P.namespaceData){const H=P.namespaceData,{semanticType:J}=H.item;J==="table"&&m.table?j=m.table(H):J==="column"&&m.column?j=m.column(H):(J==="database"||J==="schema"||J==="namespace")&&m.namespace?j=m.namespace(H):j=Kl(H.item)}if(!j)return{dom:document.createElement("div")};const W=document.createElement("div");return W.className="cm-sql-hover-tooltip",W.innerHTML=j,{dom:W}}}:null},{hoverTime:n})}function Kl(s){var a,o,r,l,i,d,m;const e=s.path.join("."),t=((a=s.completion)==null?void 0:a.label)||s.value||s.path[s.path.length-1]||"unknown";let n=`<div class="sql-hover-${s.semanticType}">`;switch(n+=`<div class="sql-hover-header"><strong>${t}</strong> <span class="sql-hover-type">${s.semanticType}</span></div>`,s.semanticType){case"database":if(n+=`<div class="sql-hover-description">Database${(o=s.completion)!=null&&o.detail?`: ${s.completion.detail}`:""}</div>`,s.namespace){const c=st(s.namespace);c>0&&(n+=`<div class="sql-hover-children">Contains ${c} schema${c!==1?"s":""}</div>`)}break;case"schema":if(n+=`<div class="sql-hover-description">Schema${(r=s.completion)!=null&&r.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const c=st(s.namespace);c>0&&(n+=`<div class="sql-hover-children">Contains ${c} table${c!==1?"s":""}</div>`)}break;case"table":if(n+=`<div class="sql-hover-description">Table${(l=s.completion)!=null&&l.detail?`: ${s.completion.detail}`:""}</div>`,e){const c=s.path;c.length>1&&(n+=`<div class="sql-hover-path"><strong>Schema:</strong> <code>${c.slice(0,-1).join(".")}</code></div>`)}if(s.namespace&&fe(s.namespace)){const c=s.namespace;if(c.length>0){n+=`<div class="sql-hover-columns"><strong>Columns (${c.length}):</strong><br>`;const C=c.slice(0,8).map(w=>typeof w=="string"?w:w.label);n+=C.map(w=>`<code>${w}</code>`).join(", "),c.length>8&&(n+=`, <em>and ${c.length-8} more...</em>`),n+="</div>"}}break;case"column":if(n+=`<div class="sql-hover-description">Column${(i=s.completion)!=null&&i.detail?`: ${s.completion.detail}`:""}</div>`,e){const c=s.path;c.length>1&&(n+=`<div class="sql-hover-path"><strong>Table:</strong> <code>${c.slice(0,-1).join(".")}</code></div>`)}break;default:if(n+=`<div class="sql-hover-description">Namespace${(d=s.completion)!=null&&d.detail?`: ${s.completion.detail}`:""}</div>`,e&&(n+=`<div class="sql-hover-path"><strong>Path:</strong> <code>${e}</code></div>`),s.namespace){const c=st(s.namespace);c>0&&(n+=`<div class="sql-hover-children">Contains ${c} item${c!==1?"s":""}</div>`)}break}return(m=s.completion)!=null&&m.info&&typeof s.completion.info=="string"&&(n+=`<div class="sql-hover-info">${s.completion.info}</div>`),n+="</div>",n}function st(s){return Array.isArray(s)?s.length:typeof s=="object"&&s!==null?"self"in s&&"children"in s?1+st(s.children):Object.keys(s).length:0}function Gl(s){const{keyword:e,info:t}=s;let n='<div class="sql-hover-keyword">';if(n+=`<div class="sql-hover-header"><strong>${e.toUpperCase()}</strong> <span class="sql-hover-type">keyword</span></div>`,n+=`<div class="sql-hover-description">${t.description}</div>`,t.syntax&&(n+=`<div class="sql-hover-syntax"><strong>Syntax:</strong> <code>${t.syntax}</code></div>`),t.example&&(n+=`<div class="sql-hover-example"><strong>Example:</strong><br><code>${t.example}</code></div>`),t.metadata&&typeof t.metadata=="object"&&Object.keys(t.metadata).length>0){n+='<div class="sql-hover-metadata">';for(const[a,o]of Object.entries(t.metadata))n+=`<span class="sql-hover-tag" title="${a}">${o}</span> `;n+="</div>"}return n+="</div>",n}const Yl=(s="light")=>{const n=s==="dark"?{tooltipBg:"#1f2937",tooltipBorder:"#374151",tooltipText:"#f9fafb",tooltipTypeBg:"#374151",tooltipTypeText:"#9ca3af",tooltipChildren:"#9ca3af",codeBg:"#374151",codeText:"#f3f4f6",strong:"#ffffff",em:"#9ca3af",header:"#ffffff",info:"#d1d5db",related:"#d1d5db",path:"#d1d5db",example:"#d1d5db",columns:"#d1d5db",syntax:"#d1d5db"}:{tooltipBg:"#ffffff",tooltipBorder:"#e5e7eb",tooltipText:"#374151",tooltipTypeBg:"#f3f4f6",tooltipTypeText:"#6b7280",tooltipChildren:"#6b7280",codeBg:"#f9fafb",codeText:"#1f2937",strong:"#111827",em:"#6b7280",header:"#111827",info:"#374151",related:"#374151",path:"#374151",example:"#374151",columns:"#374151",syntax:"#374151"};return kt.theme({".cm-sql-hover-tooltip":{padding:"8px 12px",backgroundColor:n.tooltipBg,border:`1px solid ${n.tooltipBorder}`,borderRadius:"6px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",fontSize:"13px",lineHeight:"1.4",maxWidth:"320px",fontFamily:"system-ui, -apple-system, sans-serif",color:n.tooltipText},".cm-sql-hover-tooltip .sql-hover-header":{marginBottom:"6px",display:"flex",alignItems:"center",gap:"6px",color:n.header},".cm-sql-hover-tooltip .sql-hover-type":{fontSize:"11px",padding:"2px 6px",backgroundColor:n.tooltipTypeBg,color:n.tooltipTypeText,borderRadius:"4px",fontWeight:"500"},".cm-sql-hover-tooltip .sql-hover-description":{color:n.info,marginBottom:"8px"},".cm-sql-hover-tooltip .sql-hover-syntax":{marginBottom:"8px",color:n.syntax},".cm-sql-hover-tooltip .sql-hover-example":{marginBottom:"4px",color:n.example},".cm-sql-hover-tooltip .sql-hover-columns":{marginBottom:"4px",color:n.columns},".cm-sql-hover-tooltip .sql-hover-related":{marginBottom:"4px",color:n.related},".cm-sql-hover-tooltip .sql-hover-path":{marginBottom:"4px",color:n.path},".cm-sql-hover-tooltip .sql-hover-info":{marginBottom:"4px",color:n.info},".cm-sql-hover-tooltip .sql-hover-children":{marginBottom:"4px",color:n.tooltipChildren,fontSize:"12px"},".cm-sql-hover-tooltip code":{backgroundColor:n.codeBg,padding:"1px 4px",borderRadius:"3px",fontSize:"12px",fontFamily:"ui-monospace, 'SF Mono', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace",color:n.codeText},".cm-sql-hover-tooltip strong":{fontWeight:"600",color:n.strong},".cm-sql-hover-tooltip em":{fontStyle:"italic",color:n.em}})};class Jl{constructor(e){ae(this,"parser");ae(this,"cache",new Map);ae(this,"MAX_CACHE_SIZE",10);this.parser=e}async analyzeDocument(e){const t=e.doc.toString(),n=this.generateCacheKey(t),a=this.cache.get(n);if(a)return a;const o=await this.extractStatements(t,e);if(this.cache.set(n,o),this.cache.size>this.MAX_CACHE_SIZE){const r=this.cache.keys().next().value;r!==void 0&&this.cache.delete(r)}return o}async getStatementAtPosition(e,t){return(await this.analyzeDocument(e)).find(a=>t>=a.from&&t<=a.to)||null}async getStatementsInRange(e,t,n){return(await this.analyzeDocument(e)).filter(o=>o.from<=n&&o.to>=t)}async extractStatements(e,t){const n=[],a=this.splitByStatementSeparators(e);let o=0;for(const r of a){const l=r.trim();if(l.length===0){o+=r.length;continue}const i=o+r.indexOf(l),d=i+l.length,m=t.doc.lineAt(i),c=t.doc.lineAt(d),p=this.stripComments(l);if(p.trim().length===0||p.trim()===";"){o+=r.length;continue}const C=await this.parser.parse(p,{state:t}),w=this.determineStatementType(p),y=p.endsWith(";")?p.slice(0,-1).trim():p.trim();n.push({from:i,to:d,lineFrom:m.number,lineTo:c.number,content:y,type:w,isValid:C.success}),o+=r.length}return n}splitByStatementSeparators(e){const t=[];let n="",a=!1,o="",r=!1,l=!1,i=0;for(;i<e.length;){const d=e[i],m=e[i+1];if(!a&&!l&&d==="-"&&m==="-"){r=!0,n+=d+m,i+=2;continue}if(!a&&!r&&d==="/"&&m==="*"){l=!0,n+=d+m,i+=2;continue}if(l&&d==="*"&&m==="/"){l=!1,n+=d+m,i+=2;continue}if(r&&(d===`
|
|
12
|
-
`||d==="\r")){r=!1,n+=d,i++;continue}if(r||l){n+=d,i++;continue}if(!a&&(d==="'"||d==='"'||d==="`"))a=!0,o=d,n+=d;else if(a&&d===o){if(m===o){n+=d+m,i+=2;continue}a=!1,o="",n+=d}else!a&&d===";"?(n+=d,t.push(n),n=""):n+=d;i++}return n.trim()&&t.push(n),t}determineStatementType(e){const t=e.trim().toLowerCase();return t.startsWith("select")?"select":t.startsWith("insert")?"insert":t.startsWith("update")?"update":t.startsWith("delete")?"delete":t.startsWith("create")?"create":t.startsWith("drop")?"drop":t.startsWith("alter")?"alter":t.startsWith("use")?"use":"other"}stripComments(e){let t="",n=!1,a="",o=!1,r=!1,l=0;for(;l<e.length;){const i=e[l],d=e[l+1];if(!n&&!r&&i==="-"&&d==="-"){o=!0,l+=2;continue}if(!n&&!o&&i==="/"&&d==="*"){r=!0,l+=2;continue}if(r&&i==="*"&&d==="/"){r=!1,l+=2;continue}if(o&&(i===`
|
|
13
|
-
`||i==="\r")){o=!1,t+=i,l++;continue}if(o||r){l++;continue}if(!n&&(i==="'"||i==='"'||i==="`"))n=!0,a=i,t+=i;else if(n&&i===a){if(d===a){t+=i+d,l+=2;continue}n=!1,a="",t+=i}else t+=i;l++}return t}generateCacheKey(e){let t=0;for(let n=0;n<e.length;n++){const a=e.charCodeAt(n);t=(t<<5)-t+a,t=t&t}return t.toString()}clearCache(){this.cache.clear()}}const Es=fn.define(),Ts=pn.define({create(){return{currentStatement:null,allStatements:[],cursorPosition:0,isFocused:!0}},update(s,e){for(const t of e.effects)if(t.is(Es))return t.value;return s}});class Zl extends gn{constructor(t,n,a=!0,o=!0){super();ae(this,"config");ae(this,"isCurrent");ae(this,"isValid");ae(this,"isFocused");this.config=t,this.isCurrent=n,this.isValid=a,this.isFocused=o}toDOM(){const t=document.createElement("div");t.className="cm-sql-gutter-marker";let n=this.config.backgroundColor||"#3b82f6";!this.isValid&&this.config.showInvalid!==!1&&(n=this.config.errorBackgroundColor||"#ef4444");let a;return this.isFocused?a=this.isCurrent?"1":(this.config.inactiveOpacity||"0.3").toString():this.config.unfocusedOpacity!==void 0?a=this.config.unfocusedOpacity.toString():this.config.hideWhenNotFocused?a="0":a=this.isCurrent?"1":(this.config.inactiveOpacity||"0.3").toString(),t.style.cssText=`
|
|
14
|
-
background: ${n};
|
|
15
|
-
height: 100%;
|
|
16
|
-
width: 100%;
|
|
17
|
-
opacity: ${a};
|
|
18
|
-
transition: opacity 150ms ease-in-out;
|
|
19
|
-
border-radius: 1px;
|
|
20
|
-
`,t}eq(t){return this.isCurrent===t.isCurrent&&this.isValid===t.isValid&&this.isFocused===t.isFocused&&this.config===t.config}}function Xl(s,e){var l;let t=vn.empty;if((l=e.whenHide)!=null&&l.call(e,s))return t;const n=s.state.field(Ts,!1);if(!n)return t;const{currentStatement:a,allStatements:o,isFocused:r}=n;try{for(const i of o){const d=(a==null?void 0:a.from)===i.from&&(a==null?void 0:a.to)===i.to;if(!i.isValid&&e.showInvalid===!1)continue;const m=new Zl(e,d,i.isValid,r);for(let c=i.lineFrom;c<=i.lineTo;c++)try{if(c<1||c>s.state.doc.lines)continue;const p=s.state.doc.line(c);t=t.update({add:[m.range(p.from)]})}catch(p){console.warn("SqlGutter: Invalid line number",c,p)}}}catch(i){console.warn("SqlGutter: Error creating markers",i)}return t}function ei(s){return kt.updateListener.of(async e=>{if(!e.docChanged&&!e.selectionSet&&!e.focusChanged)return;const{state:t}=e.view,{main:n}=t.selection,a=n.head,o=await s.analyzeDocument(t),l={currentStatement:await s.getStatementAtPosition(t,a),allStatements:o,cursorPosition:a,isFocused:e.view.hasFocus};e.view.dispatch({effects:Es.of(l)})})}function ti(s){const e=s.width||3;return kt.baseTheme({".cm-sql-gutter":{width:`${e}px`,minWidth:`${e}px`},".cm-sql-gutter .cm-gutterElement":{width:`${e}px`,padding:"0",margin:"0"},".cm-sql-gutter-marker":{width:"100%",height:"100%",display:"block"},".cm-lineNumbers .cm-gutterElement":{paddingLeft:"8px",paddingRight:"8px"}})}function si(s){return hn({class:`cm-sql-gutter ${s.className||""}`,markers:e=>Xl(e,s)})}function ni(s={}){const e=s.parser||new It,t=new Jl(e);return[Ts,ei(t),ti(s),si(s)]}function ai(s={}){const e=[],{enableLinting:t=!0,enableGutterMarkers:n=!0,enableHover:a=!0,linterConfig:o,gutterConfig:r,hoverConfig:l}=s;return t&&e.push(Hl(o)),n&&e.push(ni(r)),a&&(e.push(Wl(l)),l!=null&&l.theme?e.push(l.theme):e.push(Yl())),e}const nt='(?:"(?:[^"]|"")+"|[A-Za-z_][A-Za-z0-9_$]*)',oi=new RegExp(`(${nt})\\s*\\.\\s*([A-Za-z_][A-Za-z0-9_$]*)?$`),ts=new RegExp(`\\b(?:FROM|JOIN)\\s+(${nt}(?:\\s*\\.\\s*${nt})*)(?:\\s+(?:AS\\s+)?(${nt}))?`,"gi"),ri=new Set(["all","cross","except","fetch","for","from","full","group","having","inner","intersect","join","left","limit","offset","on","order","outer","right","select","union","where"]);function _e(s){if(!s)return"";const e=s.trim();return e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1).replace(/""/g,'"'):e.toLowerCase()}function Rs(s){if(!s)return[];const e=[];let t="",n=!1;for(let a=0;a<s.length;a++){const o=s[a];if(o==='"'){if(t+=o,n&&s[a+1]==='"'){t+=s[a+1],a++;continue}n=!n;continue}if(!n&&o==="."){t.trim()&&e.push(t.trim()),t="";continue}t+=o}return t.trim()&&e.push(t.trim()),e}function li(s,e){let n=ms(s).resolveInner(e,-1);for(;n;){if(n.type.name==="Statement")return n;n=n.parent}return null}function ii(s){const e=new Map;let t=ts.exec(s);for(;t!==null;){const n=t[1],a=t[2];if(n){const r=Rs(n).at(-1);if(r&&e.set(_e(r),n),a){const l=_e(a);ri.has(l)||e.set(l,n)}}t=ts.exec(s)}return e}function ui(s){return/Comment|String/.test(s.type.name)}function ft(s,e){if(!s.tableDetails)return null;for(const[t,n]of Object.entries(s.tableDetails))if(_e(t)===e)return{tableName:t,schemaName:s.name,tableInfo:n};return null}function ht({tableReference:s,tableName:e,schemaName:t,tableInfo:n}){var a,o;return{tableName:e,schemaName:t,tableReference:s,columns:n.columns||[],primaryKeyColumns:new Set(((a=n.primary_keys)==null?void 0:a.map(r=>r.column))||[]),foreignKeysByColumn:new Map(((o=n.foreign_keys)==null?void 0:o.map(r=>[r.column,r]))||[])}}function ci({tableReference:s,schemas:e,defaultSchemaName:t}){if(!(e!=null&&e.length))return null;const n=Rs(s).map(l=>_e(l));if(!n.length)return null;const a=n[n.length-1],o=n.length>1?n[n.length-2]:void 0;if(o){const l=e.find(i=>_e(i.name)===o);if(l){const i=ft(l,a);if(i)return ht({tableReference:s,tableName:i.tableName,schemaName:i.schemaName,tableInfo:i.tableInfo})}}const r=t?_e(t):void 0;if(r){const l=e.find(i=>_e(i.name)===r);if(l){const i=ft(l,a);if(i)return ht({tableReference:s,tableName:i.tableName,schemaName:i.schemaName,tableInfo:i.tableInfo})}}for(const l of e){const i=ft(l,a);if(i)return ht({tableReference:s,tableName:i.tableName,schemaName:i.schemaName,tableInfo:i.tableInfo})}return null}function di(s){return[...s.columns].sort((t,n)=>(t.ordinal_position||0)-(n.ordinal_position||0)).map(t=>ia({column:t,tableName:s.tableName,schemaName:s.schemaName,isPrimaryKey:s.primaryKeyColumns.has(t.name),foreignKey:s.foreignKeysByColumn.get(t.name)}))}function mi(s,e){const t=ms(s.state).resolveInner(s.pos,-1);if(ui(t))return null;const n=li(s.state,s.pos);if(!n)return null;const a=s.state.doc.sliceString(n.from,s.pos),o=oi.exec(a);if(!o)return null;const r=o[1],l=o[2]||"",i=_e(r),d=s.state.doc.sliceString(n.from,n.to),c=ii(d).get(i)||r,p=ci({tableReference:c,schemas:e.schemas,defaultSchemaName:e.defaultSchemaName});return p?{from:s.pos-l.length,options:di(p),validFor:/^[A-Za-z0-9_$]*$/}:null}function pi(s,e){if(!e.fileVariables)return null;const t=s.matchBefore(/:\w*$/);if(!t)return null;try{const n=JSON.parse(e.fileVariables),a=[];for(const o in n)a.push({label:`:${o}`,type:yn.Variable,boost:120,detail:"variable",info:()=>la(o,n[o]),apply(r,l,i,d){const c=r.state.doc.sliceString(i-1,i)===":"?i-1:i;r.dispatch({changes:{from:c,to:d,insert:l.label}})}});return{from:t.from,options:a,validFor:/^:\w*$/}}catch{return null}}function fi(s){return e=>{const t=pi(e,s);return t||mi(e,s)}}const hi=async()=>(await ds(()=>import("./BiOIaWuc.js"),[],import.meta.url)).default.keywords;function vi({codeEditorRef:s,fileVariables:e,connection:t,onExecuteStatement:n,onExplainAnalyzeCurrent:a}){const o=xn(),{schemasByContext:r,activeSchema:l}=us(o),i=K({line:1,column:1}),d=()=>{var B;return(B=s.value)==null?void 0:B.editorView},m=O(()=>{var B,ee,pe;return((B=l.value)==null?void 0:B.name)||((pe=(ee=r.value)==null?void 0:ee[0])==null?void 0:pe.name)}),c=O(()=>{var B;return((B=t==null?void 0:t.value)==null?void 0:B.type)===Z.REDIS}),p=O(()=>!c.value),C=O(()=>{var B;return((B=t==null?void 0:t.value)==null?void 0:B.type)===Z.POSTGRES}),w=O(()=>ua({schemas:r.value,defaultSchemaName:m.value,fileVariables:e.value})),y=new ut,x=new ut,S=new ut,$=()=>{var B,ee;return Rn({dialect:Ft((B=t==null?void 0:t.value)==null?void 0:B.type),upperCaseKeywords:!0,keywordCompletion:!((ee=t==null?void 0:t.value)!=null&&ee.type)||t.value.type===Z.POSTGRES?kn:void 0,schema:w.value.schema,defaultSchema:w.value.defaultSchema})},Q=()=>c.value?Tn():$(),M=()=>{var B;return c.value?[]:Ft((B=t==null?void 0:t.value)==null?void 0:B.type).language.data.of({autocomplete:V()})},T=()=>c.value?[]:ai({enableLinting:!1,enableGutterMarkers:!1,enableHover:!0,hoverConfig:{hoverTime:250,enableKeywords:!0,keywords:async()=>await hi(),enableTables:!1,enableColumns:!1,enableFuzzySearch:!1}}),V=()=>fi({schemas:r.value,defaultSchemaName:m.value,fileVariables:e.value}),{onHandleFormatCurrentStatement:P,onHandleFormatCode:E}=ra({getEditorView:()=>d()}),j=()=>{p.value&&P()},W=()=>{p.value&&E()},H=[Ca(n),ns.of([{key:"Mod-s",run:()=>(j(),!0),preventDefault:!0},{key:"Shift-Alt-f",run:()=>(W(),!0),preventDefault:!0},{key:"Mod-e",run:()=>(C.value&&a(),!0),preventDefault:!0},{key:"Mod-i",run:_n},{key:"Tab",run:En}]),y.of(Q()),x.of(M()),bn,Cn,...Sn(),os(),S.of(T()),wn],J=()=>{var ue;const B=d();if(!B)return;const ee=$n((ue=t==null?void 0:t.value)==null?void 0:ue.type),pe=c.value?"line":"sql";B.dispatch({effects:[zn.of({dialect:ee,isEnable:!c.value,statementMode:pe}),y.reconfigure(Q()),x.reconfigure(M()),S.reconfigure(T())]})};return de(()=>{var B;return[(B=l.value)==null?void 0:B.name,r.value]},()=>{var B;(B=l.value)!=null&&B.name&&J()},{deep:!0,immediate:!0}),t&&de(()=>{var B;return(B=t.value)==null?void 0:B.type},()=>{J()}),de(()=>{var B;return(B=s.value)==null?void 0:B.editorView},B=>{B&&J()},{immediate:!0}),{extensions:H,sqlCompartment:y,cursorInfo:i,onHandleFormatCode:W,onHandleFormatCurrentStatement:j,reloadSqlCompartment:J}}function gi({fileVariables:s,connection:e,redisDatabaseIndex:t,fieldDefs:n,beforeExecute:a}){const o=K(null),{explainAnalyzeOptionItems:r,serializeMode:l,toggleExplainOption:i,setSerializeMode:d,buildExplainAnalyzePrefix:m}=Ol(),c=Pl(),C=Il({getEditorView:()=>{var y;return((y=o.value)==null?void 0:y.editorView)??null},connection:e,redisDatabaseIndex:t,fileVariables:s,fieldDefs:n,resultTabs:c,buildExplainAnalyzePrefix:m,beforeExecute:a}),w=vi({codeEditorRef:o,fileVariables:s,connection:e,onExecuteStatement:C.executeCurrentStatement,onExplainAnalyzeCurrent:C.onExplainAnalyzeCurrent});return{codeEditorRef:o,currentRawQueryResult:C.currentRawQueryResult,rawResponse:C.rawResponse,queryProcessState:C.queryProcessState,onExecuteCurrent:C.onExecuteCurrent,extensions:w.extensions,sqlCompartment:w.sqlCompartment,cursorInfo:w.cursorInfo,onHandleFormatCode:w.onHandleFormatCode,onHandleFormatCurrentStatement:w.onHandleFormatCurrentStatement,onExplainAnalyzeCurrent:C.onExplainAnalyzeCurrent,explainAnalyzeOptionItems:r,serializeMode:l,toggleExplainOption:i,setSerializeMode:d,reloadSqlCompartment:w.reloadSqlCompartment,cancelStreamingQuery:C.cancelStreamingQuery,executedResults:c.executedResults,activeResultTabId:c.activeResultTabId,setActiveResultTab:c.setActiveResultTab,closeResultTab:c.closeResultTab,closeOtherResultTabs:c.closeOtherResultTabs,closeResultTabsToRight:c.closeResultTabsToRight,updateResultTabView:c.updateResultTabView}}const vt=s=>{const{currentStatements:e}=at(s);if(!e.length)return null;const t=Math.min(...e.map(o=>o.from)),n=Math.max(...e.map(o=>o.to));return{text:e.map(o=>o.text).join(`
|
|
21
|
-
`),from:t,to:n}};function yi(s){const e=K(!1),t=K(!1),n=()=>{const i=s.getEditorView();if(!i)return;const d=vt(i);d&&navigator.clipboard.writeText(d.text)},a=()=>{const i=s.getEditorView();if(!i)return;const d=i.state.doc.toString();d&&navigator.clipboard.writeText(d)},o=()=>{const i=s.getEditorView();if(!i)return;const d=vt(i);if(!d)return;let m=d.to;const c=i.state.doc.length;for(;m<c;){const p=i.state.sliceDoc(m,m+1);if(p===`
|
|
22
|
-
`||p==="\r"){m++;break}if(p===" "||p===" ")m++;else break}i.dispatch({changes:{from:d.from,to:m,insert:""},annotations:[Ln.addToHistory.of(!0)]}),i.focus()};return{contextMenuItems:O(()=>{var m,c;const i=!e.value,d=!t.value;return[{type:q.ACTION,title:"Execute",icon:"hugeicons:play",shortcut:"⌘↵",select:s.onExecuteCurrent,disabled:i},...(m=s.isExplainSupported)!=null&&m.value?[{type:q.ACTION,title:"Analyze Query",icon:"hugeicons:analytics-01",shortcut:"⌘E",select:s.onExplainAnalyzeCurrent,disabled:i}]:[],{type:q.SEPARATOR},...(c=s.isSupportFormat)!=null&&c.value?[{type:q.ACTION,title:"Format Current",icon:"hugeicons:magic-wand-01",shortcut:"⌘S",select:s.onHandleFormatCurrentStatement,disabled:i},{type:q.ACTION,title:"Format All",icon:"hugeicons:text-align-left",shortcut:"⇧⌥F",select:s.onHandleFormatCode,disabled:d}]:[],{type:q.SEPARATOR},{type:q.ACTION,title:"Copy Statement",icon:"hugeicons:copy-02",select:n,disabled:i},{type:q.ACTION,title:"Copy All",icon:"hugeicons:copy-01",select:a,disabled:d},{type:q.SEPARATOR},{type:q.ACTION,title:"Delete Statement",icon:"hugeicons:delete-02",select:o,disabled:i}]}),onContextMenuOpen:i=>{if(!i)return;const d=s.getEditorView();if(!d){e.value=!1,t.value=!1;return}t.value=d.state.doc.length>0,e.value=!!vt(d)}}}function xi(){const{workspaceId:s,connectionId:e}=An(),t=ps(),n=Mn(),a=Nn(),o=n.getFileContentByIdSync(t.params.fileId),r=K((o==null?void 0:o.contents)??""),l=K(""),i=K(""),d=K([]),m=O(()=>{var M;return(M=n==null?void 0:n.flatNodes)==null?void 0:M.find(T=>T.id===t.params.fileId)});de(()=>{var M;return(M=m.value)==null?void 0:M.variables},M=>{l.value=M||""},{immediate:!0});const c=O(()=>a.getConnectionsByWorkspaceId(s.value)),p=O(()=>c.value.find(M=>M.id===e.value));de([()=>t.params.fileId,e],()=>{i.value=e.value},{immediate:!0});const C=O(()=>c.value.find(M=>M.id===i.value));return{fieldDefs:d,fileContents:r,fileVariables:l,currentFile:m,selectedConnectionId:i,updateSelectedConnection:M=>{i.value=M},updateFileContent:async M=>{var T;(T=m.value)!=null&&T.id&&(r.value=M,n.updateFileContent({contents:M,id:m.value.id}))},updateFileVariables:async M=>{var T;(T=m.value)!=null&&T.id&&(l.value=M,n.updateFile({id:m.value.id,variables:M}))},connection:C,currentOpenedConnection:p,connectionsByWsId:c,updateFileCursorPos:M=>{var T;(T=m.value)!=null&&T.id&&n.updateFile({id:m.value.id,cursorPos:M})},loadFileContent:async()=>{var T;const{contents:M}=await n.getFileContentById(t.params.fileId);r.value=M,l.value=((T=m.value)==null?void 0:T.variables)||""},isFromCache:o!==null}}const bi={class:"flex flex-col h-full p-1"},Ci={class:"flex flex-col h-full border rounded-md"},Si={class:"h-full flex flex-col overflow-y-auto"},wi={class:"flex flex-col h-full border rounded-md bg-muted"},_i={class:"flex items-center gap-1 font-normal text-sm px-2 py-1"},Ei={class:"h-full flex flex-col overflow-y-auto"},Ti=X({__name:"RawQuery",props:{isSupportVariable:{type:Boolean,default:!0}},setup(s){const e=s,t=ps(),n=O(()=>{const Y=t.params.workspaceId;return Array.isArray(Y)?Y[0]??"":Y??""}),a=is(),o=In(),r=xi(),{connection:l,currentFile:i,currentOpenedConnection:d,fileContents:m,fileVariables:c,selectedConnectionId:p,updateSelectedConnection:C,updateFileContent:w,updateFileVariables:y,connectionsByWsId:x,fieldDefs:S}=r,$=O(()=>{var Y;return((Y=l.value)==null?void 0:Y.type)===Z.REDIS}),Q=O(()=>!$.value),M=O(()=>{var Y;return[Z.SQLITE3,Z.BETTER_SQLITE3].includes((Y=l.value)==null?void 0:Y.type)}),T=O(()=>e.isSupportVariable&&!$.value&&!M.value),V=O(()=>{var Y;return((Y=l.value)==null?void 0:Y.type)===Z.POSTGRES}),P=K("");On(()=>{P.value=T.value?c.value:""});const E=O(()=>$.value?l.value:void 0),j=Vn({connection:E,mode:"meta"}),W=Y=>{j.selectedDatabaseIndex.value=Y},H=gi({connection:l,redisDatabaseIndex:j.selectedDatabaseIndex,fieldDefs:S,fileVariables:P,beforeExecute:()=>G()}),{cursorInfo:J,extensions:B,codeEditorRef:ee,onExecuteCurrent:pe,onHandleFormatCode:ue,onHandleFormatCurrentStatement:Le,onExplainAnalyzeCurrent:Ae,explainAnalyzeOptionItems:Me,serializeMode:Se,currentRawQueryResult:Ne,queryProcessState:ie,executedResults:Ee,activeResultTabId:we}=H,{contextMenuItems:ne,onContextMenuOpen:Ie}=yi({onExecuteCurrent:H.onExecuteCurrent,onExplainAnalyzeCurrent:H.onExplainAnalyzeCurrent,onHandleFormatCurrentStatement:H.onHandleFormatCurrentStatement,onHandleFormatCode:H.onHandleFormatCode,isSupportFormat:Q,isExplainSupported:V,getEditorView:()=>{var Y;return(Y=ee.value)==null?void 0:Y.editorView}}),b=K(0),R=K(!0),k=K(!1),z=K(""),L=K("");let _=null;const F=O(()=>d.value?o.getTagsByIds(d.value.tagIds??[]).some(Y=>Y.strictMode):!1),G=()=>{const Y=l.value,ce=d.value;return!Y||!ce||Y.id===ce.id?Promise.resolve(!0):k.value?Promise.resolve(!1):(z.value=Y.name,L.value=ce.name,k.value=!0,new Promise(Te=>{_=Te}))},te=()=>{k.value=!1,_==null||_(!0),_=null},ve=()=>{k.value=!1,_==null||_(!1),_=null};Pn([{key:"mod+j",callback:()=>{R.value=!R.value}},{key:"ctrl+j",callback:()=>{R.value=!R.value}}]),de(P,()=>{H.reloadSqlCompartment()});const Oe=({column:Y,from:ce,line:Te,to:Pe})=>{J.value={column:Y,line:Te},r.updateFileCursorPos({from:ce,to:Pe})},Be=(Y=!0)=>{var Pe,We;if(!((Pe=i.value)!=null&&Pe.cursorPos)||!((We=ee.value)!=null&&We.editorView))return;const ce=i.value.cursorPos.from??0,Te=i.value.cursorPos.to||0;ee.value.setCursorPosition({from:ce,to:Te,allowScroll:Y})},it=K(!r.isFromCache);return $t(async()=>{it.value&&(await r.loadFileContent(),it.value=!1,await Ve()),Be()}),Dn(async()=>{var Y;await Ve(),Be(!1),(Y=ee.value)!=null&&Y.editorView&&(ee.value.editorView.scrollDOM.scrollTop=b.value)}),zt(()=>{_&&(_(!1),_=null)}),(Y,ce)=>{const Te=me,Pe=lt;return g(),N(se,null,[h(Aa,{open:u(k),"target-connection-name":u(z),"current-connection-name":u(L),onConfirm:te,onCancel:ve},null,8,["open","target-connection-name","current-connection-name"]),h(po,{layout:u(a).codeEditorLayout,customLayout:u(a).activeCustomLayout,"show-result-panel":u(R)},{content:v(()=>[f("div",bi,[f("div",Ci,[h(lo,{"onUpdate:connectionId":u(C),connections:u(x),connection:u(l),"selected-connection-id":u(p),"disable-connection-switch":u(F),"is-redis-connection":u($),"redis-databases":u(j).databases.value,"redis-database-index":u(j).selectedDatabaseIndex.value,workspaceId:u(n),"file-variables":u(c),"code-editor-layout":u(a).codeEditorLayout,currentFileInfo:u(i),"is-support-variable":u(T),"onUpdate:redisDatabaseIndex":W,"onUpdate:updateFileVariables":u(y)},null,8,["onUpdate:connectionId","connections","connection","selected-connection-id","disable-connection-switch","is-redis-connection","redis-databases","redis-database-index","workspaceId","file-variables","code-editor-layout","currentFileInfo","is-support-variable","onUpdate:updateFileVariables"]),f("div",Si,[h(Na,{"context-menu-items":u(ne),"onUpdate:open":u(Ie)},{default:v(()=>[u(it)?(g(),A(u(cs),{key:0,visible:""})):(g(),A(ls,{key:1,"onUpdate:modelValue":u(w),"onUpdate:cursorInfo":Oe,"onUpdate:onScrollTop":ce[0]||(ce[0]=We=>b.value=We),modelValue:u(m),extensions:u(B),ref_key:"codeEditorRef",ref:ee},null,8,["onUpdate:modelValue","modelValue","extensions"]))]),_:1},8,["context-menu-items","onUpdate:open"])]),h(Xa,{"cursor-info":u(J),"execute-loading":u(ie).executeLoading,"execute-errors":!!u(ie).executeErrors,"is-have-one-execute":u(ie).isHaveOneExecute,"is-streaming":u(ie).isStreaming,"streaming-row-count":u(ie).streamingRowCount,queryTime:u(ie).queryTime,"raw-query-results-length":u(Ne).length,"explain-analyze-option-items":u(Me),"serialize-mode":u(Se),"is-support-format":u(Q),"is-support-variable":u(T),"is-explain-supported":u(V),onOnFormatCurrentStatement:u(Le),onOnFormatAll:u(ue),onOnExplainAnalyzeCurrent:u(Ae),onToggleExplainOption:u(H).toggleExplainOption,"onUpdate:serializeMode":u(H).setSerializeMode,onOnExecuteCurrent:u(pe),onOnCancelQuery:u(H).cancelStreamingQuery},null,8,["cursor-info","execute-loading","execute-errors","is-have-one-execute","is-streaming","streaming-row-count","queryTime","raw-query-results-length","explain-analyze-option-items","serialize-mode","is-support-format","is-support-variable","is-explain-supported","onOnFormatCurrentStatement","onOnFormatAll","onOnExplainAnalyzeCurrent","onToggleExplainOption","onUpdate:serializeMode","onOnExecuteCurrent","onOnCancelQuery"])])])]),variables:v(()=>[f("div",wi,[f("div",_i,[h(Te,{name:"hugeicons:absolute"}),ce[1]||(ce[1]=I(" Variables "))]),f("div",Ei,[u(T)?(g(),A(ys,{key:1,variables:u(c),"onUpdate:variables":u(y),onUpdateVariables:u(y),"file-variables":u(c)},null,8,["variables","onUpdate:variables","onUpdateVariables","file-variables"])):(g(),A(Pe,{key:0,title:"Variables not supported",desc:"Variables are not available for Redis and SQLite connections.",icon:"icons:ghost"}))])])]),result:v(()=>[u(Ee).size===0?(g(),A(za,{key:0})):(g(),A(Al,{key:1,"executed-results":u(Ee),"active-tab-id":u(we),"execute-loading":u(ie).executeLoading,"is-streaming":u(ie).isStreaming,"onUpdate:activeTab":u(H).setActiveResultTab,onCloseTab:u(H).closeResultTab,onCloseOtherTabs:u(H).closeOtherResultTabs,onCloseTabsToRight:u(H).closeResultTabsToRight,"onUpdate:view":u(H).updateResultTabView},null,8,["executed-results","active-tab-id","execute-loading","is-streaming","onUpdate:activeTab","onCloseTab","onCloseOtherTabs","onCloseTabsToRight","onUpdate:view"]))]),_:1},8,["layout","customLayout","show-result-panel"])],64)}}}),eu=X({__name:"[fileId]",setup(s){return(e,t)=>(g(),A(Ti))}});export{eu as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as r,e as n,o,n as i,g as u,j as p,D as m,a6 as e}from"./BNM5p7H5.js";const L=r({__name:"AlertTitle",props:{class:{}},setup(a){const s=a;return(t,l)=>(o(),n("h5",{class:i(u(p)("mb-1 font-medium leading-none tracking-tight",s.class))},[m(t.$slots,"default")],2))}}),c={[e.POSTGRES]:{label:"PostgreSQL native backup artifacts",tools:"pg_dump / pg_restore / psql",supported:!0,defaultFormat:"custom",formats:[{format:"custom",extension:".dump",label:"PostgreSQL custom archive (.dump)"},{format:"plain",extension:".sql",label:"PostgreSQL plain SQL script (.sql)"}]},[e.MYSQL]:{label:"MySQL native SQL dump (.sql)",tools:"mysqlpump or mysqldump / mysql",supported:!0,defaultFormat:"plain",formats:[{format:"plain",extension:".sql",label:"MySQL native SQL dump (.sql)"}]},[e.MARIADB]:{label:"MariaDB native SQL dump (.sql)",tools:"mysqlpump or mysqldump / mysql",supported:!0,defaultFormat:"plain",formats:[{format:"plain",extension:".sql",label:"MariaDB native SQL dump (.sql)"}]},[e.SQLITE3]:{label:"SQLite native SQL dump (.sql)",tools:"sqlite3 .dump / sqlite3",supported:!0,defaultFormat:"plain",formats:[{format:"plain",extension:".sql",label:"SQLite native SQL dump (.sql)"}]},[e.ORACLE]:{label:"Oracle Data Pump dump (.dmp)",tools:"expdp / impdp",supported:!1,defaultFormat:"custom",formats:[{format:"custom",extension:".dmp",label:"Oracle Data Pump dump (.dmp)"}],reason:"Oracle native backup is not enabled yet because Data Pump writes files to a server-side DIRECTORY object. HeraQ needs explicit Oracle DIRECTORY and artifact retrieval configuration before this can be offered safely."}};function Q(a){switch(a){case e.POSTGRES:return"PostgreSQL";case e.MYSQL:return"MySQL";case e.MARIADB:return"MariaDB";case e.SQLITE3:return"SQLite";case e.ORACLE:return"Oracle";case e.MSSQL:return"SQL Server";case e.REDIS:return"Redis";case e.SNOWFLAKE:return"Snowflake";default:return a||"database"}}function f(a){return a&&c[a]||null}function d(a,s){const t=f(a);return t?!s||s==="native"?t.formats.find(l=>l.format===t.defaultFormat)||t.formats[0]||null:s!=="plain"&&s!=="custom"?null:t.formats.find(l=>l.format===s)||null:null}function b(a,s){var t;return((t=d(a,s))==null?void 0:t.extension)||".sql"}export{L as _,Q as a,b as g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as r,a8 as m,c as a,e as c,k as p,g as o,f as l,m as u,o as e,A as _}from"./BNM5p7H5.js";import"./Dcz-n576.js";import{_ as d}from"./DnPYRTtC.js";import"./D4dXVtWp.js";import"./ZS8y2W5x.js";import"./DehrK61g.js";import"./BN6ZmV2J.js";import"./DpyRXhd7.js";import"./Th_o-5A0.js";import"./CYMhtSRb.js";import"./BjdYdiyf.js";import"./CZGnIeYQ.js";import"./Cgf5py_m.js";import"./CS5akSNT.js";import"./CbANTWsS.js";const f={class:"h-full"},x={key:0,class:"h-full p-4 flex flex-col items-center justify-center text-muted-foreground"},R=r({__name:"index",setup(k){const s=m(),t=a(()=>String(s.params.connectionId||""));return(g,n)=>{const i=_;return e(),c("div",f,[o(t)?(e(),p(o(d),{key:1,"source-connection-id":o(t)},null,8,["source-connection-id"])):(e(),c("div",x,[l(i,{name:"hugeicons:plug-socket",class:"size-12 mb-2 opacity-50"}),n[0]||(n[0]=u("p",{class:"text-sm"},"Select a connection to open Schema Diff",-1))]))])}}});export{R as default};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{_ as Ye}from"./D4dXVtWp.js";import{d as j,e as R,m as o,t as d,F as P,s as G,o as _,k as B,w as l,z as g,bl as de,f as t,A as Z,l as M,r as F,au as Y,g as e,bm as X,_ as Ze,i as te,a0 as se,n as me,h as Qe,bR as et,x as tt,B as st,bj as ot,bY as at,bp as nt,c as y,a1 as lt,X as rt,Y as it,Z as ut,bn as ct,bK as dt,$ as mt,W as pt,aZ as ft,cp as vt,bx as gt,E as Be,a3 as _t,ba as bt,P as xt,I as ke,aM as we,bD as yt,bE as ht,bF as kt}from"./BNM5p7H5.js";import{_ as Ee,a as Te}from"./ZS8y2W5x.js";import{_ as De,g as wt,a as Re}from"./Dcz-n576.js";import{_ as $t}from"./Cgf5py_m.js";import{u as Ct}from"./DyIuwJ7R.js";const St={class:"rounded-lg border bg-muted/20 p-4"},Ft={class:"space-y-4"},Bt={class:"text-sm font-medium"},Et={class:"mt-1 text-xs text-muted-foreground"},Tt={class:"text-xs text-muted-foreground"},Dt={class:"mt-2 flex flex-wrap gap-2"},Rt={class:"mt-1 text-sm text-muted-foreground"},It={class:"mt-1 text-sm font-medium"},$e=j({__name:"BackupProfileCard",props:{title:{},description:{},formats:{},toolHint:{},targetName:{},formatsLabel:{default:"Supported Files"}},setup(m){return(a,s)=>{const p=de;return _(),R("div",St,[o("div",Ft,[o("div",null,[o("p",Bt,d(a.title),1),o("p",Et,d(a.description),1)]),o("div",null,[o("p",Tt,d(a.formatsLabel),1),o("div",Dt,[(_(!0),R(P,null,G(a.formats,r=>(_(),B(p,{key:r.format,variant:"outline",class:"font-normal"},{default:l(()=>[g(d(r.extension),1)]),_:2},1024))),128))])]),o("div",null,[s[0]||(s[0]=o("p",{class:"text-xs text-muted-foreground"},"Runtime Tools",-1)),o("p",Rt,d(a.toolHint),1)]),o("div",null,[s[1]||(s[1]=o("p",{class:"text-xs text-muted-foreground"},"Target",-1)),o("p",It,d(a.targetName),1)])])])}}}),Ot={class:"text-muted-foreground"},zt={class:"space-y-2 text-xs"},Mt=`brew install postgresql # macOS
|
|
2
|
-
apt-get install postgresql-client # Linux
|
|
3
|
-
# Windows: Download from https://www.postgresql.org/download/windows/`,qt=`brew install mysql # macOS
|
|
4
|
-
apt-get install mysql-client # Linux
|
|
5
|
-
# Windows: Download from https://dev.mysql.com/downloads/`,At=`brew install sqlite # macOS
|
|
6
|
-
apt-get install sqlite3 # Linux
|
|
7
|
-
# Windows: Download from https://www.sqlite.org/download.html`,Lt=j({__name:"BackupRestoreUnsupportedAlert",props:{supportMessage:{},connectionType:{}},setup(m){return(a,s)=>{const p=Z,r=De,u=$t,f=Te,b=Ee;return _(),B(b,null,{default:l(()=>[t(r,{class:"flex items-center font-medium gap-1"},{default:l(()=>[t(p,{name:"hugeicons:alert-circle",class:"size-4"}),s[0]||(s[0]=g(" Native Tools Required"))]),_:1}),t(f,{class:"space-y-3"},{default:l(()=>[o("p",Ot,d(a.supportMessage),1),o("div",zt,[s[1]||(s[1]=o("p",{class:"font-medium"},"Installation instructions:",-1)),a.connectionType==="postgres"?(_(),B(u,{key:0,code:Mt,language:"bash"})):a.connectionType==="mysql"||a.connectionType==="mariadb"?(_(),B(u,{key:1,code:qt,language:"bash"})):a.connectionType==="sqlite3"?(_(),B(u,{key:2,code:At,language:"bash"})):M("",!0)])]),_:1})]),_:1})}}}),Vt={class:"space-y-4"},jt={class:"space-y-2"},Nt={class:"grid gap-2 sm:grid-cols-2"},Pt=["onClick"],Ut={class:"flex items-center justify-between gap-2"},Jt={class:"text-sm font-medium"},Ht={class:"mt-1 text-xs text-muted-foreground"},Wt={class:"space-y-2"},Kt={key:0,class:"space-y-2"},Gt={class:"flex flex-wrap gap-2 max-h-32 overflow-y-auto p-2 border rounded-md"},Xt={class:"text-xs text-muted-foreground"},Ce="plain",Yt=j({__name:"ExportOptionsForm",props:{schemas:{},loading:{type:Boolean},formatOptions:{},defaultFormat:{},toolHint:{}},emits:["submit"],setup(m,{emit:a}){var $;const s=m,p=a,r=F("full"),u=F(s.defaultFormat||(($=s.formatOptions[0])==null?void 0:$.format)||Ce),f=F([]);Y([()=>s.formatOptions,()=>s.defaultFormat],([w,C])=>{var T;w.some(D=>D.format===u.value)||(u.value=((T=w[0])==null?void 0:T.format)||C||Ce)},{immediate:!0});const b=[{value:"full",label:"Full (schema + data)"},{value:"schema-only",label:"Schema only (no data)"},{value:"data-only",label:"Data only (no schema)"}],n=()=>{const w={format:u.value,scope:r.value};w.schemas=f.value.length>0?f.value:s.schemas,p("submit",w)};return(w,C)=>{const T=et,D=Qe,c=st,h=tt,S=Ze,z=Z,q=se;return _(),R("div",Vt,[o("div",jt,[t(e(X),null,{default:l(()=>C[1]||(C[1]=[g("Backup Format")])),_:1}),o("div",Nt,[(_(!0),R(P,null,G(w.formatOptions,x=>(_(),R("button",{key:x.format,type:"button",class:me(["rounded-lg border p-3 text-left transition-colors",e(u)===x.format?"border-primary bg-primary/5":"hover:border-primary/40 hover:bg-muted/20"]),onClick:I=>u.value=x.format},[o("div",Ut,[o("p",Jt,d(x.label),1),t(e(de),{variant:"secondary",class:"font-normal"},{default:l(()=>[g(d(x.extension),1)]),_:2},1024)]),o("p",Ht," Runtime uses "+d(s.toolHint||"Native database tools")+". ",1)],10,Pt))),128))])]),o("div",Wt,[t(e(X),null,{default:l(()=>C[2]||(C[2]=[g("Export Scope")])),_:1}),t(S,{modelValue:e(r),"onUpdate:modelValue":C[0]||(C[0]=x=>te(r)?r.value=x:null)},{default:l(()=>[t(D,{size:"sm",class:"h-7!"},{default:l(()=>[t(T,{placeholder:"Select scope"})]),_:1}),t(h,null,{default:l(()=>[(_(),R(P,null,G(b,x=>t(c,{key:x.value,value:x.value},{default:l(()=>[g(d(x.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),w.schemas.length>0?(_(),R("div",Kt,[t(e(X),null,{default:l(()=>C[3]||(C[3]=[g("Schemas (optional)")])),_:1}),o("div",Gt,[(_(!0),R(P,null,G(w.schemas,x=>(_(),B(e(de),{key:x,variant:e(f).includes(x)?"default":"outline",class:"cursor-pointer",onClick:()=>e(f).includes(x)?f.value=e(f).filter(I=>I!==x):e(f).push(x)},{default:l(()=>[g(d(x),1)]),_:2},1032,["variant","onClick"]))),128))]),o("p",Xt,d(e(f).length?`${e(f).length} selected`:"All visible schemas"),1)])):M("",!0),t(q,{class:"w-full",disabled:w.loading,onClick:n},{default:l(()=>[w.loading?(_(),B(z,{key:0,name:"hugeicons:loading-03",class:"size-4 mr-2 animate-spin"})):(_(),B(z,{key:1,name:"lucide:download",class:"size-4 mr-2"})),g(" "+d(w.loading?"Creating Backup...":"Create Backup"),1)]),_:1},8,["disabled"])])}}}),Zt={class:"relative mt-2 cursor-pointer rounded-lg border-2 border-dashed p-6 text-center transition-colors hover:border-primary/50"},Qt=["accept"],es={key:0,class:"text-muted-foreground pointer-events-none"},ts={class:"text-xs mt-1"},ss={key:1,class:"flex items-center justify-center gap-3"},os={class:"text-left"},as={class:"text-sm font-medium"},ns={class:"text-xs text-muted-foreground"},ls=j({__name:"ImportFileDropzone",props:{selectedFile:{},accept:{},extensionSummary:{}},emits:["change","clear"],setup(m){const a=s=>s<1024?`${s} B`:s<1048576?`${(s/1024).toFixed(1)} KB`:`${(s/1048576).toFixed(1)} MB`;return(s,p)=>{const r=X,u=Z,f=se;return _(),R("div",null,[t(r,{class:"text-sm font-medium"},{default:l(()=>p[2]||(p[2]=[g("Backup File")])),_:1}),o("div",Zt,[o("input",{type:"file",accept:s.accept,class:"absolute inset-0 w-full h-full opacity-0 cursor-pointer",onChange:p[0]||(p[0]=b=>s.$emit("change",b))},null,40,Qt),s.selectedFile?(_(),R("div",ss,[t(u,{name:"hugeicons:file-01",class:"size-8 text-primary"}),o("div",os,[o("p",as,d(s.selectedFile.name),1),o("p",ns,d(a(s.selectedFile.size)),1)]),t(f,{variant:"ghost",size:"icon",class:"ml-2 relative z-10",type:"button",onClick:p[1]||(p[1]=ot(b=>s.$emit("clear"),["stop"]))},{default:l(()=>[t(u,{name:"hugeicons:x-close",class:"size-4"})]),_:1})])):(_(),R("div",es,[t(u,{name:"hugeicons:upload-cloud-01",class:"size-10 mx-auto mb-2 opacity-50"}),p[3]||(p[3]=o("p",{class:"text-sm font-medium"},"Click to select a file",-1)),o("p",ts,"Supports "+d(s.extensionSummary)+" backups",1)]))])])}}}),rs={class:"space-y-3"},is={class:"grid grid-cols-2 gap-4"},us=j({__name:"ImportOptionsForm",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(m){const a=at(m,"modelValue"),s=(r,u)=>{a.value[r]=u},p=[{key:"clean",label:"Drop Objects First",id:"import-clean"},{key:"dataOnly",label:"Data Only",id:"import-data-only"},{key:"schemaOnly",label:"Schema Only",id:"import-schema-only"},{key:"exitOnError",label:"Exit on Error",id:"import-exit-on-error"}];return(r,u)=>{const f=X,b=nt;return _(),R("div",rs,[t(f,{class:"text-sm font-medium"},{default:l(()=>u[0]||(u[0]=[g("Options")])),_:1}),o("div",is,[(_(),R(P,null,G(p,n=>o("div",{key:n.key,class:"flex items-center space-x-2"},[t(b,{id:n.id,"model-value":a.value[n.key],"onUpdate:modelValue":$=>s(n.key,$)},null,8,["id","model-value","onUpdate:modelValue"]),t(f,{for:n.id,class:"text-sm"},{default:l(()=>[g(d(n.label),1)]),_:2},1032,["for"])])),64))])])}}}),cs={class:"space-y-3 py-1"},ce="restore backup",ds=j({__name:"RestoreConfirmDialog",props:{open:{type:Boolean}},emits:["confirm","cancel"],setup(m,{emit:a}){const s=m,p=a,r=F("");Y(()=>s.open,b=>{b&&(r.value="")});const u=y(()=>r.value===ce),f=()=>{u.value&&p("confirm")};return(b,n)=>{const $=Z,w=it,C=ut,T=rt,D=X,c=ct,h=se,S=mt,z=pt,q=lt;return _(),B(q,{open:b.open,"onUpdate:open":n[2]||(n[2]=x=>!x&&b.$emit("cancel"))},{default:l(()=>[t(z,{class:"max-w-sm"},{default:l(()=>[t(T,null,{default:l(()=>[t(w,{class:"flex items-center gap-2 text-destructive"},{default:l(()=>[t($,{name:"hugeicons:alert-02",class:"size-5"}),n[3]||(n[3]=g(" Confirm Restore "))]),_:1}),t(C,null,{default:l(()=>n[4]||(n[4]=[g(" This will overwrite existing data in the target database. This action cannot be undone. ")])),_:1})]),_:1}),o("div",cs,[t(D,{for:"restore-confirm-input"},{default:l(()=>[n[5]||(n[5]=g(" Type ")),o("code",{class:"rounded bg-muted px-1 py-0.5 text-xs font-mono"},d(ce)),n[6]||(n[6]=g(" to continue: "))]),_:1}),t(c,{id:"restore-confirm-input",modelValue:e(r),"onUpdate:modelValue":n[0]||(n[0]=x=>te(r)?r.value=x:null),placeholder:ce,autocomplete:"off",onKeydown:dt(f,["enter"])},null,8,["modelValue"])]),t(S,null,{default:l(()=>[t(h,{variant:"outline",onClick:n[1]||(n[1]=x=>b.$emit("cancel"))},{default:l(()=>n[7]||(n[7]=[g("Cancel")])),_:1}),t(h,{variant:"destructive",disabled:!e(u),onClick:f},{default:l(()=>n[8]||(n[8]=[g(" Restore ")])),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])}}}),ms={class:"rounded-lg border bg-muted/30 p-4"},ps={class:"flex items-center justify-between gap-4"},fs={class:"text-sm font-medium"},vs={class:"text-xs text-muted-foreground"},gs={class:"text-sm font-medium"},_s={class:"mt-3 h-2 overflow-hidden rounded-full bg-border/60"},Se=j({__name:"TransferProgressCard",props:{tool:{},stage:{},statusMessage:{},progress:{},isRunning:{type:Boolean},progressClass:{default:"bg-primary"}},setup(m){return(a,s)=>(_(),R("div",ms,[o("div",ps,[o("div",null,[o("p",fs,d(a.tool)+" · "+d(a.stage),1),o("p",vs,d(a.statusMessage||"Preparing job..."),1)]),o("span",gs,d(a.progress)+"%",1)]),o("div",_s,[o("div",{class:me(["h-full rounded-full transition-all duration-300",a.progressClass]),style:ft({width:`${Math.max(a.progress,a.isRunning?8:0)}%`})},null,6)])]))}});function Fe(m){return!!(m&&(m.status==="completed"||m.status==="error"))}const Ie=()=>{const m=F(null),a=F(null),s=F(null),p=F(!1);let r=null,u=null;const f=c=>{r==null||r(c),r=null,u=null},b=c=>{u==null||u(c),r=null,u=null},n=async()=>{if(!s.value)throw new Error("Backup job status URL is missing.");if(p.value){if(m.value)return m.value;throw new Error("Backup job refresh is already in progress.")}p.value=!0;try{const c=await $fetch(s.value);return m.value=c,c.status==="error"&&(a.value=c.error||c.message),Fe(c)&&($(),f(c)),c}catch(c){const h=c instanceof Error?c:new Error("Failed to refresh backup job status.");throw a.value=h.message,$(),b(h),h}finally{p.value=!1}},{pause:$,resume:w,isActive:C}=vt(()=>{n()},1e3,{immediate:!1,immediateCallback:!1}),T=async c=>{s.value=c,a.value=null;const h=await n();return Fe(h)?h:(w(),await new Promise((S,z)=>{r=S,u=z}))},D=()=>{$(),s.value=null,m.value=null,a.value=null,p.value=!1,r=null,u=null};return gt(()=>{$()}),{job:m,error:a,isRefreshing:p,isPolling:C,progress:y(()=>{var c;return((c=m.value)==null?void 0:c.progress)??0}),message:y(()=>{var c;return((c=m.value)==null?void 0:c.message)??null}),stage:y(()=>{var c;return((c=m.value)==null?void 0:c.stage)??"queued"}),status:y(()=>{var c;return((c=m.value)==null?void 0:c.status)??"queued"}),isRunning:y(()=>{var c,h;return((c=m.value)==null?void 0:c.status)==="queued"||((h=m.value)==null?void 0:h.status)==="running"}),monitorJob:T,refresh:n,reset:D}},bs=(m,a)=>{const s=F(null),p=F(null),r=Ie(),{downloadStream:u,isDownloading:f,downloadedBytes:b}=Ct(),n=y(()=>r.isRunning.value||f.value),$=y(()=>f.value?100:r.progress.value),w=y(()=>f.value?`Downloading backup artifact (${b.value} bytes)...`:r.message.value),C=y(()=>r.job.value),T=async(h,S)=>{var z,q;if(!m.value)return s.value="No database connection provided",!1;if(a!=null&&a.value&&!a.value.exportAvailable)return s.value=a.value.exportMessage,!1;s.value=null,p.value=null;try{const x=await $fetch("/api/database-export/export-database",{method:"POST",body:{...Be(m.value),databaseName:h,options:S}}),I=await r.monitorJob(x.statusUrl);if(I.status==="error")return s.value=I.error||I.message,!1;if(!I.downloadUrl||!I.downloadFileName)return s.value="Export finished but no download artifact was returned.",!1;const k=await u({url:I.downloadUrl,method:"GET",filename:I.downloadFileName||`${h}_backup${D((z=m.value)==null?void 0:z.type,S.format)}`});return k.success?(p.value={fileName:I.downloadFileName,duration:I.duration||0},!0):(s.value=((q=k.error)==null?void 0:q.message)||"Download failed.",!1)}catch(x){return s.value=x instanceof Error?x.message:"Export failed. Check the connection and backup configuration.",console.error("Export error:",x),!1}},D=(h,S)=>wt(h,S);return{isExporting:n,progress:$,error:s,lastExport:p,currentJob:C,statusMessage:w,exportDatabase:T,reset:()=>{r.reset(),s.value=null,p.value=null}}},xs=(m,a)=>{const s=Ie(),p=y(()=>s.isRunning.value),r=y(()=>s.progress.value),u=y(()=>s.message.value),f=y(()=>s.job.value),b=F(null),n=F(null),$=F(null),w=F(null),C=F({clean:!1,dataOnly:!1,schemaOnly:!1,exitOnError:!0}),T=y(()=>{var k;return(k=m.value)==null?void 0:k.type}),D=y(()=>{var k;return((k=a.value)==null?void 0:k.formatOptions)||[]}),c=y(()=>Re(T.value)),h=y(()=>{var k;return((k=a.value)==null?void 0:k.acceptExtensions)||D.value.map(E=>E.extension).join(" / ")||".sql"}),S=()=>{$.value=null,w.value&&(w.value.value="")};return{isImporting:p,progress:r,statusMessage:u,currentJob:f,error:b,success:n,selectedFile:$,fileInputRef:w,options:C,extensionSummary:h,clearSelectedFile:S,openFilePicker:()=>{var k;(k=w.value)==null||k.click()},onFileSelect:k=>{var A;const E=k.target;if(!((A=E.files)!=null&&A.length))return;const U=E.files[0];if(!D.value.some(V=>U.name.toLowerCase().endsWith(V.extension.toLowerCase()))){S(),b.value=`Unsupported file type. Use ${h.value} for ${c.value}.`,n.value=null;return}$.value=U,b.value=null,n.value=null},importDatabase:async()=>{if(!(!$.value||!m.value)){if(a.value&&!a.value.importAvailable){b.value=a.value.importMessage,n.value=null;return}b.value=null,n.value=null;try{const k=new FormData;k.append("file",$.value);const E=Be(m.value);Object.entries(E).forEach(([A,V])=>{V!==void 0&&k.append(A,typeof V=="object"?JSON.stringify(V):String(V))}),k.append("options",JSON.stringify(C.value));const U=await $fetch("/api/database-import/import-database",{method:"POST",body:k}),N=await s.monitorJob(U.statusUrl);if(N.status==="completed"){n.value=N.message||"Database imported successfully",S();return}b.value=N.error||N.message||"Import failed"}catch(k){b.value=k instanceof Error?k.message:"Import failed. Check the backup file and connection compatibility.",console.error("Import error:",k)}}},reset:()=>{s.reset(),b.value=null,n.value=null,S()}}},ys=m=>{const a=F(null),s=F(!1),p=F(null);let r=0;const u=async()=>{const f=m.value,b=++r;if(!f){a.value=null,p.value=null,s.value=!1;return}s.value=!0,p.value=null;try{const n=await $fetch("/api/database-backup/capability",{query:{type:f}});if(b!==r)return;a.value=n}catch(n){if(b!==r)return;a.value=null,p.value=n instanceof Error?n.message:"Unable to detect native backup tools."}finally{b===r&&(s.value=!1)}};return Y(m,()=>{u()},{immediate:!0}),{capability:a,isLoading:s,error:p,refresh:u}},hs={class:"flex flex-col h-full gap-3 overflow-hidden p-3"},ks={class:"font-medium text-foreground"},ws={class:"text-muted-foreground/60"},$s={class:"flex items-center justify-between gap-2"},Cs={class:"text-xs text-muted-foreground"},Ss={class:"relative flex-1 overflow-y-auto rounded-lg border bg-background p-4"},Fs={class:"space-y-4"},Bs={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Es={class:"mt-1 text-sm text-muted-foreground"},Ts={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Ds={class:"rounded-lg border p-4"},Rs={class:"space-y-4"},Is={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Os={class:"mt-1 text-sm text-muted-foreground"},zs={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Ms={class:"rounded-lg border p-4 space-y-4"},qs={class:"text-muted-foreground text-xs inline-flex items-center gap-0.5"},As={class:"text-destructive gap-0.5 items-center inline-flex"},Js=j({__name:"BackupRestoreContainer",props:{connectionId:{},initialTab:{}},setup(m){const a=m,s=_t(),p=bt(),r=y(()=>{if(a.connectionId)return s.connections.find(i=>i.id===a.connectionId)}),u=y(()=>{var i;return(i=r.value)==null?void 0:i.type}),f=y(()=>{var i,v;return((i=r.value)==null?void 0:i.database)||((v=r.value)==null?void 0:v.name)||"database"}),b=y(()=>Re(u.value)),{capability:n,isLoading:$,error:w}=ys(u),C=y(()=>{var i;return((i=n.value)==null?void 0:i.available)??!1}),T=y(()=>{var i;return((i=n.value)==null?void 0:i.exportAvailable)??!1}),D=y(()=>{var i;return((i=n.value)==null?void 0:i.importAvailable)??!1}),c=y(()=>w.value?w.value:n.value?n.value.supportMessage:u.value?`Checking ${b.value} native tools...`:"Select a connection to open database tools."),h=y(()=>{var i;return((i=n.value)==null?void 0:i.toolHint)||"Native database tools"}),S=y(()=>{var i;return((i=n.value)==null?void 0:i.formatOptions)||[]}),z=y(()=>{var i;return((i=n.value)==null?void 0:i.acceptExtensions)||".sql"}),q=y(()=>S.value.map(i=>i.extension).join(" / ")||".sql"),x=y(()=>{var i,v;return $.value||!C.value||T.value&&D.value?null:[T.value?null:(i=n.value)==null?void 0:i.exportMessage,D.value?null:(v=n.value)==null?void 0:v.importMessage].filter(Boolean).join(" ")}),I=y(()=>a.connectionId?(p.schemas[a.connectionId]||[]).filter(i=>i.connectionId===a.connectionId).map(i=>i.name):[]),k=[{id:"export",tabLabel:"Create Backup",subtitle:"Generate native backup artifacts for the current connection.",icon:"hugeicons:download-01"},{id:"import",tabLabel:"Restore Backup",subtitle:"Apply a native backup artifact back into this connection.",icon:"hugeicons:upload-01"}],E=F(a.initialTab),U=y(()=>k.find(i=>i.id===E.value));Y(()=>a.initialTab,i=>{E.value=i}),Y([E,T,D],([i,v,ee])=>{if(i==="export"&&!v&&ee){E.value="import";return}i==="import"&&!ee&&v&&(E.value="export")},{immediate:!0});const N=i=>{E.value=i},{isExporting:A,progress:V,error:oe,lastExport:ae,currentJob:ne,statusMessage:Oe,exportDatabase:ze,reset:Me}=bs(r,n),qe=async i=>{await ze(f.value,i)},{isImporting:J,progress:Ae,statusMessage:Le,currentJob:le,error:pe,success:fe,selectedFile:ve,options:re,extensionSummary:Ve,onFileSelect:je,clearSelectedFile:Ne,importDatabase:Pe,reset:Ue}=xs(r,n),Q=F(!1),Je=()=>{Q.value=!0},He=async()=>{Q.value=!1,await Pe()},We=()=>{Q.value=!1};return(i,v)=>{var ge,_e,be,xe,ye,he;const ee=Ye,L=Z,Ke=kt,Ge=ht,Xe=yt,H=De,W=Te,K=Ee,ie=se;return _(),R("div",hs,[t(ds,{open:e(Q),onConfirm:He,onCancel:We},null,8,["open"]),t(ee,{icon:"hugeicons:database-import",title:"Backup & Restore"},{context:l(()=>[o("span",ks,d(e(f)),1),o("span",ws,"· "+d(e(b)),1)]),_:1}),o("div",$s,[t(Xe,{modelValue:e(E),"onUpdate:modelValue":v[0]||(v[0]=O=>te(E)?E.value=O:null),class:"min-w-0 flex-1 gap-0"},{default:l(()=>[t(Ge,{class:"h-8 max-w-full justify-start! overflow-x-auto"},{default:l(()=>[(_(),R(P,null,G(k,O=>t(Ke,{key:O.id,value:O.id,class:"min-w-fit shrink-0 cursor-pointer rounded-sm px-1.5 text-xs",disabled:e($)||(O.id==="export"?!e(T):!e(D)),onClick:ue=>N(O.id)},{default:l(()=>[t(L,{name:O.icon,class:"shrink-0 size-3.5"},null,8,["name"]),g(" "+d(O.tabLabel),1)]),_:2},1032,["value","disabled","onClick"])),64))]),_:1})]),_:1},8,["modelValue"]),o("div",Cs,d((ge=e(U))==null?void 0:ge.subtitle),1)]),o("div",Ss,[e($)?(_(),B(xt,{key:0,visible:""})):M("",!0),!e($)&&e(w)?(_(),B(K,{key:1,variant:"destructive"},{default:l(()=>[t(L,{name:"hugeicons:alert-circle",class:"size-4"}),t(H,null,{default:l(()=>v[2]||(v[2]=[g("Capability Check Failed")])),_:1}),t(W,null,{default:l(()=>[g(d(e(c)),1)]),_:1})]),_:1})):!e($)&&!e(C)?(_(),B(Lt,{key:2,"support-message":e(c),"connection-type":e(u)},null,8,["support-message","connection-type"])):e($)?M("",!0):(_(),R(P,{key:3},[e(x)?(_(),B(K,{key:0},{default:l(()=>[t(L,{name:"hugeicons:alert-circle",class:"size-4"}),t(H,null,{default:l(()=>v[3]||(v[3]=[g("Partial Native Tool Support")])),_:1}),t(W,null,{default:l(()=>[g(d(e(x)),1)]),_:1})]),_:1})):M("",!0),ke(o("div",Fs,[o("div",Bs,[o("div",null,[v[4]||(v[4]=o("h3",{class:"text-base font-medium"},"Create Backup",-1)),o("p",Es," Export "+d(e(f))+" using "+d(e(h))+". ",1)])]),e(oe)?(_(),B(K,{key:0,variant:"destructive"},{default:l(()=>[t(L,{name:"hugeicons:alert-circle",class:"size-4"}),t(H,null,{default:l(()=>v[5]||(v[5]=[g("Backup Failed")])),_:1}),t(W,null,{default:l(()=>[g(d(e(oe)),1)]),_:1}),t(ie,{size:"sm",variant:"outline",class:"mt-2",onClick:e(Me)},{default:l(()=>v[6]||(v[6]=[g(" Try Again ")])),_:1},8,["onClick"])]),_:1})):M("",!0),e(ae)&&!e(A)&&!e(oe)?(_(),B(K,{key:1},{default:l(()=>[t(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),t(H,null,{default:l(()=>v[7]||(v[7]=[g("Backup Complete")])),_:1}),t(W,null,{default:l(()=>{var O,ue;return[g(d((O=e(ae))==null?void 0:O.fileName)+" downloaded in "+d(((((ue=e(ae))==null?void 0:ue.duration)||0)/1e3).toFixed(1))+"s ",1)]}),_:1})]),_:1})):M("",!0),e(A)||e(ne)?(_(),B(Se,{key:2,tool:((_e=e(ne))==null?void 0:_e.tool)||e(h),stage:((be=e(ne))==null?void 0:be.stage)||"queued","status-message":e(Oe)||"",progress:e(V),"is-running":e(A)},null,8,["tool","stage","status-message","progress","is-running"])):M("",!0),o("div",Ts,[o("div",Ds,[t(Yt,{schemas:e(I),loading:e(A),"format-options":e(S),"default-format":(xe=e(n))==null?void 0:xe.defaultExportFormat,"tool-hint":e(h),onSubmit:qe},null,8,["schemas","loading","format-options","default-format","tool-hint"])]),t($e,{title:"Backup Profile",description:"Exports run on the local runtime host and stream the artifact directly into a downloadable file.",formats:e(S),"tool-hint":e(h),"target-name":e(f),"formats-label":"Supported Files"},null,8,["formats","tool-hint","target-name"])])],512),[[we,e(E)==="export"]]),ke(o("div",Rs,[o("div",Is,[o("div",null,[v[8]||(v[8]=o("h3",{class:"text-base font-medium"},"Restore Backup",-1)),o("p",Os," Restore a "+d(e(q))+" backup into "+d(e(f))+". ",1)])]),e(pe)?(_(),B(K,{key:0,variant:"destructive"},{default:l(()=>[t(L,{name:"hugeicons:alert-circle",class:"size-4"}),t(H,null,{default:l(()=>v[9]||(v[9]=[g("Import Failed")])),_:1}),t(W,null,{default:l(()=>[g(d(e(pe)),1)]),_:1}),t(ie,{size:"sm",variant:"outline",class:"mt-2",onClick:e(Ue)},{default:l(()=>v[10]||(v[10]=[g(" Try Again ")])),_:1},8,["onClick"])]),_:1})):M("",!0),e(fe)?(_(),B(K,{key:1},{default:l(()=>[t(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),t(H,null,{default:l(()=>v[11]||(v[11]=[g("Import Complete")])),_:1}),t(W,null,{default:l(()=>[g(d(e(fe)),1)]),_:1})]),_:1})):M("",!0),e(J)||e(le)?(_(),B(Se,{key:2,tool:((ye=e(le))==null?void 0:ye.tool)||e(h),stage:((he=e(le))==null?void 0:he.stage)||"queued","status-message":e(Le)||"",progress:e(Ae),"is-running":e(J),"progress-class":"bg-emerald-500"},null,8,["tool","stage","status-message","progress","is-running"])):M("",!0),o("div",zs,[o("div",Ms,[t(ls,{"selected-file":e(ve),accept:e(z),"extension-summary":e(Ve),onChange:e(je),onClear:e(Ne)},null,8,["selected-file","accept","extension-summary","onChange","onClear"]),t(us,{modelValue:e(re),"onUpdate:modelValue":v[1]||(v[1]=O=>te(re)?re.value=O:null)},null,8,["modelValue"]),t(ie,{class:"w-full",size:"lg",disabled:!e(ve)||e(J),onClick:Je},{default:l(()=>[t(L,{name:e(J)?"hugeicons:loading-03":"hugeicons:upload-01",class:me(["size-4 mr-2",e(J)&&"animate-spin"])},null,8,["name","class"]),g(" "+d(e(J)?"Restoring...":"Restore Backup"),1)]),_:1},8,["disabled"]),o("p",qs,[o("polyline",As,[t(L,{name:"hugeicons:alert-circle",class:"size-4 text-destructive"}),v[12]||(v[12]=g(" Warning: "))]),v[13]||(v[13]=g(" Importing a database can overwrite existing data. Make sure you have a backup before proceeding. "))])]),t($e,{title:"Restore Profile",description:"Use a backup file produced for the same database family and runtime toolchain.",formats:e(S),"tool-hint":e(h),"target-name":e(f),"formats-label":"Accepted Files"},null,8,["formats","tool-hint","target-name"])])],512),[[we,e(E)==="import"]])],64))])])}}});export{Js as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as H}from"./D4dXVtWp.js";import{d as R,bC as K,e as a,m as l,f as o,bm as U,w,g as r,A as j,a0 as G,o as t,z as k,k as V,t as u,l as z,bp as W,r as q,c as M,av as J,F as y,s as T,n as S,j as X,bl as Y,a3 as Z,i as ee,bD as te,bE as se,bF as ne}from"./BNM5p7H5.js";import{_ as oe,a as ae}from"./ZS8y2W5x.js";import{_ as ie}from"./Dcz-n576.js";import{_ as P}from"./DehrK61g.js";import{_ as re}from"./Cgf5py_m.js";const le={class:"flex flex-col gap-2 rounded-lg border bg-card p-4 sm:flex-row sm:items-end sm:justify-between"},de={class:"flex min-w-0 flex-1 flex-col gap-1.5"},ce={class:"flex h-9 items-center justify-center sm:w-6"},ue={class:"flex min-w-0 flex-1 flex-col gap-1.5"},me=R({__name:"SchemaDiffConnectionSelector",props:{sourceConnection:{},targetConnection:{},connections:{},isLoading:{type:Boolean}},emits:["update:targetConnection","run"],setup(x,{emit:_}){const{workspaceId:p}=K(),d=_;return(n,f)=>{var e,c;const g=U,v=j,C=G;return t(),a("div",le,[l("div",de,[o(g,{class:"text-xs font-medium text-muted-foreground"},{default:w(()=>f[2]||(f[2]=[k("Source")])),_:1}),o(P,{class:"h-9 w-full","workspace-id":r(p)||"","connection-id":((e=n.sourceConnection)==null?void 0:e.id)||"",connection:n.sourceConnection||void 0,connections:n.sourceConnection?[n.sourceConnection]:[],disabled:""},null,8,["workspace-id","connection-id","connection","connections"])]),l("div",ce,[o(v,{name:"hugeicons:arrow-right-02",class:"size-4 text-muted-foreground"})]),l("div",ue,[o(g,{class:"text-xs font-medium text-muted-foreground"},{default:w(()=>f[3]||(f[3]=[k("Target")])),_:1}),o(P,{class:"h-9 w-full","workspace-id":r(p)||"","connection-id":((c=n.targetConnection)==null?void 0:c.id)||"",connection:n.targetConnection||void 0,connections:n.connections,"onUpdate:connectionId":f[0]||(f[0]=$=>d("update:targetConnection",n.connections.find(b=>b.id===$)||null)),"skip-strict-mode-connections":""},null,8,["workspace-id","connection-id","connection","connections"])]),o(C,{disabled:!n.sourceConnection||!n.targetConnection||n.isLoading,size:"sm",onClick:f[1]||(f[1]=$=>d("run"))},{default:w(()=>[n.isLoading?(t(),V(v,{key:0,name:"hugeicons:loading-03",class:"size-4 animate-spin"})):(t(),V(v,{key:1,name:"hugeicons:git-compare",class:"size-4"})),k(" "+u(n.isLoading?"Comparing...":"Run Diff"),1)]),_:1},8,["disabled"])])}}}),fe={class:"flex flex-col gap-3"},pe={class:"flex items-center gap-3"},ge={class:"flex items-center gap-2 text-sm"},xe={class:"text-xs text-muted-foreground"},_e={class:"ml-auto flex items-center gap-2 text-xs"},he={key:0,class:"flex items-center gap-1 rounded-md bg-red-100 px-2 py-1 text-xs text-red-700 dark:bg-red-900/30 dark:text-red-400"},ve={key:0,class:"flex items-start gap-2 rounded-md border border-amber-200 bg-amber-50 p-3 text-xs text-amber-800 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300"},ye={key:2,class:"min-h-32 flex items-center justify-center rounded-md border bg-muted/30 p-4 font-mono text-xs text-muted-foreground"},ke=R({__name:"SchemaDiffSqlPanel",props:{sql:{},safeMode:{type:Boolean},statementCount:{},destructiveCount:{}},emits:["update:safeMode"],setup(x,{emit:_}){const p=_;return(d,n)=>{const f=j,g=U,v=W,C=re;return t(),a("div",fe,[l("div",pe,[l("div",ge,[o(f,{name:"hugeicons:code",class:"size-4 text-muted-foreground"}),n[1]||(n[1]=l("span",{class:"font-medium"},"Generated SQL",-1)),l("span",xe,"("+u(d.statementCount)+" statements)",1)]),l("div",_e,[o(g,{for:"safe-mode-toggle",class:"cursor-pointer text-muted-foreground"},{default:w(()=>n[2]||(n[2]=[k(" Safe mode ")])),_:1}),o(v,{id:"safe-mode-toggle","model-value":d.safeMode,"onUpdate:modelValue":n[0]||(n[0]=e=>p("update:safeMode",e))},null,8,["model-value"])]),d.destructiveCount>0&&!d.safeMode?(t(),a("div",he,[o(f,{name:"hugeicons:alert-circle",class:"size-3.5"}),k(" "+u(d.destructiveCount)+" destructive ",1)])):z("",!0)]),d.safeMode?(t(),a("div",ve,[o(f,{name:"hugeicons:shield-01",class:"mt-0.5 size-3.5 shrink-0"}),n[3]||(n[3]=l("span",null,"Safe mode is on — destructive statements (DROP TABLE, DROP COLUMN) are commented out. Disable to include them.",-1))])):z("",!0),d.sql?(t(),V(C,{key:1,code:d.sql,language:"sql","max-height":"400px"},null,8,["code"])):(t(),a("div",ye," No SQL statements generated. "))])}}}),be={class:"space-y-1 font-mono text-sm"},Ce={class:"mb-3 flex flex-wrap gap-2"},we=["onClick"],$e={key:0,class:"divide-y"},Se=["onClick"],ze={class:"flex-1 truncate"},De={class:"flex-1 truncate text-xs"},qe={class:"shrink-0 text-xxs text-muted-foreground"},Le={class:"flex-1 truncate text-xs"},Te={class:"flex-1 truncate"},Me={class:"flex-1 truncate"},Ve={key:0,class:"flex flex-col items-center gap-2 py-12 text-muted-foreground"},Be=R({__name:"SchemaDiffTree",props:{result:{}},setup(x){const _=q(new Set),p=q(new Set),d={added:{label:"Added",class:"text-emerald-600 dark:text-emerald-400",icon:"hugeicons:plus-sign"},removed:{label:"Removed",class:"text-red-600 dark:text-red-400",icon:"hugeicons:minus-sign"},modified:{label:"Modified",class:"text-amber-600 dark:text-amber-400",icon:"hugeicons:edit-02"},unchanged:{label:"Unchanged",class:"text-muted-foreground",icon:"hugeicons:check-01"}},n={added:"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-400 rounded-sm",removed:"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-400 rounded-sm",modified:"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-400 rounded-sm"},f=e=>{_.value.has(e)?_.value.delete(e):_.value.add(e)},g=e=>{p.value.has(e)?p.value.delete(e):p.value.add(e)},v=(e,c)=>`${e}.${c}`,C=M(()=>x.result.schemas.filter(e=>e.tables.some(c=>c.status!=="unchanged")||e.views.some(c=>c.status!=="unchanged")||e.functions.some(c=>c.status!=="unchanged")));return J(()=>{for(const e of C.value)_.value.add(e.name)}),(e,c)=>{const $=Y,b=j;return t(),a("div",be,[l("div",Ce,[(t(!0),a(y,null,T(e.result.summary,(h,s)=>(t(),a(y,{key:s},[s!=="unchanged"?(t(),V($,{key:0,variant:"outline",class:S(r(X)(n[s],"capitalize border-0"))},{default:w(()=>[k(u(h)+" "+u(s),1)]),_:2},1032,["class"])):z("",!0)],64))),128))]),(t(!0),a(y,null,T(r(C),h=>(t(),a("div",{key:h.name,class:"rounded-md border overflow-hidden"},[l("button",{class:"flex w-full items-center gap-2 bg-muted/50 px-3 py-2 text-left text-xs font-semibold capitalize text-muted-foreground hover:bg-muted",onClick:s=>f(h.name)},[o(b,{name:r(_).has(h.name)?"hugeicons:arrow-down-01":"hugeicons:arrow-right-01",class:"size-3.5 shrink-0"},null,8,["name"]),o(b,{name:"hugeicons:database",class:"size-3.5 shrink-0"}),k(" "+u(h.name),1)],8,we),r(_).has(h.name)?(t(),a("div",$e,[(t(!0),a(y,null,T(h.tables.filter(s=>s.status!=="unchanged"),s=>(t(),a(y,{key:s.name},[l("div",{class:S(["flex cursor-pointer items-center gap-2 px-4 py-2 hover:bg-muted/30",d[s.status].class]),onClick:i=>g(v(h.name,s.name))},[o(b,{name:r(p).has(v(h.name,s.name))?"hugeicons:arrow-down-01":"hugeicons:arrow-right-01",class:"size-3 shrink-0 text-muted-foreground"},null,8,["name"]),o(b,{name:"hugeicons:table-01",class:"size-3.5 shrink-0"}),l("span",ze,u(s.name),1),l("span",{class:S(["ml-auto shrink-0 rounded px-1.5 py-0.5 text-xxs font-medium capitalize",n[s.status]])},u(s.status),3)],10,Se),r(p).has(v(h.name,s.name))?(t(),a(y,{key:0},[(t(!0),a(y,null,T(s.columns.filter(i=>i.status!=="unchanged"),i=>{var D,m,B;return t(),a("div",{key:i.name,class:S(["flex items-center gap-2 py-1.5 pl-10 pr-4",d[i.status].class])},[o(b,{name:"hugeicons:columns-02",class:"size-3 shrink-0 opacity-60"}),l("span",De,u(i.name),1),l("span",qe,[i.status==="added"?(t(),a(y,{key:0},[k(u((D=i.source)==null?void 0:D.type),1)],64)):i.status==="removed"?(t(),a(y,{key:1},[k(u((m=i.target)==null?void 0:m.type),1)],64)):(B=i.changes)!=null&&B.type?(t(),a(y,{key:2},[k(u(i.changes.type.from)+" → "+u(i.changes.type.to),1)],64)):z("",!0)]),l("span",{class:S(["shrink-0 rounded px-1 py-0.5 text-[9px] font-medium capitalize",n[i.status]])},u(i.status),3)],2)}),128)),(t(!0),a(y,null,T(s.foreignKeys.filter(i=>i.status!=="unchanged"),i=>(t(),a("div",{key:i.key,class:S(["flex items-center gap-2 py-1.5 pl-10 pr-4",d[i.status].class])},[o(b,{name:"hugeicons:link-01",class:"size-3 shrink-0 opacity-60"}),l("span",Le,u(i.key),1),l("span",{class:S(["shrink-0 rounded px-1 py-0.5 text-[9px] font-medium capitalize",n[i.status]])},u(i.status),3)],2))),128))],64)):z("",!0)],64))),128)),(t(!0),a(y,null,T(h.views.filter(s=>s.status!=="unchanged"),s=>(t(),a("div",{key:s.name,class:S(["flex items-center gap-2 px-4 py-2",d[s.status].class])},[o(b,{name:"hugeicons:eye",class:"size-3.5 shrink-0"}),l("span",Te,u(s.name),1),c[0]||(c[0]=l("span",{class:"ml-2 shrink-0 text-xxs text-muted-foreground"},"view",-1)),l("span",{class:S(["ml-auto shrink-0 rounded px-1.5 py-0.5 text-xxs font-medium capitalize",n[s.status]])},u(s.status),3)],2))),128)),(t(!0),a(y,null,T(h.functions.filter(s=>s.status!=="unchanged"),s=>(t(),a("div",{key:s.signature,class:S(["flex items-center gap-2 px-4 py-2",d[s.status].class])},[o(b,{name:"hugeicons:function-of-x",class:"size-3.5 shrink-0"}),l("span",Me,u(s.name),1),c[1]||(c[1]=l("span",{class:"ml-2 shrink-0 text-xxs text-muted-foreground"},"fn",-1)),l("span",{class:S(["ml-auto shrink-0 rounded px-1.5 py-0.5 text-xxs font-medium capitalize",n[s.status]])},u(s.status),3)],2))),128))])):z("",!0)]))),128)),r(C).length===0?(t(),a("div",Ve,[o(b,{name:"hugeicons:checkmark-circle-02",class:"size-10 text-emerald-500"}),c[2]||(c[2]=l("p",{class:"text-sm font-medium"},"Schemas are identical",-1)),c[3]||(c[3]=l("p",{class:"text-xs"},"No differences detected between source and target.",-1))])):z("",!0)])}}}),Ie={diff:x=>$fetch("/api/schema-diff",{method:"POST",body:x})};function Re(){const x=q(null),_=q(!1),p=q(null),d=q(!0),n=e=>({type:e.type,connectionString:e.connectionString,host:e.host,port:e.port,username:e.username,password:e.password,database:e.database,ssl:e.ssl,ssh:e.ssh}),f=async(e,c)=>{_.value=!0,p.value=null,x.value=null;try{x.value=await Ie.diff({source:n(e),target:n(c),safeMode:d.value})}catch($){p.value=$ instanceof Error?$.message:"Schema diff failed. Check connection details."}finally{_.value=!1}},g=()=>{x.value=null,p.value=null},v=M(()=>x.value?d.value?x.value.sql.safe:x.value.sql.full:""),C=M(()=>{if(!x.value)return!1;const{added:e,removed:c,modified:$}=x.value.summary;return e+c+$>0});return{result:x,isLoading:_,error:p,safeMode:d,currentSql:v,hasDifferences:C,runDiff:f,reset:g}}const je={class:"flex h-full flex-col gap-4 overflow-hidden p-4"},Ne={class:"flex items-center justify-between gap-2"},Pe={key:0,class:"ml-1 rounded-full bg-primary px-1.5 py-0.5 text-xxs text-primary-foreground"},Ue={key:0,class:"ml-1 rounded-full bg-muted px-1.5 py-0.5 text-xxs text-muted-foreground"},Ae={class:"text-xs text-muted-foreground"},Ee={key:0,class:"flex-1 overflow-y-auto"},Fe={key:1,class:"flex-1 overflow-y-auto"},Oe={key:2,class:"flex flex-1 flex-col items-center justify-center gap-3 text-muted-foreground"},Xe=R({__name:"SchemaDiffContainer",props:{sourceConnectionId:{}},setup(x){const _=x,p=Z(),d=M(()=>p.connections.find(D=>D.id===_.sourceConnectionId)??null),n=M(()=>p.connections.filter(D=>D.id!==_.sourceConnectionId)),f=q(null),{result:g,isLoading:v,error:C,safeMode:e,currentSql:c,hasDifferences:$,runDiff:b}=Re(),h=async()=>{!d.value||!f.value||await b(d.value,f.value)},s=M(()=>{var D;return((D=g.value)==null?void 0:D.sql.statements.filter(m=>m.destructive).length)??0}),i=q("diff");return(D,m)=>{const B=H,I=j,A=ie,E=ae,F=oe,N=ne,O=se,Q=te;return t(),a("div",je,[o(B,{icon:"hugeicons:git-compare",title:"Schema Diff",description:"Compare schemas between two database connections and generate sync SQL."}),o(me,{"source-connection":r(d),"target-connection":r(f),connections:r(n),"is-loading":r(v),"onUpdate:targetConnection":m[0]||(m[0]=L=>f.value=L),onRun:h},null,8,["source-connection","target-connection","connections","is-loading"]),r(C)?(t(),V(F,{key:0,class:"border-border bg-muted/30"},{default:w(()=>[o(I,{name:"hugeicons:alert-circle",class:"size-4 text-destructive"}),o(A,{class:"text-destructive"},{default:w(()=>m[5]||(m[5]=[k("Diff Failed")])),_:1}),o(E,{class:"text-muted-foreground"},{default:w(()=>[k(u(r(C)),1)]),_:1})]),_:1})):z("",!0),r(g)?(t(),a(y,{key:1},[l("div",Ne,[o(Q,{modelValue:r(i),"onUpdate:modelValue":m[3]||(m[3]=L=>ee(i)?i.value=L:null),class:"min-w-0 flex-1 gap-0"},{default:w(()=>[o(O,{class:"h-8 max-w-full justify-start! overflow-x-auto"},{default:w(()=>[o(N,{value:"diff",class:"min-w-fit shrink-0 cursor-pointer rounded-sm px-1.5 text-xs",onClick:m[1]||(m[1]=L=>i.value="diff")},{default:w(()=>[o(I,{name:"hugeicons:git-compare",class:"shrink-0 size-3.5"}),m[6]||(m[6]=k(" Diff View ")),r($)?(t(),a("span",Pe,u(r(g).summary.added+r(g).summary.removed+r(g).summary.modified),1)):z("",!0)]),_:1}),o(N,{value:"sql",class:"min-w-fit shrink-0 cursor-pointer rounded-sm px-1.5 text-xs",onClick:m[2]||(m[2]=L=>i.value="sql")},{default:w(()=>[o(I,{name:"hugeicons:code",class:"shrink-0 size-3.5"}),m[7]||(m[7]=k(" SQL ")),r(g).sql.statements.length>0?(t(),a("span",Ue,u(r(g).sql.statements.length),1)):z("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),l("div",Ae,u(r(i)==="diff"?"Visualize structural differences":"Review synchronization script"),1)]),r(i)==="diff"?(t(),a("div",Ee,[o(Be,{result:r(g)},null,8,["result"])])):(t(),a("div",Fe,[o(ke,{sql:r(c),"safe-mode":r(e),"statement-count":r(g).sql.statements.length,"destructive-count":r(s),"onUpdate:safeMode":m[4]||(m[4]=L=>e.value=L)},null,8,["sql","safe-mode","statement-count","destructive-count"])]))],64)):r(v)?z("",!0):(t(),a("div",Oe,[o(I,{name:"hugeicons:git-compare",class:"size-14 opacity-30"}),m[8]||(m[8]=l("p",{class:"text-sm"},"Select a target connection and run the diff",-1))]))])}}});export{Xe as _};
|