1import{g,h as _,E as f,i as b,j as a,w as A,B as k,M as D,A as u}from"./index-yyGShnxF.js";import{r as m}from"./react-vendor-D5DC871Y.js";import{E as T}from"./index-C0TJbzvq.js";import{t as P}from"./paginacao-C6Zm6YEq.js";import{T as N}from"./index-D_tfd3Dx.js";import{b as p,j as C,k as R}from"./formatters-CpNnh55B.js";import{M as l}from"./index-C_U7w4a0.js";import{aa as h,Q as E,bv as B,T as x,b as w}from"./icons-vendor-DhC_8vLr.js";import"./chart-vendor-DvyXr9Ci.js";import"./form-vendor-DYMj8xAi.js";import"./index-yA5LdEMr.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"eaa27cae8f05b96346160a621645c6c65cad4f59"};var s=new e.Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="fad16a91-ef86-4f2d-8dfc-a878241444fa",e._sentryDebugIdIdentifier="sentry-dbid-fad16a91-ef86-4f2d-8dfc-a878241444fa")}catch{}})();const y={async getSummary(e={}){const s={};return e.signal&&(s.signal=e.signal),(await g.get("/api/admin/backups/summary",s)).data.data},async getRuns(e={},s={}){const r={params:e};s.signal&&(r.signal=s.signal);const t=await g.get("/api/admin/backups",r);return{data:t.data.data??[],meta:t.data.meta??null}}},v=15,O=()=>{const[e,s]=m.useState(1),r=_({queryKey:b.backups.resumo(),queryFn:()=>y.getSummary(),staleTime:f.CADASTRO}),t=_({queryKey:b.backups.execucoes(e),queryFn:()=>y.getRuns({page:e,perPage:v}),staleTime:f.CADASTRO,placeholderData:o=>o});return{resumo:r.data??null,execucoes:t.data?.data??[],paginacao:P(t.data?.meta,v),carregando:r.isPending||t.isPending,erro:r.isError||t.isError,paginando:t.isFetching,irParaPagina:s,recarregar:()=>Promise.all([r.refetch(),t.refetch()])}},M="_adminBackups_1miv6_1",z="_header_1miv6_8",I="_title_1miv6_12",F="_subtitle_1miv6_19",q="_statsRow_1miv6_29",U="_metricCard_1miv6_35",V="_alerts_1miv6_42",H="_errorMeta_1miv6_55",K="_errorMessage_1miv6_63",i={adminBackups:M,header:z,title:I,subtitle:F,statsRow:q,metricCard:U,alerts:V,errorMeta:H,errorMessage:K},G={succeeded:"success",failed:"error",running:"info"},L={succeeded:"ConcluÃdo",failed:"Falhou",running:"Em andamento"};function Q({execucoes:e,paginacao:s,carregando:r,onMudarPagina:t}){const[o,c]=m.useState(null),d=m.useMemo(()=>[{key:"started_at",label:"InÃcio",render:n=>p(n)},{key:"status",label:"Situação",render:n=>a.jsx(A,{variant:G[n]??"neutral",children:L[n]??n})},{key:"size_bytes",label:"Tamanho",render:n=>C(n,"â")},{key:"duration_seconds",label:"Duração",render:n=>R(n,"â")},{key:"error_message",label:"Detalhes",render:(n,S)=>n?a.jsx(k,{variant:"outline",size:"sm",onClick:()=>c(S),children:"Ver erro"}):"â"}],[]);return a.jsxs(a.Fragment,{children:[a.jsx(N,{columns:d,data:e,loading:r,hoverable:!0,emptyState:{title:"Nenhuma execução ainda",description:"O primeiro backup aparece aqui depois do próximo horário agendado."},pagination:s&&{currentPage:s.currentPage,totalPages:s.lastPage,totalItems:s.total,pageSize:s.perPage},onPageChange:t}),a.jsx(D,{isOpen:o!==null,onClose:()=>c(null),title:"Erro do backup",children:o&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:i.errorMeta,children:p(o.started_at)}),a.jsx("pre",{className:i.errorMessage,children:o.error_message})]})})]})}function j(e){return e.last_success_at?e.is_healthy?"emDia":"atrasado":"nunca"}const W={emDia:{variant:"positive",icon:a.jsx(w,{size:18}),rotulo:"Em dia"},atrasado:{variant:"negative",icon:a.jsx(x,{size:18}),rotulo:"Atrasado"},nunca:{variant:"warning",icon:a.jsx(x,{size:18}),rotulo:"Sem backup"}};function Y({resumo:e,carregando:s=!1}){const r=s?{variant:"neutral",icon:a.jsx(h,{size:18}),rotulo:""}:W[j(e)],t=e?.storage;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:i.statsRow,children:[a.jsx(l,{layout:"inline",className:i.metricCard,variant:r.variant,icon:r.icon,value:r.rotulo,label:"Situação",loading:s}),a.jsx(l,{layout:"inline",className:i.metricCard,icon:a.jsx(h,{size:18}),value:e?.last_success_at?p(e.last_success_at):"Nunca",label:"Ãltimo backup",loading:s}),a.jsx(l,{layout:"inline",className:i.metricCard,icon:a.jsx(E,{size:18}),value:t?.reachable?t.count:"â",label:"Guardados no bucket",loading:s}),a.jsx(l,{layout:"inline",className:i.metricCard,icon:a.jsx(B,{size:18}),value:t?.reachable?C(t.bytes,"â"):"â",label:"Espaço ocupado",loading:s})]}),!s&&a.jsxs("div",{className:i.alerts,children:[j(e)==="atrasado"&&a.jsxs(u,{type:"error",children:["Nenhum backup concluÃdo nas últimas ",e.stale_after_hours," horas. Verifique o agendador do servidor e as execuções abaixo."]}),!e.is_encrypted&&a.jsx(u,{type:"warning",children:"Os backups estão sendo gravados sem senha. Defina BACKUP_ARCHIVE_PASSWORD: o arquivo contém dados pessoais."}),!t.reachable&&a.jsx(u,{type:"warning",children:"Não foi possÃvel consultar o bucket de backup. Os números de armazenamento estão indisponÃveis."})]})]})}function oa(){const{resumo:e,execucoes:s,paginacao:r,carregando:t,erro:o,paginando:c,irParaPagina:d,recarregar:n}=O();return a.jsxs("div",{className:i.adminBackups,children:[a.jsxs("div",{className:i.header,children:[a.jsx("h1",{className:i.title,children:"Backups"}),a.jsx("p",{className:i.subtitle,children:"Backup diário do banco de dados no bucket de backup."})]}),o||!t&&!e?a.jsx(T,{icon:E,title:"Não foi possÃvel carregar os backups",description:"Tente novamente em instantes.",action:a.jsx(k,{onClick:n,children:"Tentar novamente"})}):a.jsxs(a.Fragment,{children:[a.jsx(Y,{resumo:e,carregando:t}),a.jsx(Q,{execucoes:s,paginacao:r,carregando:t||c,onMudarPagina:d})]})]})}export{oa as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.