#!/usr/bin/env python3
"""
Importiere alle bestehenden Dokumente in die Datenbank.
Sichert, dass jedes Dokument erfasst ist.
"""

import sys
sys.path.insert(0, '/home/agent/.hermes/assets/Gesundheit/scripts')

from health_manager import get_connection, add_dokument, hash_file
from pathlib import Path
import os

ARCHIV = Path('/home/agent/.hermes/assets/Gesundheit/archiv')
ATTACHMENTS = Path('/home/agent/.hermes/assets/Gesundheit/attachments')
INBOX = Path('/home/agent/.hermes/assets/Gesundheit/inbox')

# Kategorie-Mapping
CATEGORY_MAP = {
    'laborberichte': 'LABOR',
    'klinische_befunde': 'BEFUNDE',
    'medikamente': 'MEDIKAMENTE',
    'krankheitsgeschichte': 'VERLAUF',
    'wearables': 'WEARABLES',
    'ernaehrung': 'ERNährung',
    'sonstiges': 'SONSTIGES',
}

def get_category(filepath):
    """Bestimme Kategorie basierend auf Pfad."""
    rel = str(filepath.relative_to(ARCHIV))
    for cat_dir, cat_name in CATEGORY_MAP.items():
        if rel.startswith(cat_dir):
            return cat_name
    return 'SONSTIGES'

def get_datentyp(filename):
    """Bestimme Dateityp."""
    ext = Path(filename).suffix.lower()
    type_map = {
        '.pdf': 'pdf',
        '.xlsx': 'spreadsheet',
        '.jpg': 'image',
        '.jpeg': 'image',
        '.png': 'image',
        '.txt': 'text',
    }
    return type_map.get(ext, 'other')

def import_file(filepath, category):
    """Importiere eine einzelne Datei."""
    ext = Path(filepath).suffix.lower()
    if ext not in ['.pdf', '.xlsx', '.jpg', '.jpeg', '.png', '.txt']:
        return None
    
    h = hash_file(filepath)
    conn = get_connection()
    cursor = conn.cursor()
    cursor.execute("SELECT id FROM dokumente WHERE datei_hash=?", (h,))
    if cursor.fetchone():
        conn.close()
        return None  # Bereits importiert
    
    dateiname = filepath.name
    dateipfad_rel = str(filepath.relative_to(ARCHIV.parent.parent))
    groesse = filepath.stat().st_size // 1024
    
    cursor.execute("""
        INSERT INTO dokumente (datei_name, dateipfad, daten_typ, kategorie, upload_datum, groessekbytes, status, datei_hash)
        VALUES (?, ?, ?, ?, datetime('now'), ?, 'neu', ?)
    """, (dateiname, dateipfad_rel, get_datentyp(dateiname), category, groesse, h))
    conn.commit()
    conn.close()
    return dateiname

def main():
    print("=== Dokumenten-Import ===")
    
    imported = 0
    skipped = 0
    
    for directory in [ARCHIV, ATTACHMENTS, INBOX]:
        if not directory.exists():
            continue
            
        category = CATEGORY_MAP.get(directory.name, 'SONSTIGES')
        
        for root, dirs, files in os.walk(directory):
            for filename in files:
                filepath = Path(root) / filename
                result = import_file(filepath, category)
                if result:
                    print(f"  ✓ {result}")
                    imported += 1
                else:
                    skipped += 1
    
    print(f"\nImportiert: {imported}")
    print("Übersprungen: {skipped}")

if __name__ == '__main__':
    main()
