orcaq 1.1.3 → 1.1.4

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.
Files changed (133) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Co7e2XML.js → -sZwfgN3.js} +1 -1
  3. package/.output/public/_nuxt/1iqadsOZ.js +1 -0
  4. package/.output/public/_nuxt/2WkPV7Mp.js +22 -0
  5. package/.output/public/_nuxt/{CmjR7OTc.js → 2XEGje4L.js} +1 -1
  6. package/.output/public/_nuxt/{BYOPXIhP.js → 5cKDQgbQ.js} +1 -1
  7. package/.output/public/_nuxt/{Ckry8tuC.js → B8rT4ISg.js} +2 -2
  8. package/.output/public/_nuxt/{DVkCRFXi.js → B9Yq_mZo.js} +1 -1
  9. package/.output/public/_nuxt/{BCAMWuzu.js → BCFLQ_rL.js} +1 -1
  10. package/.output/public/_nuxt/{DChDHsIe.js → BIHJR--x.js} +1 -1
  11. package/.output/public/_nuxt/{DJBO_9pO.js → BN9sUptU.js} +1 -1
  12. package/.output/public/_nuxt/{DX8ecA59.js → BNkZeak0.js} +1 -1
  13. package/.output/public/_nuxt/{qRiDKEr7.js → BNqd1Zca.js} +1 -1
  14. package/.output/public/_nuxt/BOZgY48g.js +1 -0
  15. package/.output/public/_nuxt/{DA4Xn6lm.js → BQFJwqXj.js} +1 -1
  16. package/.output/public/_nuxt/{C-Pa1rIR.js → BSBcOKKj.js} +1 -1
  17. package/.output/public/_nuxt/{CtCx-4nJ.js → BVl8VKr5.js} +1 -1
  18. package/.output/public/_nuxt/{vaJvtND9.js → BWphy0Pi.js} +1 -1
  19. package/.output/public/_nuxt/{B_ERKujF.js → BXp87mMj.js} +4 -4
  20. package/.output/public/_nuxt/{j23gQsG7.js → BYY9MB0h.js} +1 -1
  21. package/.output/public/_nuxt/{g9ZMnTLJ.js → BYav_5oM.js} +1 -1
  22. package/.output/public/_nuxt/{BG-rJefG.js → B_J4rjuT.js} +1 -1
  23. package/.output/public/_nuxt/{BzzgEvr9.js → B_U4hCvn.js} +2 -2
  24. package/.output/public/_nuxt/{DgJOougY.js → BdCzQG_z.js} +1 -1
  25. package/.output/public/_nuxt/{CGq9Twnj.js → BdX6JvdH.js} +1 -1
  26. package/.output/public/_nuxt/{BigePTMZ.js → BdaSWOzD.js} +1 -1
  27. package/.output/public/_nuxt/{D0lW43G8.js → BfSmOVMj.js} +119 -119
  28. package/.output/public/_nuxt/{VNOocds9.js → BiMJOLHR.js} +1 -1
  29. package/.output/public/_nuxt/{5oARMrld.js → BlRPNODF.js} +1 -1
  30. package/.output/public/_nuxt/BmREJclf.js +1 -0
  31. package/.output/public/_nuxt/{DPq8O9CC.js → Bp1mKnR0.js} +1 -1
  32. package/.output/public/_nuxt/{hIbRoJ89.js → BqZGP9WI.js} +1 -1
  33. package/.output/public/_nuxt/{Ohrg3hU7.js → BqjMHuu8.js} +1 -1
  34. package/.output/public/_nuxt/{BzywwPw6.js → Brupmvos.js} +1 -1
  35. package/.output/public/_nuxt/{BcyZ-eCi.js → BsA8eQHh.js} +1 -1
  36. package/.output/public/_nuxt/Bwe8I9vL.js +1 -0
  37. package/.output/public/_nuxt/{DvWEWtFg.js → BxdkXfb_.js} +1 -1
  38. package/.output/public/_nuxt/{Db3rTgnd.js → C20WaARR.js} +1 -1
  39. package/.output/public/_nuxt/{Czr647QE.js → C2kyA9ZS.js} +1 -1
  40. package/.output/public/_nuxt/C4HRDaS8.js +1 -0
  41. package/.output/public/_nuxt/{eOeO5uM0.js → C5zTeLKh.js} +1 -1
  42. package/.output/public/_nuxt/{wodl4bLW.js → C6r_nDJz.js} +1 -1
  43. package/.output/public/_nuxt/{C0vscAQB.js → C6yADG7D.js} +1 -1
  44. package/.output/public/_nuxt/{bkzIFcLw.js → CBfQCVFf.js} +1 -1
  45. package/.output/public/_nuxt/{CqkctA6I.js → CDPrFhDR.js} +1 -1
  46. package/.output/public/_nuxt/{CbHZwHBV.js → CFOJLBf2.js} +1 -1
  47. package/.output/public/_nuxt/{BdZsZgcB.js → CJhlBUX_.js} +1 -1
  48. package/.output/public/_nuxt/{syq5mCJi.js → CLXbv9E5.js} +1 -1
  49. package/.output/public/_nuxt/{BseVuOZ1.js → CMT3TfI0.js} +1 -1
  50. package/.output/public/_nuxt/{BMLhg7hE.js → CRX1CszZ.js} +1 -1
  51. package/.output/public/_nuxt/{B-4cXhNx.js → CYaqLaPZ.js} +1 -1
  52. package/.output/public/_nuxt/{CHMlsxJw.js → Cih6uwf6.js} +1 -1
  53. package/.output/public/_nuxt/{BZ4ThSRp.js → CmzTcheK.js} +1 -1
  54. package/.output/public/_nuxt/{D28ykMUi.js → CrNrSEll.js} +1 -1
  55. package/.output/public/_nuxt/{DKLk0T0H.js → CwgI7YXL.js} +1 -1
  56. package/.output/public/_nuxt/{CtB2-SFY.js → CxSk31iP.js} +1 -1
  57. package/.output/public/_nuxt/CyEWn2V2.js +1 -0
  58. package/.output/public/_nuxt/{CtkhwZY7.js → D-pZQQ02.js} +1 -1
  59. package/.output/public/_nuxt/{BmAp-sfn.js → D0mrO5vS.js} +1 -1
  60. package/.output/public/_nuxt/{CfseWBL0.js → D3ujZRkc.js} +1 -1
  61. package/.output/public/_nuxt/{CvFjsYJZ.js → D4PtOV7Y.js} +1 -1
  62. package/.output/public/_nuxt/{CL_1HDtg.js → D65Keo_g.js} +1 -1
  63. package/.output/public/_nuxt/{DOAixkpJ.js → D6c_aTbv.js} +1 -1
  64. package/.output/public/_nuxt/{Du5Ka6uI.js → D9SUnmGh.js} +1 -1
  65. package/.output/public/_nuxt/{CkjXKCQH.js → DDIVwUV6.js} +1 -1
  66. package/.output/public/_nuxt/{C9kgALYc.js → DDS9xPxH.js} +1 -1
  67. package/.output/public/_nuxt/{CjpXgncp.js → DEsdpKnm.js} +1 -1
  68. package/.output/public/_nuxt/{C-pX1zRI.js → DHnV-0Qj.js} +1 -1
  69. package/.output/public/_nuxt/{v41yYOa9.js → DIoeBtoF.js} +3 -3
  70. package/.output/public/_nuxt/{CS4EJV3B.js → DKJfWiWm.js} +1 -1
  71. package/.output/public/_nuxt/{DJXB1Li8.js → DKhuBYhy.js} +1 -1
  72. package/.output/public/_nuxt/DLTvS7Vr.js +2 -0
  73. package/.output/public/_nuxt/{Cf460dGA.js → DNgNuAci.js} +1 -1
  74. package/.output/public/_nuxt/{Buh0pI3n.js → DNpk_jbU.js} +1 -1
  75. package/.output/public/_nuxt/{DLBsdU7G.js → DQCTvlJf.js} +1 -1
  76. package/.output/public/_nuxt/DQf3b-ld.js +1 -0
  77. package/.output/public/_nuxt/{BYxQJ0gE.js → DT4w6IwV.js} +1 -1
  78. package/.output/public/_nuxt/{Dtl3qje7.js → DUqYnCG7.js} +1 -1
  79. package/.output/public/_nuxt/{KynNdNgX.js → DYqNroD1.js} +1 -1
  80. package/.output/public/_nuxt/{DQdA5Twt.js → DZ9fd-xA.js} +1 -1
  81. package/.output/public/_nuxt/{Ch0I4juX.js → DaiufW99.js} +1 -1
  82. package/.output/public/_nuxt/{DpBeiFQV.js → DdRczQp2.js} +2 -2
  83. package/.output/public/_nuxt/{Nof0nVJ6.js → DdW7QNKl.js} +1 -1
  84. package/.output/public/_nuxt/{BtuY54_l.js → Ddtv9Dxp.js} +1 -1
  85. package/.output/public/_nuxt/Dfzgj0Oq.js +1 -0
  86. package/.output/public/_nuxt/DgRHzRny.js +1 -0
  87. package/.output/public/_nuxt/{BzVvHKKC.js → DijSUoYv.js} +1 -1
  88. package/.output/public/_nuxt/Dm-rJ5VH.js +1 -0
  89. package/.output/public/_nuxt/{DrdbRRXx.js → DmpCN34M.js} +1 -1
  90. package/.output/public/_nuxt/{Chx1IK9D.js → DoB1FFC2.js} +1 -1
  91. package/.output/public/_nuxt/Dp2UQPgO.js +1 -0
  92. package/.output/public/_nuxt/{BccuQbKA.js → DryPPXlb.js} +1 -1
  93. package/.output/public/_nuxt/{BqHKqsJ5.js → DyCQWd5B.js} +3 -3
  94. package/.output/public/_nuxt/{C-I81xfB.js → Ef-1UUMy.js} +1 -1
  95. package/.output/public/_nuxt/{Cbo6GmdE.js → HP3PGEjt.js} +1 -1
  96. package/.output/public/_nuxt/{Dunt8-TF.js → KK3goksi.js} +1 -1
  97. package/.output/public/_nuxt/{9sDqz0uT.js → MC96ynYQ.js} +1 -1
  98. package/.output/public/_nuxt/{BKFPmrcv.js → N6_KTIJr.js} +1 -1
  99. package/.output/public/_nuxt/{BZmDBfmV.js → TKeZJpIw.js} +1 -1
  100. package/.output/public/_nuxt/{CRqiHVA4.js → UHOKyE8O.js} +1 -1
  101. package/.output/public/_nuxt/{CLQzuV82.js → Z42SRPvO.js} +1 -1
  102. package/.output/public/_nuxt/{BC6CdfCG.js → _Od8x2z5.js} +1 -1
  103. package/.output/public/_nuxt/{NYpsF1lW.js → bpGjU0QQ.js} +1 -1
  104. package/.output/public/_nuxt/builds/latest.json +1 -1
  105. package/.output/public/_nuxt/builds/meta/9b89410f-7683-420e-9dea-d15741f0e6ce.json +1 -0
  106. package/.output/public/_nuxt/{CmOZ0DCP.js → doR1dsEF.js} +1 -1
  107. package/.output/public/_nuxt/{DRh-06Hb.js → e04t7nee.js} +1 -1
  108. package/.output/public/_nuxt/entry.DEE2Ngsu.css +1 -0
  109. package/.output/public/_nuxt/{CCmd8DpQ.js → g4lEPr__.js} +1 -1
  110. package/.output/public/_nuxt/{C4zYnWdF.js → l12ZvGEh.js} +1 -1
  111. package/.output/public/_nuxt/{YdOCcCRS.js → u7qmw6wa.js} +1 -1
  112. package/.output/public/_nuxt/{CY_CG0AU.js → xoY3RXI7.js} +1 -1
  113. package/.output/public/_nuxt/{CSExCj8O.js → ziSTJBFH.js} +1 -1
  114. package/.output/server/chunks/build/client.manifest.mjs +650 -649
  115. package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
  116. package/.output/server/chunks/nitro/nitro.mjs +642 -642
  117. package/.output/server/package.json +1 -1
  118. package/package.json +1 -1
  119. package/.output/public/_nuxt/BkN-uAef.js +0 -1
  120. package/.output/public/_nuxt/C4FrpL8k.js +0 -1
  121. package/.output/public/_nuxt/Chvs1m1n.js +0 -1
  122. package/.output/public/_nuxt/Cty7uMrC.js +0 -1
  123. package/.output/public/_nuxt/DTvJImVU.js +0 -1
  124. package/.output/public/_nuxt/DakKehZj.js +0 -1
  125. package/.output/public/_nuxt/DfyynWBR.js +0 -1
  126. package/.output/public/_nuxt/DkQCknMw.js +0 -1
  127. package/.output/public/_nuxt/MWrJVKEf.js +0 -2
  128. package/.output/public/_nuxt/Rrce0BXL.js +0 -22
  129. package/.output/public/_nuxt/Y-MEKhtd.js +0 -1
  130. package/.output/public/_nuxt/bYQCSC5-.js +0 -1
  131. package/.output/public/_nuxt/builds/meta/ad11b978-8fdd-4bb2-9b38-1d6fe93f994e.json +0 -1
  132. package/.output/public/_nuxt/entry.DxCQuGXb.css +0 -1
  133. package/.output/public/_nuxt/klVlxnpt.js +0 -1
@@ -1,4 +1,4 @@
1
- import{Q as S,T as z,ax as j,_ as p,g as q,s as Q,a as Z,b as H,t as J,q as K,l as F,c as X,G as Y,L as ee,a4 as te,e as ae,A as re,I as ne}from"./B_ERKujF.js";import{p as ie}from"./DKLk0T0H.js";import{p as se}from"./CY_CG0AU.js";import{d as P}from"./DLBsdU7G.js";import{o as le}from"./CmKTTxBW.js";import"./D0lW43G8.js";import"./Gi6I4Gst.js";function oe(e,a){return a<e?-1:a>e?1:a>=e?0:NaN}function ce(e){return e}function ue(){var e=ce,a=oe,f=null,x=S(0),s=S(z),o=S(0);function l(t){var n,c=(t=j(t)).length,g,y,m=0,u=new Array(c),i=new Array(c),v=+x.apply(this,arguments),A=Math.min(z,Math.max(-z,s.apply(this,arguments)-v)),h,C=Math.min(Math.abs(A)/c,o.apply(this,arguments)),$=C*(A<0?-1:1),d;for(n=0;n<c;++n)(d=i[u[n]=n]=+e(t[n],n,t))>0&&(m+=d);for(a!=null?u.sort(function(w,D){return a(i[w],i[D])}):f!=null&&u.sort(function(w,D){return f(t[w],t[D])}),n=0,y=m?(A-c*$)/m:0;n<c;++n,v=h)g=u[n],d=i[g],h=v+(d>0?d*y:0)+$,i[g]={data:t[g],index:n,value:d,startAngle:v,endAngle:h,padAngle:C};return i}return l.value=function(t){return arguments.length?(e=typeof t=="function"?t:S(+t),l):e},l.sortValues=function(t){return arguments.length?(a=t,f=null,l):a},l.sort=function(t){return arguments.length?(f=t,a=null,l):f},l.startAngle=function(t){return arguments.length?(x=typeof t=="function"?t:S(+t),l):x},l.endAngle=function(t){return arguments.length?(s=typeof t=="function"?t:S(+t),l):s},l.padAngle=function(t){return arguments.length?(o=typeof t=="function"?t:S(+t),l):o},l}var pe=ne.pie,G={sections:new Map,showData:!1},T=G.sections,N=G.showData,ge=structuredClone(pe),de=p(()=>structuredClone(ge),"getConfig"),fe=p(()=>{T=new Map,N=G.showData,re()},"clear"),he=p(({label:e,value:a})=>{if(a<0)throw new Error(`"${e}" has invalid value: ${a}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);T.has(e)||(T.set(e,a),F.debug(`added new section: ${e}, with value: ${a}`))},"addSection"),me=p(()=>T,"getSections"),ve=p(e=>{N=e},"setShowData"),Se=p(()=>N,"getShowData"),R={getConfig:de,clear:fe,setDiagramTitle:K,getDiagramTitle:J,setAccTitle:H,getAccTitle:Z,setAccDescription:Q,getAccDescription:q,addSection:he,getSections:me,setShowData:ve,getShowData:Se},xe=p((e,a)=>{ie(e,a),a.setShowData(e.showData),e.sections.map(a.addSection)},"populateDb"),ye={parse:p(async e=>{const a=await se("pie",e);F.debug(a),xe(a,R)},"parse")},Ae=p(e=>`
1
+ import{Q as S,T as z,ax as j,_ as p,g as q,s as Q,a as Z,b as H,t as J,q as K,l as F,c as X,G as Y,L as ee,a4 as te,e as ae,A as re,I as ne}from"./BXp87mMj.js";import{p as ie}from"./CwgI7YXL.js";import{p as se}from"./xoY3RXI7.js";import{d as P}from"./DQCTvlJf.js";import{o as le}from"./CmKTTxBW.js";import"./BfSmOVMj.js";import"./Gi6I4Gst.js";function oe(e,a){return a<e?-1:a>e?1:a>=e?0:NaN}function ce(e){return e}function ue(){var e=ce,a=oe,f=null,x=S(0),s=S(z),o=S(0);function l(t){var n,c=(t=j(t)).length,g,y,m=0,u=new Array(c),i=new Array(c),v=+x.apply(this,arguments),A=Math.min(z,Math.max(-z,s.apply(this,arguments)-v)),h,C=Math.min(Math.abs(A)/c,o.apply(this,arguments)),$=C*(A<0?-1:1),d;for(n=0;n<c;++n)(d=i[u[n]=n]=+e(t[n],n,t))>0&&(m+=d);for(a!=null?u.sort(function(w,D){return a(i[w],i[D])}):f!=null&&u.sort(function(w,D){return f(t[w],t[D])}),n=0,y=m?(A-c*$)/m:0;n<c;++n,v=h)g=u[n],d=i[g],h=v+(d>0?d*y:0)+$,i[g]={data:t[g],index:n,value:d,startAngle:v,endAngle:h,padAngle:C};return i}return l.value=function(t){return arguments.length?(e=typeof t=="function"?t:S(+t),l):e},l.sortValues=function(t){return arguments.length?(a=t,f=null,l):a},l.sort=function(t){return arguments.length?(f=t,a=null,l):f},l.startAngle=function(t){return arguments.length?(x=typeof t=="function"?t:S(+t),l):x},l.endAngle=function(t){return arguments.length?(s=typeof t=="function"?t:S(+t),l):s},l.padAngle=function(t){return arguments.length?(o=typeof t=="function"?t:S(+t),l):o},l}var pe=ne.pie,G={sections:new Map,showData:!1},T=G.sections,N=G.showData,ge=structuredClone(pe),de=p(()=>structuredClone(ge),"getConfig"),fe=p(()=>{T=new Map,N=G.showData,re()},"clear"),he=p(({label:e,value:a})=>{if(a<0)throw new Error(`"${e}" has invalid value: ${a}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);T.has(e)||(T.set(e,a),F.debug(`added new section: ${e}, with value: ${a}`))},"addSection"),me=p(()=>T,"getSections"),ve=p(e=>{N=e},"setShowData"),Se=p(()=>N,"getShowData"),R={getConfig:de,clear:fe,setDiagramTitle:K,getDiagramTitle:J,setAccTitle:H,getAccTitle:Z,setAccDescription:Q,getAccDescription:q,addSection:he,getSections:me,setShowData:ve,getShowData:Se},xe=p((e,a)=>{ie(e,a),a.setShowData(e.showData),e.sections.map(a.addSection)},"populateDb"),ye={parse:p(async e=>{const a=await se("pie",e);F.debug(a),xe(a,R)},"parse")},Ae=p(e=>`
2
2
  .pieCircle{
3
3
  stroke: ${e.pieStrokeColor};
4
4
  stroke-width : ${e.pieStrokeWidth};
@@ -1 +1 @@
1
- import{d as f,k as d,o as $,w as e,f as a,W as g,X as w,Y as D,z as t,t as s,Z as k,$ as v,a0 as y,a1 as B}from"./D0lW43G8.js";const Q=f({__name:"QuickQueryErrorPopup",props:{open:{type:Boolean},title:{default:"Query error!"},message:{},actionLabel:{default:"OK"}},emits:["update:open"],setup(C){return(o,n)=>{const i=D,p=w,_=k,c=y,r=v,m=g,u=B;return $(),d(u,{open:!!o.open,"onUpdate:open":n[1]||(n[1]=l=>o.$emit("update:open",l))},{default:e(()=>[a(m,{class:"w-[30vw] min-w-96"},{default:e(()=>[a(p,{class:"pb-0"},{default:e(()=>[a(i,null,{default:e(()=>[t(s(o.title),1)]),_:1})]),_:1}),a(_,{class:"decoration-wavy underline decoration-red-600 overflow-auto max-h-[30vh]"},{default:e(()=>[t(s(o.message),1)]),_:1}),a(r,{class:"pt-0"},{default:e(()=>[a(c,{onClick:n[0]||(n[0]=l=>o.$emit("update:open",!1)),class:"w-full"},{default:e(()=>[t(s(o.actionLabel),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}});export{Q as _};
1
+ import{d as f,k as d,o as $,w as e,f as a,W as g,X as w,Y as D,z as t,t as s,Z as k,$ as v,a0 as y,a1 as B}from"./BfSmOVMj.js";const Q=f({__name:"QuickQueryErrorPopup",props:{open:{type:Boolean},title:{default:"Query error!"},message:{},actionLabel:{default:"OK"}},emits:["update:open"],setup(C){return(o,n)=>{const i=D,p=w,_=k,c=y,r=v,m=g,u=B;return $(),d(u,{open:!!o.open,"onUpdate:open":n[1]||(n[1]=l=>o.$emit("update:open",l))},{default:e(()=>[a(m,{class:"w-[30vw] min-w-96"},{default:e(()=>[a(p,{class:"pb-0"},{default:e(()=>[a(i,null,{default:e(()=>[t(s(o.title),1)]),_:1})]),_:1}),a(_,{class:"decoration-wavy underline decoration-red-600 overflow-auto max-h-[30vh]"},{default:e(()=>[t(s(o.message),1)]),_:1}),a(r,{class:"pt-0"},{default:e(()=>[a(c,{onClick:n[0]||(n[0]=l=>o.$emit("update:open",!1)),class:"w-full"},{default:e(()=>[t(s(o.actionLabel),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}});export{Q as _};
@@ -1 +1 @@
1
- import{_ as i,d as l,n as d,j as o}from"./B_ERKujF.js";var x=i((r,t)=>{const e=r.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const s in t.attrs)e.attr(s,t.attrs[s]);return t.class&&e.attr("class",t.class),e},"drawRect"),p=i((r,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(r,e).lower()},"drawBackgroundRect"),y=i((r,t)=>{const e=t.text.replace(d," "),s=r.append("text");s.attr("x",t.x),s.attr("y",t.y),s.attr("class","legend"),s.style("text-anchor",t.anchor),t.class&&s.attr("class",t.class);const a=s.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.text(e),s},"drawText"),m=i((r,t,e,s)=>{const a=r.append("image");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",n)},"drawImage"),g=i((r,t,e,s)=>{const a=r.append("use");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),h=i(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),f=i(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),w=i(()=>{let r=l(".mermaidTooltip");return r.empty()&&(r=l("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),r},"createTooltip");export{p as a,f as b,w as c,x as d,g as e,m as f,h as g,y as h};
1
+ import{_ as i,d as l,n as d,j as o}from"./BXp87mMj.js";var x=i((r,t)=>{const e=r.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const s in t.attrs)e.attr(s,t.attrs[s]);return t.class&&e.attr("class",t.class),e},"drawRect"),p=i((r,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};x(r,e).lower()},"drawBackgroundRect"),y=i((r,t)=>{const e=t.text.replace(d," "),s=r.append("text");s.attr("x",t.x),s.attr("y",t.y),s.attr("class","legend"),s.style("text-anchor",t.anchor),t.class&&s.attr("class",t.class);const a=s.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.text(e),s},"drawText"),m=i((r,t,e,s)=>{const a=r.append("image");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",n)},"drawImage"),g=i((r,t,e,s)=>{const a=r.append("use");a.attr("x",t),a.attr("y",e);const n=o.sanitizeUrl(s);a.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),h=i(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),f=i(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),w=i(()=>{let r=l(".mermaidTooltip");return r.empty()&&(r=l("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),r},"createTooltip");export{p as a,f as b,w as c,x as d,g as e,m as f,h as g,y as h};
@@ -1,7 +1,7 @@
1
- import{_ as He}from"./C9kgALYc.js";import{d as j,e as B,m as t,t as m,F as P,s as J,o as g,k as T,w as a,z as _,bm as ae,f as o,A as W,l as M,r as F,c as v,au as le,g as e,bn as H,_ as We,i as Y,a0 as Q,n as re,h as Ge,bS as Ke,x as Xe,B as Ze,bk as Ye,bW as Qe,bq as et,a1 as tt,X as st,Y as ot,Z as nt,bo as at,bL as lt,$ as rt,W as it,aZ as ut,bX as ct,by as dt,G as we,a3 as mt,ba as pt,J as ve,aM as be,bE as ft,bF as gt,bG as _t}from"./D0lW43G8.js";import{_ as $e,a as Ce}from"./CtCx-4nJ.js";import{_ as Se,g as xe,a as ie,b as Be,c as vt,d as Fe,i as bt,e as xt,f as yt}from"./BmAp-sfn.js";import{_ as ht}from"./BCAMWuzu.js";import{u as kt}from"./Ch0I4juX.js";const wt={class:"rounded-lg border bg-muted/20 p-4"},$t={class:"space-y-4"},Ct={class:"text-sm font-medium"},St={class:"mt-1 text-xs text-muted-foreground"},Bt={class:"text-xs text-muted-foreground"},Ft={class:"mt-2 flex flex-wrap gap-2"},Tt={class:"mt-1 text-sm text-muted-foreground"},Dt={class:"mt-1 text-sm font-medium"},ye=j({__name:"BackupProfileCard",props:{title:{},description:{},formats:{},toolHint:{},targetName:{},formatsLabel:{default:"Supported Files"}},setup(p){return(s,n)=>{const f=ae;return g(),B("div",wt,[t("div",$t,[t("div",null,[t("p",Ct,m(s.title),1),t("p",St,m(s.description),1)]),t("div",null,[t("p",Bt,m(s.formatsLabel),1),t("div",Ft,[(g(!0),B(P,null,J(s.formats,c=>(g(),T(f,{key:c.format,variant:"outline",class:"font-normal"},{default:a(()=>[_(m(c.extension),1)]),_:2},1024))),128))])]),t("div",null,[n[0]||(n[0]=t("p",{class:"text-xs text-muted-foreground"},"Runtime Tools",-1)),t("p",Tt,m(s.toolHint),1)]),t("div",null,[n[1]||(n[1]=t("p",{class:"text-xs text-muted-foreground"},"Target",-1)),t("p",Dt,m(s.targetName),1)])])])}}}),Et={class:"text-muted-foreground"},It={class:"space-y-2 text-xs"},Rt=`brew install postgresql # macOS
1
+ import{_ as He}from"./DDS9xPxH.js";import{d as q,e as B,m as t,t as m,F as P,s as J,o as g,k as T,w as a,z as _,bl as ae,f as o,A as W,l as j,r as F,c as v,au as le,g as e,bm as H,_ as We,i as Y,a0 as Q,n as re,h as Ke,bR as Ge,x as Ze,B as Xe,bj as Ye,bV as Qe,bp as et,a1 as tt,X as st,Y as ot,Z as nt,bn as at,bK as lt,$ as rt,W as it,aZ as ut,bW as ct,bx as dt,E as we,a3 as mt,ba as pt,I as ve,aM as be,bD as ft,bE as gt,bF as _t}from"./BfSmOVMj.js";import{_ as $e,a as Ce}from"./BVl8VKr5.js";import{_ as Se,g as xe,a as ie,b as Be,c as vt,d as Fe,i as bt,e as xt,f as yt}from"./D0mrO5vS.js";import{_ as ht}from"./BCFLQ_rL.js";import{u as kt}from"./DaiufW99.js";const wt={class:"rounded-lg border bg-muted/20 p-4"},$t={class:"space-y-4"},Ct={class:"text-sm font-medium"},St={class:"mt-1 text-xs text-muted-foreground"},Bt={class:"text-xs text-muted-foreground"},Ft={class:"mt-2 flex flex-wrap gap-2"},Tt={class:"mt-1 text-sm text-muted-foreground"},Dt={class:"mt-1 text-sm font-medium"},ye=q({__name:"BackupProfileCard",props:{title:{},description:{},formats:{},toolHint:{},targetName:{},formatsLabel:{default:"Supported Files"}},setup(p){return(s,n)=>{const f=ae;return g(),B("div",wt,[t("div",$t,[t("div",null,[t("p",Ct,m(s.title),1),t("p",St,m(s.description),1)]),t("div",null,[t("p",Bt,m(s.formatsLabel),1),t("div",Ft,[(g(!0),B(P,null,J(s.formats,c=>(g(),T(f,{key:c.format,variant:"outline",class:"font-normal"},{default:a(()=>[_(m(c.extension),1)]),_:2},1024))),128))])]),t("div",null,[n[0]||(n[0]=t("p",{class:"text-xs text-muted-foreground"},"Runtime Tools",-1)),t("p",Tt,m(s.toolHint),1)]),t("div",null,[n[1]||(n[1]=t("p",{class:"text-xs text-muted-foreground"},"Target",-1)),t("p",Dt,m(s.targetName),1)])])])}}}),Et={class:"text-muted-foreground"},It={class:"space-y-2 text-xs"},Rt=`brew install postgresql # macOS
2
2
  apt-get install postgresql-client # Linux
3
3
  # Windows: Download from https://www.postgresql.org/download/windows/`,zt=`brew install mysql # macOS
4
4
  apt-get install mysql-client # Linux
5
5
  # Windows: Download from https://dev.mysql.com/downloads/`,Ot=`brew install sqlite # macOS
6
6
  apt-get install sqlite3 # Linux
7
- # Windows: Download from https://www.sqlite.org/download.html`,Nt=j({__name:"BackupRestoreUnsupportedAlert",props:{supportMessage:{},connectionType:{}},setup(p){return(s,n)=>{const f=W,c=Se,r=ht,d=Ce,b=$e;return g(),T(b,null,{default:a(()=>[o(c,{class:"flex items-center font-medium gap-1"},{default:a(()=>[o(f,{name:"hugeicons:alert-circle",class:"size-4"}),n[0]||(n[0]=_(" Native Tools Required"))]),_:1}),o(d,{class:"space-y-3"},{default:a(()=>[t("p",Et,m(s.supportMessage),1),t("div",It,[n[1]||(n[1]=t("p",{class:"font-medium"},"Installation instructions:",-1)),s.connectionType==="postgres"?(g(),T(r,{key:0,code:Rt,language:"bash"})):s.connectionType==="mysql"||s.connectionType==="mariadb"?(g(),T(r,{key:1,code:zt,language:"bash"})):s.connectionType==="sqlite3"?(g(),T(r,{key:2,code:Ot,language:"bash"})):M("",!0)])]),_:1})]),_:1})}}}),Vt={class:"space-y-4"},qt={class:"space-y-2"},Mt={class:"grid gap-2 sm:grid-cols-2"},jt=["onClick"],Lt={class:"flex items-center justify-between gap-2"},Pt={class:"text-sm font-medium"},At={class:"mt-1 text-xs text-muted-foreground"},Ut={class:"space-y-2"},Jt={key:0,class:"space-y-2"},Ht={class:"flex flex-wrap gap-2 max-h-32 overflow-y-auto p-2 border rounded-md"},Wt={class:"text-xs text-muted-foreground"},Gt=j({__name:"ExportOptionsForm",props:{schemas:{},loading:{type:Boolean},connectionType:{}},emits:["submit"],setup(p,{emit:s}){const n=p,f=s,c=F("full"),r=F(xe(n.connectionType)),d=F([]),b=v(()=>ie(n.connectionType));le(b,h=>{var w;h.some(D=>D.format===r.value)||(r.value=((w=h[0])==null?void 0:w.format)||xe(n.connectionType))},{immediate:!0});const i=[{value:"full",label:"Full (schema + data)"},{value:"schema-only",label:"Schema only (no data)"},{value:"data-only",label:"Data only (no schema)"}],C=()=>{const h={format:r.value,scope:c.value};h.schemas=d.value.length>0?d.value:n.schemas,f("submit",h)};return(h,w)=>{const D=Ke,z=Ge,l=Ze,x=Xe,S=We,E=W,I=Q;return g(),B("div",Vt,[t("div",qt,[o(e(H),null,{default:a(()=>w[1]||(w[1]=[_("Backup Format")])),_:1}),t("div",Mt,[(g(!0),B(P,null,J(e(b),u=>(g(),B("button",{key:u.format,type:"button",class:re(["rounded-lg border p-3 text-left transition-colors",e(r)===u.format?"border-primary bg-primary/5":"hover:border-primary/40 hover:bg-muted/20"]),onClick:k=>r.value=u.format},[t("div",Lt,[t("p",Pt,m(u.label),1),o(e(ae),{variant:"secondary",class:"font-normal"},{default:a(()=>[_(m(u.extension),1)]),_:2},1024)]),t("p",At," Runtime uses "+m(e(Be)(n.connectionType))+". ",1)],10,jt))),128))])]),t("div",Ut,[o(e(H),null,{default:a(()=>w[2]||(w[2]=[_("Export Scope")])),_:1}),o(S,{modelValue:e(c),"onUpdate:modelValue":w[0]||(w[0]=u=>Y(c)?c.value=u:null)},{default:a(()=>[o(z,{size:"sm",class:"h-7!"},{default:a(()=>[o(D,{placeholder:"Select scope"})]),_:1}),o(x,null,{default:a(()=>[(g(),B(P,null,J(i,u=>o(l,{key:u.value,value:u.value},{default:a(()=>[_(m(u.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),h.schemas.length>0?(g(),B("div",Jt,[o(e(H),null,{default:a(()=>w[3]||(w[3]=[_("Schemas (optional)")])),_:1}),t("div",Ht,[(g(!0),B(P,null,J(h.schemas,u=>(g(),T(e(ae),{key:u,variant:e(d).includes(u)?"default":"outline",class:"cursor-pointer",onClick:()=>e(d).includes(u)?d.value=e(d).filter(k=>k!==u):e(d).push(u)},{default:a(()=>[_(m(u),1)]),_:2},1032,["variant","onClick"]))),128))]),t("p",Wt,m(e(d).length?`${e(d).length} selected`:"All visible schemas"),1)])):M("",!0),o(I,{class:"w-full",disabled:h.loading,onClick:C},{default:a(()=>[h.loading?(g(),T(E,{key:0,name:"hugeicons:loading-03",class:"size-4 mr-2 animate-spin"})):(g(),T(E,{key:1,name:"lucide:download",class:"size-4 mr-2"})),_(" "+m(h.loading?"Creating Backup...":"Create Backup"),1)]),_:1},8,["disabled"])])}}}),Kt={class:"relative mt-2 cursor-pointer rounded-lg border-2 border-dashed p-6 text-center transition-colors hover:border-primary/50"},Xt=["accept"],Zt={key:0,class:"text-muted-foreground pointer-events-none"},Yt={class:"text-xs mt-1"},Qt={key:1,class:"flex items-center justify-center gap-3"},es={class:"text-left"},ts={class:"text-sm font-medium"},ss={class:"text-xs text-muted-foreground"},os=j({__name:"ImportFileDropzone",props:{selectedFile:{},accept:{},extensionSummary:{}},emits:["change","clear"],setup(p){const s=n=>n<1024?`${n} B`:n<1048576?`${(n/1024).toFixed(1)} KB`:`${(n/1048576).toFixed(1)} MB`;return(n,f)=>{const c=H,r=W,d=Q;return g(),B("div",null,[o(c,{class:"text-sm font-medium"},{default:a(()=>f[2]||(f[2]=[_("Backup File")])),_:1}),t("div",Kt,[t("input",{type:"file",accept:n.accept,class:"absolute inset-0 w-full h-full opacity-0 cursor-pointer",onChange:f[0]||(f[0]=b=>n.$emit("change",b))},null,40,Xt),n.selectedFile?(g(),B("div",Qt,[o(r,{name:"hugeicons:file-01",class:"size-8 text-primary"}),t("div",es,[t("p",ts,m(n.selectedFile.name),1),t("p",ss,m(s(n.selectedFile.size)),1)]),o(d,{variant:"ghost",size:"icon",class:"ml-2 relative z-10",type:"button",onClick:f[1]||(f[1]=Ye(b=>n.$emit("clear"),["stop"]))},{default:a(()=>[o(r,{name:"hugeicons:x-close",class:"size-4"})]),_:1})])):(g(),B("div",Zt,[o(r,{name:"hugeicons:upload-cloud-01",class:"size-10 mx-auto mb-2 opacity-50"}),f[3]||(f[3]=t("p",{class:"text-sm font-medium"},"Click to select a file",-1)),t("p",Yt,"Supports "+m(n.extensionSummary)+" backups",1)]))])])}}}),ns={class:"space-y-3"},as={class:"grid grid-cols-2 gap-4"},ls=j({__name:"ImportOptionsForm",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(p){const s=Qe(p,"modelValue"),n=(c,r)=>{s.value[c]=r},f=[{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(c,r)=>{const d=H,b=et;return g(),B("div",ns,[o(d,{class:"text-sm font-medium"},{default:a(()=>r[0]||(r[0]=[_("Options")])),_:1}),t("div",as,[(g(),B(P,null,J(f,i=>t("div",{key:i.key,class:"flex items-center space-x-2"},[o(b,{id:i.id,"model-value":s.value[i.key],"onUpdate:modelValue":C=>n(i.key,C)},null,8,["id","model-value","onUpdate:modelValue"]),o(d,{for:i.id,class:"text-sm"},{default:a(()=>[_(m(i.label),1)]),_:2},1032,["for"])])),64))])])}}}),rs={class:"space-y-3 py-1"},ne="restore backup",is=j({__name:"RestoreConfirmDialog",props:{open:{type:Boolean}},emits:["confirm","cancel"],setup(p,{emit:s}){const n=p,f=s,c=F("");le(()=>n.open,b=>{b&&(c.value="")});const r=v(()=>c.value===ne),d=()=>{r.value&&f("confirm")};return(b,i)=>{const C=W,h=ot,w=nt,D=st,z=H,l=at,x=Q,S=rt,E=it,I=tt;return g(),T(I,{open:b.open,"onUpdate:open":i[2]||(i[2]=u=>!u&&b.$emit("cancel"))},{default:a(()=>[o(E,{class:"max-w-sm"},{default:a(()=>[o(D,null,{default:a(()=>[o(h,{class:"flex items-center gap-2 text-destructive"},{default:a(()=>[o(C,{name:"hugeicons:alert-02",class:"size-5"}),i[3]||(i[3]=_(" Confirm Restore "))]),_:1}),o(w,null,{default:a(()=>i[4]||(i[4]=[_(" This will overwrite existing data in the target database. This action cannot be undone. ")])),_:1})]),_:1}),t("div",rs,[o(z,{for:"restore-confirm-input"},{default:a(()=>[i[5]||(i[5]=_(" Type ")),t("code",{class:"rounded bg-muted px-1 py-0.5 text-xs font-mono"},m(ne)),i[6]||(i[6]=_(" to continue: "))]),_:1}),o(l,{id:"restore-confirm-input",modelValue:e(c),"onUpdate:modelValue":i[0]||(i[0]=u=>Y(c)?c.value=u:null),placeholder:ne,autocomplete:"off",onKeydown:lt(d,["enter"])},null,8,["modelValue"])]),o(S,null,{default:a(()=>[o(x,{variant:"outline",onClick:i[1]||(i[1]=u=>b.$emit("cancel"))},{default:a(()=>i[7]||(i[7]=[_("Cancel")])),_:1}),o(x,{variant:"destructive",disabled:!e(r),onClick:d},{default:a(()=>i[8]||(i[8]=[_(" Restore ")])),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])}}}),us={class:"rounded-lg border bg-muted/30 p-4"},cs={class:"flex items-center justify-between gap-4"},ds={class:"text-sm font-medium"},ms={class:"text-xs text-muted-foreground"},ps={class:"text-sm font-medium"},fs={class:"mt-3 h-2 overflow-hidden rounded-full bg-border/60"},he=j({__name:"TransferProgressCard",props:{tool:{},stage:{},statusMessage:{},progress:{},isRunning:{type:Boolean},progressClass:{default:"bg-primary"}},setup(p){return(s,n)=>(g(),B("div",us,[t("div",cs,[t("div",null,[t("p",ds,m(s.tool)+" · "+m(s.stage),1),t("p",ms,m(s.statusMessage||"Preparing job..."),1)]),t("span",ps,m(s.progress)+"%",1)]),t("div",fs,[t("div",{class:re(["h-full rounded-full transition-all duration-300",s.progressClass]),style:ut({width:`${Math.max(s.progress,s.isRunning?8:0)}%`})},null,6)])]))}});function ke(p){return!!(p&&(p.status==="completed"||p.status==="error"))}const Te=()=>{const p=F(null),s=F(null),n=F(null),f=F(!1);let c=null,r=null;const d=l=>{c==null||c(l),c=null,r=null},b=l=>{r==null||r(l),c=null,r=null},i=async()=>{if(!n.value)throw new Error("Backup job status URL is missing.");if(f.value){if(p.value)return p.value;throw new Error("Backup job refresh is already in progress.")}f.value=!0;try{const l=await $fetch(n.value);return p.value=l,l.status==="error"&&(s.value=l.error||l.message),ke(l)&&(C(),d(l)),l}catch(l){const x=l instanceof Error?l:new Error("Failed to refresh backup job status.");throw s.value=x.message,C(),b(x),x}finally{f.value=!1}},{pause:C,resume:h,isActive:w}=ct(()=>{i()},1e3,{immediate:!1,immediateCallback:!1}),D=async l=>{n.value=l,s.value=null;const x=await i();return ke(x)?x:(h(),await new Promise((S,E)=>{c=S,r=E}))},z=()=>{C(),n.value=null,p.value=null,s.value=null,f.value=!1,c=null,r=null};return dt(()=>{C()}),{job:p,error:s,isRefreshing:f,isPolling:w,progress:v(()=>{var l;return((l=p.value)==null?void 0:l.progress)??0}),message:v(()=>{var l;return((l=p.value)==null?void 0:l.message)??null}),stage:v(()=>{var l;return((l=p.value)==null?void 0:l.stage)??"queued"}),status:v(()=>{var l;return((l=p.value)==null?void 0:l.status)??"queued"}),isRunning:v(()=>{var l,x;return((l=p.value)==null?void 0:l.status)==="queued"||((x=p.value)==null?void 0:x.status)==="running"}),monitorJob:D,refresh:i,reset:z}},gs=p=>{const s=F(null),n=F(null),f=Te(),{downloadStream:c,isDownloading:r,downloadedBytes:d}=kt(),b=v(()=>f.isRunning.value||r.value),i=v(()=>r.value?100:f.progress.value),C=v(()=>r.value?`Downloading backup artifact (${d.value} bytes)...`:f.message.value),h=v(()=>f.job.value),w=async(l,x)=>{var S,E;if(!p.value)return s.value="No database connection provided",!1;s.value=null,n.value=null;try{const I=await $fetch("/api/database-export/export-database",{method:"POST",body:{...we(p.value),databaseName:l,options:x}}),u=await f.monitorJob(I.statusUrl);if(u.status==="error")return s.value=u.error||u.message,!1;if(!u.downloadUrl||!u.downloadFileName)return s.value="Export finished but no download artifact was returned.",!1;const k=await c({url:u.downloadUrl,method:"GET",filename:u.downloadFileName||`${l}_backup${D((S=p.value)==null?void 0:S.type,x.format)}`});return k.success?(n.value={fileName:u.downloadFileName,duration:u.duration||0},!0):(s.value=((E=k.error)==null?void 0:E.message)||"Download failed.",!1)}catch(I){return s.value=I instanceof Error?I.message:"Export failed. Check the connection and backup configuration.",console.error("Export error:",I),!1}},D=(l,x)=>vt(l,x);return{isExporting:b,progress:i,error:s,lastExport:n,currentJob:h,statusMessage:C,exportDatabase:w,reset:()=>{f.reset(),s.value=null,n.value=null}}},_s=p=>{const s=Te(),n=v(()=>s.isRunning.value),f=v(()=>s.progress.value),c=v(()=>s.message.value),r=v(()=>s.job.value),d=F(null),b=F(null),i=F(null),C=F(null),h=F({clean:!1,dataOnly:!1,schemaOnly:!1,exitOnError:!0}),w=v(()=>{var k;return(k=p.value)==null?void 0:k.type}),D=v(()=>ie(w.value)),z=v(()=>Fe(w.value)),l=v(()=>D.value.map(k=>k.extension).join(" / ")),x=()=>{i.value=null,C.value&&(C.value.value="")};return{isImporting:n,progress:f,statusMessage:c,currentJob:r,error:d,success:b,selectedFile:i,fileInputRef:C,options:h,extensionSummary:l,clearSelectedFile:x,openFilePicker:()=>{var k;(k=C.value)==null||k.click()},onFileSelect:k=>{var A;const N=k.target;if(!((A=N.files)!=null&&A.length))return;const V=N.files[0];if(!D.value.some(q=>V.name.toLowerCase().endsWith(q.extension.toLowerCase()))){x(),d.value=`Unsupported file type. Use ${l.value} for ${z.value}.`,b.value=null;return}i.value=V,d.value=null,b.value=null},importDatabase:async()=>{if(!(!i.value||!p.value)){d.value=null,b.value=null;try{const k=new FormData;k.append("file",i.value);const N=we(p.value);Object.entries(N).forEach(([A,q])=>{q!==void 0&&k.append(A,typeof q=="object"?JSON.stringify(q):String(q))}),k.append("options",JSON.stringify(h.value));const V=await $fetch("/api/database-import/import-database",{method:"POST",body:k}),O=await s.monitorJob(V.statusUrl);if(O.status==="completed"){b.value=O.message||"Database imported successfully",x();return}d.value=O.error||O.message||"Import failed"}catch(k){d.value=k instanceof Error?k.message:"Import failed. Check the backup file and connection compatibility.",console.error("Import error:",k)}}},reset:()=>{s.reset(),d.value=null,b.value=null,x()}}},vs={class:"flex flex-col h-full gap-3 overflow-hidden p-3"},bs={class:"font-medium text-foreground"},xs={class:"text-muted-foreground/60"},ys={class:"flex items-center justify-between gap-2"},hs={class:"text-xs text-muted-foreground"},ks={class:"flex-1 overflow-y-auto rounded-lg border bg-background p-4"},ws={class:"space-y-4"},$s={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Cs={class:"mt-1 text-sm text-muted-foreground"},Ss={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Bs={class:"rounded-lg border p-4"},Fs={class:"space-y-4"},Ts={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Ds={class:"mt-1 text-sm text-muted-foreground"},Es={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Is={class:"rounded-lg border p-4 space-y-4"},Rs={class:"text-muted-foreground text-xs inline-flex items-center gap-0.5"},zs={class:"text-destructive gap-0.5 items-center inline-flex"},Ls=j({__name:"BackupRestoreContainer",props:{connectionId:{},initialTab:{}},setup(p){const s=p,n=mt(),f=pt(),c=v(()=>{if(s.connectionId)return n.connections.find($=>$.id===s.connectionId)}),r=v(()=>{var $;return($=c.value)==null?void 0:$.type}),d=v(()=>{var $,y;return(($=c.value)==null?void 0:$.database)||((y=c.value)==null?void 0:y.name)||"database"}),b=v(()=>Fe(r.value)),i=v(()=>bt(r.value)),C=v(()=>xt(r.value)),h=v(()=>Be(r.value)),w=v(()=>ie(r.value)),D=v(()=>yt(r.value)),z=v(()=>w.value.map($=>$.extension).join(" / ")),l=v(()=>s.connectionId?(f.schemas[s.connectionId]||[]).filter($=>$.connectionId===s.connectionId).map($=>$.name):[]),x=[{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"}],S=F(s.initialTab),E=v(()=>x.find($=>$.id===S.value));le(()=>s.initialTab,$=>{S.value=$});const I=$=>{S.value=$},{isExporting:u,progress:k,error:N,lastExport:V,currentJob:O,statusMessage:A,exportDatabase:q,reset:De}=gs(c),Ee=async $=>{await q(d.value,$)},{isImporting:U,progress:Ie,statusMessage:Re,currentJob:ee,error:ue,success:ce,selectedFile:de,options:te,extensionSummary:ze,onFileSelect:Oe,clearSelectedFile:Ne,importDatabase:Ve,reset:qe}=_s(c),G=F(!1),Me=()=>{G.value=!0},je=async()=>{G.value=!1,await Ve()},Le=()=>{G.value=!1};return($,y)=>{var me,pe,fe,ge,_e;const Pe=He,L=W,Ae=_t,Ue=gt,Je=ft,K=Se,X=Ce,se=Q,Z=$e;return g(),B("div",vs,[o(is,{open:e(G),onConfirm:je,onCancel:Le},null,8,["open"]),o(Pe,{icon:"hugeicons:database-import",title:"Backup & Restore"},{context:a(()=>[t("span",bs,m(e(d)),1),t("span",xs,"· "+m(e(b)),1)]),_:1}),t("div",ys,[o(Je,{modelValue:e(S),"onUpdate:modelValue":y[0]||(y[0]=R=>Y(S)?S.value=R:null),class:"min-w-0 flex-1 gap-0"},{default:a(()=>[o(Ue,{class:"h-8 max-w-full justify-start! overflow-x-auto"},{default:a(()=>[(g(),B(P,null,J(x,R=>o(Ae,{key:R.id,value:R.id,class:"min-w-fit shrink-0 cursor-pointer rounded-sm px-1.5 text-xs",disabled:!e(i),onClick:oe=>I(R.id)},{default:a(()=>[o(L,{name:R.icon,class:"shrink-0 size-3.5"},null,8,["name"]),_(" "+m(R.tabLabel),1)]),_:2},1032,["value","disabled","onClick"])),64))]),_:1})]),_:1},8,["modelValue"]),t("div",hs,m((me=e(E))==null?void 0:me.subtitle),1)]),t("div",ks,[e(i)?(g(),B(P,{key:1},[ve(t("div",ws,[t("div",$s,[t("div",null,[y[2]||(y[2]=t("h3",{class:"text-base font-medium"},"Create Backup",-1)),t("p",Cs," Export "+m(e(d))+" using "+m(e(h))+". ",1)])]),e(N)?(g(),T(Z,{key:0,variant:"destructive"},{default:a(()=>[o(L,{name:"hugeicons:alert-circle",class:"size-4"}),o(K,null,{default:a(()=>y[3]||(y[3]=[_("Backup Failed")])),_:1}),o(X,null,{default:a(()=>[_(m(e(N)),1)]),_:1}),o(se,{size:"sm",variant:"outline",class:"mt-2",onClick:e(De)},{default:a(()=>y[4]||(y[4]=[_(" Try Again ")])),_:1},8,["onClick"])]),_:1})):M("",!0),e(V)&&!e(u)&&!e(N)?(g(),T(Z,{key:1},{default:a(()=>[o(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),o(K,null,{default:a(()=>y[5]||(y[5]=[_("Backup Complete")])),_:1}),o(X,null,{default:a(()=>{var R,oe;return[_(m((R=e(V))==null?void 0:R.fileName)+" downloaded in "+m(((((oe=e(V))==null?void 0:oe.duration)||0)/1e3).toFixed(1))+"s ",1)]}),_:1})]),_:1})):M("",!0),e(u)||e(O)?(g(),T(he,{key:2,tool:((pe=e(O))==null?void 0:pe.tool)||e(h),stage:((fe=e(O))==null?void 0:fe.stage)||"queued","status-message":e(A)||"",progress:e(k),"is-running":e(u)},null,8,["tool","stage","status-message","progress","is-running"])):M("",!0),t("div",Ss,[t("div",Bs,[o(Gt,{schemas:e(l),loading:e(u),"connection-type":e(r),onSubmit:Ee},null,8,["schemas","loading","connection-type"])]),o(ye,{title:"Backup Profile",description:"Exports run on the local runtime host and stream the artifact directly into a downloadable file.",formats:e(w),"tool-hint":e(h),"target-name":e(d),"formats-label":"Supported Files"},null,8,["formats","tool-hint","target-name"])])],512),[[be,e(S)==="export"]]),ve(t("div",Fs,[t("div",Ts,[t("div",null,[y[6]||(y[6]=t("h3",{class:"text-base font-medium"},"Restore Backup",-1)),t("p",Ds," Restore a "+m(e(z))+" backup into "+m(e(d))+". ",1)])]),e(ue)?(g(),T(Z,{key:0,variant:"destructive"},{default:a(()=>[o(L,{name:"hugeicons:alert-circle",class:"size-4"}),o(K,null,{default:a(()=>y[7]||(y[7]=[_("Import Failed")])),_:1}),o(X,null,{default:a(()=>[_(m(e(ue)),1)]),_:1}),o(se,{size:"sm",variant:"outline",class:"mt-2",onClick:e(qe)},{default:a(()=>y[8]||(y[8]=[_(" Try Again ")])),_:1},8,["onClick"])]),_:1})):M("",!0),e(ce)?(g(),T(Z,{key:1},{default:a(()=>[o(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),o(K,null,{default:a(()=>y[9]||(y[9]=[_("Import Complete")])),_:1}),o(X,null,{default:a(()=>[_(m(e(ce)),1)]),_:1})]),_:1})):M("",!0),e(U)||e(ee)?(g(),T(he,{key:2,tool:((ge=e(ee))==null?void 0:ge.tool)||e(h),stage:((_e=e(ee))==null?void 0:_e.stage)||"queued","status-message":e(Re)||"",progress:e(Ie),"is-running":e(U),"progress-class":"bg-emerald-500"},null,8,["tool","stage","status-message","progress","is-running"])):M("",!0),t("div",Es,[t("div",Is,[o(os,{"selected-file":e(de),accept:e(D),"extension-summary":e(ze),onChange:e(Oe),onClear:e(Ne)},null,8,["selected-file","accept","extension-summary","onChange","onClear"]),o(ls,{modelValue:e(te),"onUpdate:modelValue":y[1]||(y[1]=R=>Y(te)?te.value=R:null)},null,8,["modelValue"]),o(se,{class:"w-full",size:"lg",disabled:!e(de)||e(U),onClick:Me},{default:a(()=>[o(L,{name:e(U)?"hugeicons:loading-03":"hugeicons:upload-01",class:re(["size-4 mr-2",e(U)&&"animate-spin"])},null,8,["name","class"]),_(" "+m(e(U)?"Restoring...":"Restore Backup"),1)]),_:1},8,["disabled"]),t("p",Rs,[t("polyline",zs,[o(L,{name:"hugeicons:alert-circle",class:"size-4 text-destructive"}),y[10]||(y[10]=_(" Warning: "))]),y[11]||(y[11]=_(" Importing a database can overwrite existing data. Make sure you have a backup before proceeding. "))])]),o(ye,{title:"Restore Profile",description:"Use a backup file produced for the same database family and runtime toolchain.",formats:e(w),"tool-hint":e(h),"target-name":e(d),"formats-label":"Accepted Files"},null,8,["formats","tool-hint","target-name"])])],512),[[be,e(S)==="import"]])],64)):(g(),T(Nt,{key:0,"support-message":e(C),"connection-type":e(r)},null,8,["support-message","connection-type"]))])])}}});export{Ls as _};
7
+ # Windows: Download from https://www.sqlite.org/download.html`,Vt=q({__name:"BackupRestoreUnsupportedAlert",props:{supportMessage:{},connectionType:{}},setup(p){return(s,n)=>{const f=W,c=Se,r=ht,d=Ce,b=$e;return g(),T(b,null,{default:a(()=>[o(c,{class:"flex items-center font-medium gap-1"},{default:a(()=>[o(f,{name:"hugeicons:alert-circle",class:"size-4"}),n[0]||(n[0]=_(" Native Tools Required"))]),_:1}),o(d,{class:"space-y-3"},{default:a(()=>[t("p",Et,m(s.supportMessage),1),t("div",It,[n[1]||(n[1]=t("p",{class:"font-medium"},"Installation instructions:",-1)),s.connectionType==="postgres"?(g(),T(r,{key:0,code:Rt,language:"bash"})):s.connectionType==="mysql"||s.connectionType==="mariadb"?(g(),T(r,{key:1,code:zt,language:"bash"})):s.connectionType==="sqlite3"?(g(),T(r,{key:2,code:Ot,language:"bash"})):j("",!0)])]),_:1})]),_:1})}}}),Nt={class:"space-y-4"},Mt={class:"space-y-2"},jt={class:"grid gap-2 sm:grid-cols-2"},qt=["onClick"],Lt={class:"flex items-center justify-between gap-2"},Pt={class:"text-sm font-medium"},At={class:"mt-1 text-xs text-muted-foreground"},Ut={class:"space-y-2"},Jt={key:0,class:"space-y-2"},Ht={class:"flex flex-wrap gap-2 max-h-32 overflow-y-auto p-2 border rounded-md"},Wt={class:"text-xs text-muted-foreground"},Kt=q({__name:"ExportOptionsForm",props:{schemas:{},loading:{type:Boolean},connectionType:{}},emits:["submit"],setup(p,{emit:s}){const n=p,f=s,c=F("full"),r=F(xe(n.connectionType)),d=F([]),b=v(()=>ie(n.connectionType));le(b,h=>{var w;h.some(D=>D.format===r.value)||(r.value=((w=h[0])==null?void 0:w.format)||xe(n.connectionType))},{immediate:!0});const i=[{value:"full",label:"Full (schema + data)"},{value:"schema-only",label:"Schema only (no data)"},{value:"data-only",label:"Data only (no schema)"}],C=()=>{const h={format:r.value,scope:c.value};h.schemas=d.value.length>0?d.value:n.schemas,f("submit",h)};return(h,w)=>{const D=Ge,z=Ke,l=Xe,x=Ze,S=We,E=W,I=Q;return g(),B("div",Nt,[t("div",Mt,[o(e(H),null,{default:a(()=>w[1]||(w[1]=[_("Backup Format")])),_:1}),t("div",jt,[(g(!0),B(P,null,J(e(b),u=>(g(),B("button",{key:u.format,type:"button",class:re(["rounded-lg border p-3 text-left transition-colors",e(r)===u.format?"border-primary bg-primary/5":"hover:border-primary/40 hover:bg-muted/20"]),onClick:k=>r.value=u.format},[t("div",Lt,[t("p",Pt,m(u.label),1),o(e(ae),{variant:"secondary",class:"font-normal"},{default:a(()=>[_(m(u.extension),1)]),_:2},1024)]),t("p",At," Runtime uses "+m(e(Be)(n.connectionType))+". ",1)],10,qt))),128))])]),t("div",Ut,[o(e(H),null,{default:a(()=>w[2]||(w[2]=[_("Export Scope")])),_:1}),o(S,{modelValue:e(c),"onUpdate:modelValue":w[0]||(w[0]=u=>Y(c)?c.value=u:null)},{default:a(()=>[o(z,{size:"sm",class:"h-7!"},{default:a(()=>[o(D,{placeholder:"Select scope"})]),_:1}),o(x,null,{default:a(()=>[(g(),B(P,null,J(i,u=>o(l,{key:u.value,value:u.value},{default:a(()=>[_(m(u.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),h.schemas.length>0?(g(),B("div",Jt,[o(e(H),null,{default:a(()=>w[3]||(w[3]=[_("Schemas (optional)")])),_:1}),t("div",Ht,[(g(!0),B(P,null,J(h.schemas,u=>(g(),T(e(ae),{key:u,variant:e(d).includes(u)?"default":"outline",class:"cursor-pointer",onClick:()=>e(d).includes(u)?d.value=e(d).filter(k=>k!==u):e(d).push(u)},{default:a(()=>[_(m(u),1)]),_:2},1032,["variant","onClick"]))),128))]),t("p",Wt,m(e(d).length?`${e(d).length} selected`:"All visible schemas"),1)])):j("",!0),o(I,{class:"w-full",disabled:h.loading,onClick:C},{default:a(()=>[h.loading?(g(),T(E,{key:0,name:"hugeicons:loading-03",class:"size-4 mr-2 animate-spin"})):(g(),T(E,{key:1,name:"lucide:download",class:"size-4 mr-2"})),_(" "+m(h.loading?"Creating Backup...":"Create Backup"),1)]),_:1},8,["disabled"])])}}}),Gt={class:"relative mt-2 cursor-pointer rounded-lg border-2 border-dashed p-6 text-center transition-colors hover:border-primary/50"},Zt=["accept"],Xt={key:0,class:"text-muted-foreground pointer-events-none"},Yt={class:"text-xs mt-1"},Qt={key:1,class:"flex items-center justify-center gap-3"},es={class:"text-left"},ts={class:"text-sm font-medium"},ss={class:"text-xs text-muted-foreground"},os=q({__name:"ImportFileDropzone",props:{selectedFile:{},accept:{},extensionSummary:{}},emits:["change","clear"],setup(p){const s=n=>n<1024?`${n} B`:n<1048576?`${(n/1024).toFixed(1)} KB`:`${(n/1048576).toFixed(1)} MB`;return(n,f)=>{const c=H,r=W,d=Q;return g(),B("div",null,[o(c,{class:"text-sm font-medium"},{default:a(()=>f[2]||(f[2]=[_("Backup File")])),_:1}),t("div",Gt,[t("input",{type:"file",accept:n.accept,class:"absolute inset-0 w-full h-full opacity-0 cursor-pointer",onChange:f[0]||(f[0]=b=>n.$emit("change",b))},null,40,Zt),n.selectedFile?(g(),B("div",Qt,[o(r,{name:"hugeicons:file-01",class:"size-8 text-primary"}),t("div",es,[t("p",ts,m(n.selectedFile.name),1),t("p",ss,m(s(n.selectedFile.size)),1)]),o(d,{variant:"ghost",size:"icon",class:"ml-2 relative z-10",type:"button",onClick:f[1]||(f[1]=Ye(b=>n.$emit("clear"),["stop"]))},{default:a(()=>[o(r,{name:"hugeicons:x-close",class:"size-4"})]),_:1})])):(g(),B("div",Xt,[o(r,{name:"hugeicons:upload-cloud-01",class:"size-10 mx-auto mb-2 opacity-50"}),f[3]||(f[3]=t("p",{class:"text-sm font-medium"},"Click to select a file",-1)),t("p",Yt,"Supports "+m(n.extensionSummary)+" backups",1)]))])])}}}),ns={class:"space-y-3"},as={class:"grid grid-cols-2 gap-4"},ls=q({__name:"ImportOptionsForm",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(p){const s=Qe(p,"modelValue"),n=(c,r)=>{s.value[c]=r},f=[{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(c,r)=>{const d=H,b=et;return g(),B("div",ns,[o(d,{class:"text-sm font-medium"},{default:a(()=>r[0]||(r[0]=[_("Options")])),_:1}),t("div",as,[(g(),B(P,null,J(f,i=>t("div",{key:i.key,class:"flex items-center space-x-2"},[o(b,{id:i.id,"model-value":s.value[i.key],"onUpdate:modelValue":C=>n(i.key,C)},null,8,["id","model-value","onUpdate:modelValue"]),o(d,{for:i.id,class:"text-sm"},{default:a(()=>[_(m(i.label),1)]),_:2},1032,["for"])])),64))])])}}}),rs={class:"space-y-3 py-1"},ne="restore backup",is=q({__name:"RestoreConfirmDialog",props:{open:{type:Boolean}},emits:["confirm","cancel"],setup(p,{emit:s}){const n=p,f=s,c=F("");le(()=>n.open,b=>{b&&(c.value="")});const r=v(()=>c.value===ne),d=()=>{r.value&&f("confirm")};return(b,i)=>{const C=W,h=ot,w=nt,D=st,z=H,l=at,x=Q,S=rt,E=it,I=tt;return g(),T(I,{open:b.open,"onUpdate:open":i[2]||(i[2]=u=>!u&&b.$emit("cancel"))},{default:a(()=>[o(E,{class:"max-w-sm"},{default:a(()=>[o(D,null,{default:a(()=>[o(h,{class:"flex items-center gap-2 text-destructive"},{default:a(()=>[o(C,{name:"hugeicons:alert-02",class:"size-5"}),i[3]||(i[3]=_(" Confirm Restore "))]),_:1}),o(w,null,{default:a(()=>i[4]||(i[4]=[_(" This will overwrite existing data in the target database. This action cannot be undone. ")])),_:1})]),_:1}),t("div",rs,[o(z,{for:"restore-confirm-input"},{default:a(()=>[i[5]||(i[5]=_(" Type ")),t("code",{class:"rounded bg-muted px-1 py-0.5 text-xs font-mono"},m(ne)),i[6]||(i[6]=_(" to continue: "))]),_:1}),o(l,{id:"restore-confirm-input",modelValue:e(c),"onUpdate:modelValue":i[0]||(i[0]=u=>Y(c)?c.value=u:null),placeholder:ne,autocomplete:"off",onKeydown:lt(d,["enter"])},null,8,["modelValue"])]),o(S,null,{default:a(()=>[o(x,{variant:"outline",onClick:i[1]||(i[1]=u=>b.$emit("cancel"))},{default:a(()=>i[7]||(i[7]=[_("Cancel")])),_:1}),o(x,{variant:"destructive",disabled:!e(r),onClick:d},{default:a(()=>i[8]||(i[8]=[_(" Restore ")])),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])}}}),us={class:"rounded-lg border bg-muted/30 p-4"},cs={class:"flex items-center justify-between gap-4"},ds={class:"text-sm font-medium"},ms={class:"text-xs text-muted-foreground"},ps={class:"text-sm font-medium"},fs={class:"mt-3 h-2 overflow-hidden rounded-full bg-border/60"},he=q({__name:"TransferProgressCard",props:{tool:{},stage:{},statusMessage:{},progress:{},isRunning:{type:Boolean},progressClass:{default:"bg-primary"}},setup(p){return(s,n)=>(g(),B("div",us,[t("div",cs,[t("div",null,[t("p",ds,m(s.tool)+" · "+m(s.stage),1),t("p",ms,m(s.statusMessage||"Preparing job..."),1)]),t("span",ps,m(s.progress)+"%",1)]),t("div",fs,[t("div",{class:re(["h-full rounded-full transition-all duration-300",s.progressClass]),style:ut({width:`${Math.max(s.progress,s.isRunning?8:0)}%`})},null,6)])]))}});function ke(p){return!!(p&&(p.status==="completed"||p.status==="error"))}const Te=()=>{const p=F(null),s=F(null),n=F(null),f=F(!1);let c=null,r=null;const d=l=>{c==null||c(l),c=null,r=null},b=l=>{r==null||r(l),c=null,r=null},i=async()=>{if(!n.value)throw new Error("Backup job status URL is missing.");if(f.value){if(p.value)return p.value;throw new Error("Backup job refresh is already in progress.")}f.value=!0;try{const l=await $fetch(n.value);return p.value=l,l.status==="error"&&(s.value=l.error||l.message),ke(l)&&(C(),d(l)),l}catch(l){const x=l instanceof Error?l:new Error("Failed to refresh backup job status.");throw s.value=x.message,C(),b(x),x}finally{f.value=!1}},{pause:C,resume:h,isActive:w}=ct(()=>{i()},1e3,{immediate:!1,immediateCallback:!1}),D=async l=>{n.value=l,s.value=null;const x=await i();return ke(x)?x:(h(),await new Promise((S,E)=>{c=S,r=E}))},z=()=>{C(),n.value=null,p.value=null,s.value=null,f.value=!1,c=null,r=null};return dt(()=>{C()}),{job:p,error:s,isRefreshing:f,isPolling:w,progress:v(()=>{var l;return((l=p.value)==null?void 0:l.progress)??0}),message:v(()=>{var l;return((l=p.value)==null?void 0:l.message)??null}),stage:v(()=>{var l;return((l=p.value)==null?void 0:l.stage)??"queued"}),status:v(()=>{var l;return((l=p.value)==null?void 0:l.status)??"queued"}),isRunning:v(()=>{var l,x;return((l=p.value)==null?void 0:l.status)==="queued"||((x=p.value)==null?void 0:x.status)==="running"}),monitorJob:D,refresh:i,reset:z}},gs=p=>{const s=F(null),n=F(null),f=Te(),{downloadStream:c,isDownloading:r,downloadedBytes:d}=kt(),b=v(()=>f.isRunning.value||r.value),i=v(()=>r.value?100:f.progress.value),C=v(()=>r.value?`Downloading backup artifact (${d.value} bytes)...`:f.message.value),h=v(()=>f.job.value),w=async(l,x)=>{var S,E;if(!p.value)return s.value="No database connection provided",!1;s.value=null,n.value=null;try{const I=await $fetch("/api/database-export/export-database",{method:"POST",body:{...we(p.value),databaseName:l,options:x}}),u=await f.monitorJob(I.statusUrl);if(u.status==="error")return s.value=u.error||u.message,!1;if(!u.downloadUrl||!u.downloadFileName)return s.value="Export finished but no download artifact was returned.",!1;const k=await c({url:u.downloadUrl,method:"GET",filename:u.downloadFileName||`${l}_backup${D((S=p.value)==null?void 0:S.type,x.format)}`});return k.success?(n.value={fileName:u.downloadFileName,duration:u.duration||0},!0):(s.value=((E=k.error)==null?void 0:E.message)||"Download failed.",!1)}catch(I){return s.value=I instanceof Error?I.message:"Export failed. Check the connection and backup configuration.",console.error("Export error:",I),!1}},D=(l,x)=>vt(l,x);return{isExporting:b,progress:i,error:s,lastExport:n,currentJob:h,statusMessage:C,exportDatabase:w,reset:()=>{f.reset(),s.value=null,n.value=null}}},_s=p=>{const s=Te(),n=v(()=>s.isRunning.value),f=v(()=>s.progress.value),c=v(()=>s.message.value),r=v(()=>s.job.value),d=F(null),b=F(null),i=F(null),C=F(null),h=F({clean:!1,dataOnly:!1,schemaOnly:!1,exitOnError:!0}),w=v(()=>{var k;return(k=p.value)==null?void 0:k.type}),D=v(()=>ie(w.value)),z=v(()=>Fe(w.value)),l=v(()=>D.value.map(k=>k.extension).join(" / ")),x=()=>{i.value=null,C.value&&(C.value.value="")};return{isImporting:n,progress:f,statusMessage:c,currentJob:r,error:d,success:b,selectedFile:i,fileInputRef:C,options:h,extensionSummary:l,clearSelectedFile:x,openFilePicker:()=>{var k;(k=C.value)==null||k.click()},onFileSelect:k=>{var A;const V=k.target;if(!((A=V.files)!=null&&A.length))return;const N=V.files[0];if(!D.value.some(M=>N.name.toLowerCase().endsWith(M.extension.toLowerCase()))){x(),d.value=`Unsupported file type. Use ${l.value} for ${z.value}.`,b.value=null;return}i.value=N,d.value=null,b.value=null},importDatabase:async()=>{if(!(!i.value||!p.value)){d.value=null,b.value=null;try{const k=new FormData;k.append("file",i.value);const V=we(p.value);Object.entries(V).forEach(([A,M])=>{M!==void 0&&k.append(A,typeof M=="object"?JSON.stringify(M):String(M))}),k.append("options",JSON.stringify(h.value));const N=await $fetch("/api/database-import/import-database",{method:"POST",body:k}),O=await s.monitorJob(N.statusUrl);if(O.status==="completed"){b.value=O.message||"Database imported successfully",x();return}d.value=O.error||O.message||"Import failed"}catch(k){d.value=k instanceof Error?k.message:"Import failed. Check the backup file and connection compatibility.",console.error("Import error:",k)}}},reset:()=>{s.reset(),d.value=null,b.value=null,x()}}},vs={class:"flex flex-col h-full gap-3 overflow-hidden p-3"},bs={class:"font-medium text-foreground"},xs={class:"text-muted-foreground/60"},ys={class:"flex items-center justify-between gap-2"},hs={class:"text-xs text-muted-foreground"},ks={class:"flex-1 overflow-y-auto rounded-lg border bg-background p-4"},ws={class:"space-y-4"},$s={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Cs={class:"mt-1 text-sm text-muted-foreground"},Ss={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Bs={class:"rounded-lg border p-4"},Fs={class:"space-y-4"},Ts={class:"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between"},Ds={class:"mt-1 text-sm text-muted-foreground"},Es={class:"grid gap-4 xl:grid-cols-[minmax(0,1fr)_280px]"},Is={class:"rounded-lg border p-4 space-y-4"},Rs={class:"text-muted-foreground text-xs inline-flex items-center gap-0.5"},zs={class:"text-destructive gap-0.5 items-center inline-flex"},Ls=q({__name:"BackupRestoreContainer",props:{connectionId:{},initialTab:{}},setup(p){const s=p,n=mt(),f=pt(),c=v(()=>{if(s.connectionId)return n.connections.find($=>$.id===s.connectionId)}),r=v(()=>{var $;return($=c.value)==null?void 0:$.type}),d=v(()=>{var $,y;return(($=c.value)==null?void 0:$.database)||((y=c.value)==null?void 0:y.name)||"database"}),b=v(()=>Fe(r.value)),i=v(()=>bt(r.value)),C=v(()=>xt(r.value)),h=v(()=>Be(r.value)),w=v(()=>ie(r.value)),D=v(()=>yt(r.value)),z=v(()=>w.value.map($=>$.extension).join(" / ")),l=v(()=>s.connectionId?(f.schemas[s.connectionId]||[]).filter($=>$.connectionId===s.connectionId).map($=>$.name):[]),x=[{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"}],S=F(s.initialTab),E=v(()=>x.find($=>$.id===S.value));le(()=>s.initialTab,$=>{S.value=$});const I=$=>{S.value=$},{isExporting:u,progress:k,error:V,lastExport:N,currentJob:O,statusMessage:A,exportDatabase:M,reset:De}=gs(c),Ee=async $=>{await M(d.value,$)},{isImporting:U,progress:Ie,statusMessage:Re,currentJob:ee,error:ue,success:ce,selectedFile:de,options:te,extensionSummary:ze,onFileSelect:Oe,clearSelectedFile:Ve,importDatabase:Ne,reset:Me}=_s(c),K=F(!1),je=()=>{K.value=!0},qe=async()=>{K.value=!1,await Ne()},Le=()=>{K.value=!1};return($,y)=>{var me,pe,fe,ge,_e;const Pe=He,L=W,Ae=_t,Ue=gt,Je=ft,G=Se,Z=Ce,se=Q,X=$e;return g(),B("div",vs,[o(is,{open:e(K),onConfirm:qe,onCancel:Le},null,8,["open"]),o(Pe,{icon:"hugeicons:database-import",title:"Backup & Restore"},{context:a(()=>[t("span",bs,m(e(d)),1),t("span",xs,"· "+m(e(b)),1)]),_:1}),t("div",ys,[o(Je,{modelValue:e(S),"onUpdate:modelValue":y[0]||(y[0]=R=>Y(S)?S.value=R:null),class:"min-w-0 flex-1 gap-0"},{default:a(()=>[o(Ue,{class:"h-8 max-w-full justify-start! overflow-x-auto"},{default:a(()=>[(g(),B(P,null,J(x,R=>o(Ae,{key:R.id,value:R.id,class:"min-w-fit shrink-0 cursor-pointer rounded-sm px-1.5 text-xs",disabled:!e(i),onClick:oe=>I(R.id)},{default:a(()=>[o(L,{name:R.icon,class:"shrink-0 size-3.5"},null,8,["name"]),_(" "+m(R.tabLabel),1)]),_:2},1032,["value","disabled","onClick"])),64))]),_:1})]),_:1},8,["modelValue"]),t("div",hs,m((me=e(E))==null?void 0:me.subtitle),1)]),t("div",ks,[e(i)?(g(),B(P,{key:1},[ve(t("div",ws,[t("div",$s,[t("div",null,[y[2]||(y[2]=t("h3",{class:"text-base font-medium"},"Create Backup",-1)),t("p",Cs," Export "+m(e(d))+" using "+m(e(h))+". ",1)])]),e(V)?(g(),T(X,{key:0,variant:"destructive"},{default:a(()=>[o(L,{name:"hugeicons:alert-circle",class:"size-4"}),o(G,null,{default:a(()=>y[3]||(y[3]=[_("Backup Failed")])),_:1}),o(Z,null,{default:a(()=>[_(m(e(V)),1)]),_:1}),o(se,{size:"sm",variant:"outline",class:"mt-2",onClick:e(De)},{default:a(()=>y[4]||(y[4]=[_(" Try Again ")])),_:1},8,["onClick"])]),_:1})):j("",!0),e(N)&&!e(u)&&!e(V)?(g(),T(X,{key:1},{default:a(()=>[o(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),o(G,null,{default:a(()=>y[5]||(y[5]=[_("Backup Complete")])),_:1}),o(Z,null,{default:a(()=>{var R,oe;return[_(m((R=e(N))==null?void 0:R.fileName)+" downloaded in "+m(((((oe=e(N))==null?void 0:oe.duration)||0)/1e3).toFixed(1))+"s ",1)]}),_:1})]),_:1})):j("",!0),e(u)||e(O)?(g(),T(he,{key:2,tool:((pe=e(O))==null?void 0:pe.tool)||e(h),stage:((fe=e(O))==null?void 0:fe.stage)||"queued","status-message":e(A)||"",progress:e(k),"is-running":e(u)},null,8,["tool","stage","status-message","progress","is-running"])):j("",!0),t("div",Ss,[t("div",Bs,[o(Kt,{schemas:e(l),loading:e(u),"connection-type":e(r),onSubmit:Ee},null,8,["schemas","loading","connection-type"])]),o(ye,{title:"Backup Profile",description:"Exports run on the local runtime host and stream the artifact directly into a downloadable file.",formats:e(w),"tool-hint":e(h),"target-name":e(d),"formats-label":"Supported Files"},null,8,["formats","tool-hint","target-name"])])],512),[[be,e(S)==="export"]]),ve(t("div",Fs,[t("div",Ts,[t("div",null,[y[6]||(y[6]=t("h3",{class:"text-base font-medium"},"Restore Backup",-1)),t("p",Ds," Restore a "+m(e(z))+" backup into "+m(e(d))+". ",1)])]),e(ue)?(g(),T(X,{key:0,variant:"destructive"},{default:a(()=>[o(L,{name:"hugeicons:alert-circle",class:"size-4"}),o(G,null,{default:a(()=>y[7]||(y[7]=[_("Import Failed")])),_:1}),o(Z,null,{default:a(()=>[_(m(e(ue)),1)]),_:1}),o(se,{size:"sm",variant:"outline",class:"mt-2",onClick:e(Me)},{default:a(()=>y[8]||(y[8]=[_(" Try Again ")])),_:1},8,["onClick"])]),_:1})):j("",!0),e(ce)?(g(),T(X,{key:1},{default:a(()=>[o(L,{name:"hugeicons:checkmark-circle-02",class:"size-4 text-green-500"}),o(G,null,{default:a(()=>y[9]||(y[9]=[_("Import Complete")])),_:1}),o(Z,null,{default:a(()=>[_(m(e(ce)),1)]),_:1})]),_:1})):j("",!0),e(U)||e(ee)?(g(),T(he,{key:2,tool:((ge=e(ee))==null?void 0:ge.tool)||e(h),stage:((_e=e(ee))==null?void 0:_e.stage)||"queued","status-message":e(Re)||"",progress:e(Ie),"is-running":e(U),"progress-class":"bg-emerald-500"},null,8,["tool","stage","status-message","progress","is-running"])):j("",!0),t("div",Es,[t("div",Is,[o(os,{"selected-file":e(de),accept:e(D),"extension-summary":e(ze),onChange:e(Oe),onClear:e(Ve)},null,8,["selected-file","accept","extension-summary","onChange","onClear"]),o(ls,{modelValue:e(te),"onUpdate:modelValue":y[1]||(y[1]=R=>Y(te)?te.value=R:null)},null,8,["modelValue"]),o(se,{class:"w-full",size:"lg",disabled:!e(de)||e(U),onClick:je},{default:a(()=>[o(L,{name:e(U)?"hugeicons:loading-03":"hugeicons:upload-01",class:re(["size-4 mr-2",e(U)&&"animate-spin"])},null,8,["name","class"]),_(" "+m(e(U)?"Restoring...":"Restore Backup"),1)]),_:1},8,["disabled"]),t("p",Rs,[t("polyline",zs,[o(L,{name:"hugeicons:alert-circle",class:"size-4 text-destructive"}),y[10]||(y[10]=_(" Warning: "))]),y[11]||(y[11]=_(" Importing a database can overwrite existing data. Make sure you have a backup before proceeding. "))])]),o(ye,{title:"Restore Profile",description:"Use a backup file produced for the same database family and runtime toolchain.",formats:e(w),"tool-hint":e(h),"target-name":e(d),"formats-label":"Accepted Files"},null,8,["formats","tool-hint","target-name"])])],512),[[be,e(S)==="import"]])],64)):(g(),T(Vt,{key:0,"support-message":e(C),"connection-type":e(r)},null,8,["support-message","connection-type"]))])])}}});export{Ls as _};
@@ -1 +1 @@
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"./D0lW43G8.js";import"./BmAp-sfn.js";import{_ as d}from"./BkN-uAef.js";import"./C9kgALYc.js";import"./CtCx-4nJ.js";import"./Cbo6GmdE.js";import"./Chx1IK9D.js";import"./CfseWBL0.js";import"./CRqiHVA4.js";import"./Db3rTgnd.js";import"./C-Pa1rIR.js";import"./BMLhg7hE.js";import"./BCAMWuzu.js";import"./CS5akSNT.js";import"./Czr647QE.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
+ 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"./BfSmOVMj.js";import"./D0mrO5vS.js";import{_ as d}from"./Dfzgj0Oq.js";import"./DDS9xPxH.js";import"./BVl8VKr5.js";import"./HP3PGEjt.js";import"./DoB1FFC2.js";import"./D3ujZRkc.js";import"./UHOKyE8O.js";import"./C20WaARR.js";import"./BSBcOKKj.js";import"./CRX1CszZ.js";import"./BCFLQ_rL.js";import"./CS5akSNT.js";import"./C2kyA9ZS.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};