"""
Gemeinsame Utility-Funktionen für DocuMentor.
"""

import hashlib
import logging
from pathlib import Path

logger = logging.getLogger(__name__)

HASH_PREFIX = "blake2b"


def calculate_blake2b_hash(file_path: Path) -> str | None:
    """
    Berechnet den blake2b-Hash einer Datei.

    Args:
        file_path: Pfad zur Datei

    Returns:
        str: Hash-Wert mit "blake2b:" Präfix oder None bei Fehler
    """
    try:
        if not file_path.exists():
            logger.warning(f"Datei für Hash-Berechnung nicht gefunden: {file_path}")
            return None

        hash_obj = hashlib.blake2b()
        with open(file_path, "rb") as f:
            for chunk in iter(lambda: f.read(8192), b""):
                hash_obj.update(chunk)

        return f"{HASH_PREFIX}:{hash_obj.hexdigest()}"

    except Exception as e:
        logger.error(f"Fehler beim Berechnen des Hash für {file_path}: {e}")
        return None
