import requests
import json
from getpass import getpass

def inspect_database_properties(db_id: str):
    """Liest die Eigenschaften (Spalten) einer Notion-Datenbank aus."""
    print(f"--- Untersuche Eigenschaften von Notion DB: {db_id} ---")
    token = getpass("Bitte gib deinen Notion API Key ein (Eingabe wird nicht angezeigt): ")

    if not token:
        print("\nFehler: Kein Token eingegeben. Abbruch.")
        return

    print(f"\n... Lese Struktur von Datenbank {db_id}...")

    url = f"https://api.notion.com/v1/databases/{db_id}"
    headers = {
        "Authorization": f"Bearer {token}",
        "Notion-Version": "2022-06-28"
    }

    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        
        database_info = response.json()
        properties = database_info.get("properties", {})
        
        print("\n✅ Erfolgreich! Folgende Spalten (Properties) wurden gefunden:")
        print("--------------------------------------------------")
        for name, details in properties.items():
            prop_type = details.get("type")
            print(f"Spaltenname: '{name}' (Typ: {prop_type})")
            if prop_type == "relation":
                relation_details = details.get("relation", {})
                print(f"  -> Verknüpft mit Datenbank-ID: {relation_details.get('database_id')}")
            # Gib die verfügbaren Optionen für Status- und Select-Felder aus
            elif prop_type in ["status", "select", "multi_select"]:
                options = details.get(prop_type, {}).get("options", [])
                if options:
                    print(f"  -> Verfügbare Optionen:")
                    for option in options:
                        print(f"     - '{option.get('name')}'")
        print("--------------------------------------------------")
        print("Bitte finde den korrekten Namen der Spalte, die zu den Projekten verknüpft ist, und den exakten Namen für den 'In Bearbeitung'-Status.")

    except requests.exceptions.RequestException as e:
        print(f"\n❌ FEHLER! Konnte die Datenbankstruktur nicht lesen: {e}")
        if hasattr(e, 'response') and e.response is not None:
            print(f"HTTP Status Code: {e.response.status_code}")
            try:
                print(f"Antwort des Servers: {json.dumps(e.response.json(), indent=2)}")
            except:
                print(f"Antwort des Servers: {e.response.text}")

if __name__ == "__main__":
    tasks_db_id = "2e888f42-8544-8153-beac-e604719029cf" # Die ID für "Tasks [UT]"
    inspect_database_properties(tasks_db_id)
