feat(): Criado listagem do backup mais atual
This commit is contained in:
parent
30b5d29c37
commit
76efa712ee
2 changed files with 63 additions and 7 deletions
|
|
@ -671,6 +671,39 @@ export default function ClientePage() {
|
|||
<CardTitle>Arquivos de Backup</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
|
||||
{/** Lista os backups mais recentes */}
|
||||
{logBackup?.latest_backups && (
|
||||
<div className="p-4 bg-blue-50 border border-blue-200 rounded-lg mb-4">
|
||||
<h2 className="text-lg font-semibold text-blue-800">
|
||||
Backup mais recente ({logBackup.latest_backups.data})
|
||||
</h2>
|
||||
|
||||
<table className="w-full text-sm mt-2 border">
|
||||
<thead className="bg-blue-100">
|
||||
<tr>
|
||||
<th className="px-3 py-2 text-left">Arquivo</th>
|
||||
<th className="px-3 py-2 text-left">Hora</th>
|
||||
<th className="px-3 py-2 text-left">Tamanho</th>
|
||||
<th className="px-3 py-2 text-left">Caminho</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{logBackup.latest_backups.arquivos.map((item) => (
|
||||
<tr key={item.nome_arquivo} className="border-t">
|
||||
<td className="px-3 py-1">{item.nome_arquivo}</td>
|
||||
<td className="px-3 py-1">{item.dados.hora}</td>
|
||||
<td className="px-3 py-1">{item.dados.tamanho}</td>
|
||||
<td className="px-3 py-1">{item.dados.caminho}</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
|
||||
<ScrollArea className="h-[350px] w-full rounded-md border">
|
||||
<Table>
|
||||
<TableHeader>
|
||||
|
|
|
|||
|
|
@ -15,19 +15,42 @@ export const useLogBackupHook = () => {
|
|||
try {
|
||||
const response = await LogBackupService(client_id);
|
||||
|
||||
// Verifica se a API retorna no formato esperado
|
||||
//console.log(' Resposta bruta do LogBackupService:', response);
|
||||
|
||||
// Se a estrutura for { success, message, data }, use response.data
|
||||
const logData =
|
||||
response?.data && response.data.backup ? response.data : response;
|
||||
|
||||
setLog(logData); // Armazena só a parte relevante
|
||||
setResponse(response); // Mantém o contexto global
|
||||
// --- ETAPA 1: ordenar backups por data ---
|
||||
if (logData.backup) {
|
||||
// Converte o objeto de backups em array [nomeArquivo, dados]
|
||||
const sortedBackups = Object.entries(logData.backup).sort(([, a], [, b]) => {
|
||||
const dateA = a.data.split('/').reverse().join('-');
|
||||
const dateB = b.data.split('/').reverse().join('-');
|
||||
return new Date(dateB).getTime() - new Date(dateA).getTime(); // Mais recente primeiro
|
||||
});
|
||||
|
||||
//console.log(' LogBackup armazenado no estado:', logData);
|
||||
// Reconstrói o objeto ordenado
|
||||
logData.backup = Object.fromEntries(sortedBackups);
|
||||
|
||||
// --- ETAPA 2: obter a data mais recente ---
|
||||
const latestDate = sortedBackups[0][1].data;
|
||||
|
||||
// --- ETAPA 3: filtrar todos os backups dessa data ---
|
||||
const latestBackups = sortedBackups
|
||||
.filter(([, dados]) => dados.data === latestDate)
|
||||
.map(([nome_arquivo, dados]) => ({ nome_arquivo, dados }));
|
||||
|
||||
// --- ETAPA 4: adicionar campo customizado no JSON ---
|
||||
logData.latest_backups = {
|
||||
data: latestDate,
|
||||
arquivos: latestBackups,
|
||||
};
|
||||
}
|
||||
|
||||
// Armazena os dados atualizados no estado
|
||||
setLog(logData);
|
||||
setResponse(response);
|
||||
} catch (error) {
|
||||
console.error(' Erro ao buscar informação do servidor por ID:', error);
|
||||
console.error('Erro ao buscar informação do servidor por ID:', error);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue