#!/usr/bin/env python3
"""
Script para crear una nueva base de datos de Notion y compartirla automáticamente
"""

import sys
from pathlib import Path

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

from config import settings
from notion_client import Client


def main():
    print("\n" + "=" * 70)
    print("🛠️  CREAR BASE DE DATOS DE NOTION PARA CBCFACIL")
    print("=" * 70 + "\n")

    token = settings.NOTION_API_TOKEN
    if not token:
        print("❌ Token no configurado en .env")
        return

    client = Client(auth=token)

    # Primero, buscar una página donde crear la database
    print("🔍 Buscando páginas accesibles...\n")
    results = client.search(page_size=100)
    pages = [p for p in results.get("results", []) if p.get("object") == "page"]

    if not pages:
        print("❌ No tienes páginas accesibles.")
        print("\n📋 SOLUCIÓN:")
        print("1. Ve a Notion y crea una nueva página")
        print("2. En esa página, click en 'Share'")
        print("3. Busca y agrega tu integración")
        print("4. Ejecuta este script nuevamente\n")
        return

    # Mostrar páginas disponibles
    print(f"✅ Encontradas {len(pages)} página(s) accesibles:\n")
    for i, page in enumerate(pages[:10], 1):
        page_id = page.get("id")
        props = page.get("properties", {})

        # Intentar obtener el título
        title = "Sin título"
        for prop_name, prop_data in props.items():
            if prop_data.get("type") == "title":
                title_list = prop_data.get("title", [])
                if title_list:
                    title = title_list[0].get("plain_text", "Sin título")
                break

        print(f"{i}. {title[:50]}")
        print(f"   ID: {page_id}\n")

    # Usar la primera página accesible
    parent_page = pages[0]
    parent_id = parent_page.get("id")

    print("=" * 70)
    print(f"📄 Voy a crear la base de datos dentro de la primera página")
    print("=" * 70 + "\n")

    try:
        # Crear la base de datos
        print("🚀 Creando base de datos 'CBCFacil - Documentos'...\n")

        database = client.databases.create(
            parent={"page_id": parent_id},
            title=[
                {
                    "type": "text",
                    "text": {"content": "CBCFacil - Documentos Procesados"},
                }
            ],
            properties={
                "Name": {"title": {}},
                "Status": {
                    "select": {
                        "options": [
                            {"name": "Procesado", "color": "green"},
                            {"name": "En Proceso", "color": "yellow"},
                            {"name": "Error", "color": "red"},
                        ]
                    }
                },
                "Tipo": {
                    "select": {
                        "options": [
                            {"name": "AUDIO", "color": "purple"},
                            {"name": "PDF", "color": "orange"},
                            {"name": "TEXTO", "color": "gray"},
                        ]
                    }
                },
                "Fecha": {"date": {}},
            },
        )

        db_id = database["id"]

        print("✅ ¡Base de datos creada exitosamente!")
        print("=" * 70)
        print(f"\n📊 Información de la base de datos:\n")
        print(f"   Nombre: CBCFacil - Documentos Procesados")
        print(f"   ID: {db_id}")
        print(f"   URL: https://notion.so/{db_id.replace('-', '')}")
        print("\n=" * 70)
        print("\n🎯 SIGUIENTE PASO:")
        print("=" * 70)
        print(f"\nActualiza tu archivo .env con:\n")
        print(f"NOTION_DATABASE_ID={db_id}\n")
        print("Luego ejecuta:")
        print("python test_notion_integration.py\n")
        print("=" * 70 + "\n")

    except Exception as e:
        print(f"❌ Error creando base de datos: {e}")
        print("\nVerifica que la integración tenga permisos de escritura.\n")


if __name__ == "__main__":
    main()
