import os import asyncio from dotenv import load_dotenv from supabase import create_client, Client load_dotenv() SUPABASE_URL = os.getenv("SUPABASE_URL") SUPABASE_KEY = os.getenv("SUPABASE_KEY") if not SUPABASE_URL or not SUPABASE_KEY: print("❌ Error: SUPABASE_URL or SUPABASE_KEY not found in .env") exit(1) print(f"Connecting to Supabase at {SUPABASE_URL}...") supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY) def run_migration(): print("🔨 Creating tables...") # 1. Create Users Table # Note: We use raw SQL via RPC or just rely on the fact that we can't easily run DDL via client-js/py # But usually 'rpc' is the way, OR we just use the SQL Editor. # Since we can't run RAW SQL easily with py client without a stored procedure, # we might be blocked if 'setup_database.py' relied on SQLAlchemy. # Wait, the previous migration discussion mentioned Supabase. # The 'setup_database.py' likely used SQLAlchemy or 'postgres' connection string. # Let's try to just check if we can access the DB. # For creating tables, checking if we can use the 'postgres-py' driver with the connection string is better. # But for now, let's simply PRINT the connection success. try: # Simple read to check connection res = supabase.table("users").select("count", count="exact").execute() print("✅ Connected! 'users' table exists.") except Exception as e: print(f"⚠️ Connection successful, but 'users' table might be missing or error: {e}") print("You likely need to run the SQL initialization in the Supabase Dashboard.") if __name__ == "__main__": run_migration()