From 70799288ec470c25650d5bad301df549c692e70e Mon Sep 17 00:00:00 2001 From: novaardiansyah Date: Sat, 25 Jul 2026 18:29:59 +0700 Subject: [PATCH] feat(backup): include duration and status message in backup payload - Send execution duration in seconds to backup API - Include success or error message in backup API payload --- backup/backup.py | 57 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/backup/backup.py b/backup/backup.py index d137320..8651f7a 100644 --- a/backup/backup.py +++ b/backup/backup.py @@ -9,25 +9,46 @@ def run_backup(source_path: str): started = datetime.now() - filename = f"backup-{started.strftime('%Y%m%d-%H%M%S')}" - - destination = str(Path(BACKUP_OUTPUT) / filename) - zip_file = create_zip(source_path, destination) - completed = datetime.now() - - result = BackupResult( - file_name=Path(zip_file).name, - file_path=zip_file, - file_size=Path(zip_file).stat().st_size, - checksum=sha256(zip_file), - started_at=started.isoformat(), - completed_at=completed.isoformat(), - duration=int((completed - started).total_seconds()), - status="success", - type="files", - message=None - ) + + try: + filename = f"backup-{started.strftime('%Y%m%d-%H%M%S')}" + + destination = str(Path(BACKUP_OUTPUT) / filename) + zip_file = create_zip(source_path, destination) + completed = datetime.now() + duration = int((completed - started).total_seconds()) + + result = BackupResult( + file_name=Path(zip_file).name, + file_path=zip_file, + file_size=Path(zip_file).stat().st_size, + checksum=sha256(zip_file), + started_at=started.isoformat(), + completed_at=completed.isoformat(), + duration=duration, + status="success", + type="files", + message="Backup completed successfully" + ) + except Exception as e: + completed = datetime.now() + duration = int((completed - started).total_seconds()) + + result = BackupResult( + file_name="", + file_path="", + file_size=0, + checksum="", + started_at=started.isoformat(), + completed_at=completed.isoformat(), + duration=duration, + status="failed", + type="files", + message=f"Backup failed: {str(e)}" + ) response = send_backup(result) print(response) + return response +