feat(): Criado listagem do backup mais atual

This commit is contained in:
Kenio 2025-11-11 14:47:48 -03:00
parent 30b5d29c37
commit 76efa712ee
2 changed files with 63 additions and 7 deletions

View file

@ -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>

View file

@ -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);
}
};