#!/usr/bin/env python3
"""Find existing Notion structure to determine where to create our project."""

import json
import requests
import os

NOTION_KEY_PATH = "/home/clawd/secrets/notion/api_key"
NOTION_API = "https://api.notion.com/v1"
NOTION_VERSION = "2022-06-28"

def get_notion_key():
    with open(NOTION_KEY_PATH) as f:
        return f.read().strip()

def notion_headers():
    return {
        "Authorization": f"Bearer {get_notion_key()}",
        "Notion-Version": NOTION_VERSION,
        "Content-Type": "application/json"
    }

def search_databases():
    """Search for existing databases."""
    print("Searching for databases...")
    try:
        response = requests.post(
            f"{NOTION_API}/search", 
            headers=notion_headers(),
            json={"filter": {"property": "object", "value": "database"}}
        )
        
        if response.status_code == 200:
            results = response.json().get("results", [])
            print(f"Found {len(results)} databases:")
            for db in results:
                title = ""
                if db.get("title"):
                    title = db["title"][0].get("plain_text", "No title") if db["title"] else "No title"
                print(f"  - {title} (ID: {db['id']})")
                print(f"    Parent: {db.get('parent', {})}")
            return results
        else:
            print(f"❌ Database search error: {response.text}")
            return []
    except Exception as e:
        print(f"❌ Database search exception: {e}")
        return []

def search_workspace_pages():
    """Search for pages that might be in the workspace."""
    print("\nSearching for workspace-level pages...")
    try:
        response = requests.post(
            f"{NOTION_API}/search", 
            headers=notion_headers(),
            json={"filter": {"property": "object", "value": "page"}}
        )
        
        if response.status_code == 200:
            results = response.json().get("results", [])
            workspace_pages = []
            
            for page in results:
                parent = page.get("parent", {})
                if parent.get("type") == "workspace":
                    workspace_pages.append(page)
            
            print(f"Found {len(workspace_pages)} workspace-level pages:")
            for page in workspace_pages:
                title = get_page_title(page)
                print(f"  - {title} (ID: {page['id']})")
            
            return workspace_pages
        else:
            print(f"❌ Page search error: {response.text}")
            return []
    except Exception as e:
        print(f"❌ Page search exception: {e}")
        return []

def get_page_title(page):
    """Extract title from page properties."""
    properties = page.get("properties", {})
    
    # Try different title property names
    for prop_name in ["title", "Title", "Name", "name"]:
        if prop_name in properties:
            prop = properties[prop_name]
            if prop.get("title") and len(prop["title"]) > 0:
                return prop["title"][0].get("plain_text", "No title")
            elif prop.get("rich_text") and len(prop["rich_text"]) > 0:
                return prop["rich_text"][0].get("plain_text", "No title")
    
    return "Untitled"

def try_create_in_database(database_id):
    """Try creating a page in an existing database."""
    print(f"\nTrying to create page in database {database_id}...")
    
    payload = {
        "parent": {"database_id": database_id},
        "properties": {
            "Title": {
                "title": [{"text": {"content": "Brand & Content System Architecture"}}]
            }
        }
    }
    
    try:
        response = requests.post(f"{NOTION_API}/pages", headers=notion_headers(), json=payload)
        print(f"Create page status: {response.status_code}")
        
        if response.status_code == 200:
            page_data = response.json()
            print(f"✅ Successfully created page: {page_data['id']}")
            return page_data
        else:
            print(f"❌ Failed: {response.text}")
            return None
            
    except Exception as e:
        print(f"❌ Exception: {e}")
        return None

def create_in_projects_database():
    """Try to create in the projects database specifically."""
    projects_db_id = "2f0330c2-8646-8181-8e22-dcab522512f6"  # From the skill documentation
    
    print(f"\nTrying to create in Projects database...")
    
    payload = {
        "parent": {"database_id": projects_db_id},
        "properties": {
            "Name": {
                "title": [{"text": {"content": "Brand & Content System Architecture"}}]
            },
            "Status": {
                "select": {"name": "In Progress"}
            }
        }
    }
    
    try:
        response = requests.post(f"{NOTION_API}/pages", headers=notion_headers(), json=payload)
        print(f"Create page status: {response.status_code}")
        
        if response.status_code == 200:
            page_data = response.json()
            print(f"✅ Successfully created project page: {page_data['id']}")
            return page_data
        else:
            print(f"❌ Failed: {response.text}")
            return None
            
    except Exception as e:
        print(f"❌ Exception: {e}")
        return None

def main():
    print("=" * 60)
    print("Finding Notion Structure for Project Creation")
    print("=" * 60)
    
    # Search for databases
    databases = search_databases()
    
    # Search for workspace pages
    workspace_pages = search_workspace_pages()
    
    # Try creating in the Projects database
    project_page = create_in_projects_database()
    
    if project_page:
        print(f"\n🎉 SUCCESS! Created project page with ID: {project_page['id']}")
        print("This can be used as the parent for our databases.")
    else:
        print("\n⚠️ Could not create project page. We'll need to find another approach.")

if __name__ == "__main__":
    main()