import sys
import os
import zipfile
import shutil

# Funktion zum Zippen des Ordners und Löschen des Quellordners
def zip_folder(user_id, upload_dir="./Uploads"):
    upload_path = os.path.join(upload_dir, user_id)
    zip_file = os.path.join(upload_dir, f"{user_id}.zip")
   
    # Überprüfe, ob der Upload-Ordner existiert
    if not os.path.exists(upload_path):
        print(f"Fehler: Upload-Ordner {upload_path} nicht gefunden.")
        sys.exit(1)
   
    try:
        # Erstelle die ZIP-Datei
        with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
            for root, dirs, files in os.walk(upload_path):
                for file in files:
                    file_path = os.path.join(root, file)
                    arcname = os.path.relpath(file_path, upload_path)
                    zipf.write(file_path, arcname)
                    print(f"Datei {file} zum ZIP-Archiv hinzugefügt.")
       
        print(f"ZIP-Datei erfolgreich erstellt: {zip_file}")
        
        # Lösche den Quellordner nach dem Zipping
        try:
            shutil.rmtree(upload_path)
            print(f"Quellordner {upload_path} erfolgreich gelöscht.")
        except Exception as e:
            print(f"Fehler beim Löschen des Quellordners {upload_path}: {e}")
            # Weiter mit Erfolg, da das Zipping erfolgreich war
            # Der Löschfehler wird protokolliert, stoppt aber nicht den Prozess
       
    except Exception as e:
        print(f"Fehler beim Erstellen der ZIP-Datei: {e}")
        sys.exit(1)

# Hole userID aus den Argumenten
if len(sys.argv) < 2:
    print("Fehler: Keine userID angegeben.")
    sys.exit(1)

user_id = sys.argv[1]
zip_folder(user_id)
