fix: improve backup GET endpoint error handling and date parsing

This commit is contained in:
Erik
2025-11-29 12:42:17 -03:00
parent ae8639bb2f
commit 1600cc8267

View File

@@ -193,24 +193,65 @@ export async function GET(request: NextRequest) {
// ); // );
// } // }
// Verificar se pasta existe
if (!fs.existsSync(BACKUP_DIR)) {
console.log('[BACKUP] Pasta de backups não existe, criando...');
fs.mkdirSync(BACKUP_DIR, { recursive: true });
return NextResponse.json({
success: true,
backups: [],
count: 0
});
}
const files = fs.readdirSync(BACKUP_DIR); const files = fs.readdirSync(BACKUP_DIR);
const backups: BackupInfo[] = []; const backups: BackupInfo[] = [];
for (const file of files) { for (const file of files) {
const filePath = path.join(BACKUP_DIR, file); const filePath = path.join(BACKUP_DIR, file);
const stat = fs.statSync(filePath);
if (stat.isFile()) { try {
const timestamp = file.replace('backup-', '').replace('.tar.gz', ''); const stat = fs.statSync(filePath);
backups.push({
id: file.replace('.tar.gz', ''), if (stat.isFile() && (file.endsWith('.tar.gz') || file.includes('backup-'))) {
timestamp: new Date(timestamp.replace(/-/g, ':')).toISOString(), // Extrair timestamp do nome do arquivo
date: new Date(timestamp.replace(/-/g, ':')).toLocaleDateString('pt-BR'), const timestamp = file
size: stat.size, .replace('backup-', '')
filename: file, .replace('.tar.gz', '')
status: 'success', .trim();
message: 'Backup disponível'
}); // Tentar fazer parse da data de forma mais robusta
let parsedDate = new Date();
try {
// Formato esperado: 2025-11-29-10-30-45
const dateParts = timestamp.split('-');
if (dateParts.length >= 3) {
const year = parseInt(dateParts[0]);
const month = parseInt(dateParts[1]) - 1; // Mês é 0-indexed
const day = parseInt(dateParts[2]);
const hour = dateParts[3] ? parseInt(dateParts[3]) : 0;
const min = dateParts[4] ? parseInt(dateParts[4]) : 0;
const sec = dateParts[5] ? parseInt(dateParts[5]) : 0;
parsedDate = new Date(year, month, day, hour, min, sec);
}
} catch (e) {
console.log('[BACKUP] Erro ao fazer parse da data:', timestamp);
parsedDate = new Date(stat.mtime);
}
backups.push({
id: file.replace('.tar.gz', ''),
timestamp: parsedDate.toISOString(),
date: parsedDate.toLocaleDateString('pt-BR'),
size: stat.size,
filename: file,
status: 'success',
message: 'Backup disponível'
});
}
} catch (fileError) {
console.warn('[BACKUP] Erro ao processar arquivo:', file, fileError);
} }
} }
@@ -227,7 +268,9 @@ export async function GET(request: NextRequest) {
return NextResponse.json( return NextResponse.json(
{ {
success: false, success: false,
error: (error as Error).message error: (error as Error).message,
backups: [],
count: 0
}, },
{ status: 500 } { status: 500 }
); );