#!/usr/bin/env python3
"""
Script para verificar y configurar permisos de Notion
"""

import sys
import logging
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent))

from config import settings
from notion_client import Client

logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s")
logger = logging.getLogger(__name__)


def main():
    print("\n" + "=" * 60)
    print("🔧 VERIFICACIÓN DE PERMISOS DE NOTION")
    print("=" * 60 + "\n")

    # Configuración
    token = settings.NOTION_API_TOKEN
    database_id = settings.NOTION_DATABASE_ID

    if not token or not database_id:
        print("❌ Falta configuración de Notion en .env")
        print(f"   NOTION_API: {'✅' if token else '❌'}")
        print(f"   NOTION_DATABASE_ID: {'✅' if database_id else '❌'}")
        return

    print(f"✅ Token configurado: {token[:20]}...")
    print(f"✅ Database ID: {database_id}\n")

    # Crear cliente
    client = Client(auth=token)

    print("📋 PASOS PARA CONFIGURAR LOS PERMISOS:\n")
    print("1. Abre Notion y ve a tu base de datos 'CBC'")
    print(f"   URL: https://www.notion.so/{database_id}")
    print("\n2. Click en los 3 puntos (⋯) en la esquina superior derecha")
    print("\n3. Selecciona 'Connections' o 'Añadir conexiones'")
    print("\n4. Busca tu integración y actívala")
    print(f"   (Debería aparecer con el nombre que le pusiste)")
    print("\n5. Confirma los permisos\n")

    print("-" * 60)
    print("\n🧪 Intentando conectar con Notion...\n")

    try:
        # Intentar obtener la base de datos
        database = client.databases.retrieve(database_id=database_id)

        print("✅ ¡ÉXITO! La integración puede acceder a la base de datos")
        print(f"\n📊 Información de la base de datos:")
        print(
            f"   Título: {database['title'][0]['plain_text'] if database.get('title') else 'Sin título'}"
        )
        print(f"   ID: {database['id']}")
        print(f"\n   Propiedades disponibles:")

        for prop_name, prop_data in database.get("properties", {}).items():
            prop_type = prop_data.get("type", "unknown")
            print(f"   - {prop_name}: {prop_type}")

        print("\n" + "=" * 60)
        print("✅ TODO CONFIGURADO CORRECTAMENTE")
        print("=" * 60 + "\n")

        print("🚀 Ahora ejecuta: python test_notion_integration.py")
        print("   para probar subir un documento\n")

    except Exception as e:
        error_msg = str(e)

        print("❌ ERROR AL CONECTAR CON NOTION\n")
        print(f"Error: {error_msg}\n")

        if "Could not find database" in error_msg:
            print("⚠️  LA BASE DE DATOS NO ESTÁ COMPARTIDA CON TU INTEGRACIÓN")
            print("\nSigue los pasos arriba para compartir la base de datos.")
        elif "Unauthorized" in error_msg or "401" in error_msg:
            print("⚠️  EL TOKEN DE API ES INVÁLIDO")
            print("\nVerifica que el token esté correcto en .env")
        else:
            print("⚠️  ERROR DESCONOCIDO")
            print(f"\nDetalles: {error_msg}")

        print("\n" + "=" * 60 + "\n")


if __name__ == "__main__":
    main()
