creativesar/taskflow
0
1"""2Database Setup Script3Executes schema.sql on Neon PostgreSQL4"""5import asyncio6import asyncpg7import sys8 9 10async def setup_database(connection_string: str):11 """Execute schema.sql on the database"""12 # Read schema file13 with open('schema.sql', 'r') as f:14 schema_sql = f.read()15 16 # Connect to database17 print(f"Connecting to database...")18 conn = await asyncpg.connect(connection_string)19 20 try:21 # Execute schema22 print("Executing schema...")23 await conn.execute(schema_sql)24 print("[SUCCESS] Schema executed successfully!")25 26 # Verify tables created27 tables = await conn.fetch(28 "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name"29 )30 print("\n[SUCCESS] Tables created:")31 for row in tables:32 print(f" - {row['table_name']}")33 34 # Verify indexes35 indexes = await conn.fetch(36 "SELECT indexname FROM pg_indexes WHERE schemaname = 'public' ORDER BY indexname"37 )38 print("\n[SUCCESS] Indexes created:")39 for row in indexes:40 print(f" - {row['indexname']}")41 42 except Exception as e:43 print(f"[ERROR] {e}")44 sys.exit(1)45 finally:46 await conn.close()47 print("\n[SUCCESS] Connection closed")48 49 50if __name__ == "__main__":51 connection_string = "postgresql://neondb_owner:npg_bnUiEAxH23Sm@ep-cold-mountain-ahrkqbkl-pooler.c-3.us-east-1.aws.neon.tech/neondb?sslmode=require"52 asyncio.run(setup_database(connection_string))53 