""" Complete migration script - Extracts all endpoints from main.py to routers This preserves all functionality while creating a clean modular structure """ import re import os def read_file(path): with open(path, 'r') as f: return f.read() def extract_section(content, start_marker, end_marker): """Extract a section between two markers""" start = content.find(start_marker) if start == -1: return None end = content.find(end_marker, start) if end == -1: end = len(content) return content[start:end] # Read original main.py main_content = read_file('main.py') # Find all endpoint definitions endpoint_pattern = r'@app\.(get|post|put|delete|patch)\(["\']([^"\']+)["\']\)' endpoints = re.findall(endpoint_pattern, main_content) print(f"Found {len(endpoints)} endpoints in main.py:") for method, path in endpoints[:20]: # Show first 20 print(f" {method.upper():6} {path}") if len(endpoints) > 20: print(f" ... and {len(endpoints) - 20} more") # Group endpoints by category categories = { 'auth': [], 'characters': [], 'game': [], 'combat': [], 'equipment': [], 'crafting': [], 'loot': [], 'admin': [], 'statistics': [], 'health': [] } for method, path in endpoints: if '/api/auth/' in path: categories['auth'].append((method, path)) elif '/api/characters' in path: categories['characters'].append((method, path)) elif '/api/game/combat' in path or '/api/game/pvp' in path: categories['combat'].append((method, path)) elif '/api/game/equip' in path or '/api/game/unequip' in path or '/api/game/equipment' in path or '/api/game/repair' in path or '/api/game/repairable' in path or '/api/game/salvageable' in path: categories['equipment'].append((method, path)) elif '/api/game/craft' in path or '/api/game/uncraft' in path or '/api/game/craftable' in path: categories['crafting'].append((method, path)) elif '/api/game/corpse' in path or '/api/game/loot' in path: categories['loot'].append((method, path)) elif '/api/internal/' in path: categories['admin'].append((method, path)) elif '/api/statistics' in path or '/api/leaderboard' in path: categories['statistics'].append((method, path)) elif '/health' in path: categories['health'].append((method, path)) elif '/api/game/' in path: categories['game'].append((method, path)) print("\n" + "="*60) print("Endpoint Distribution:") for cat, endpoints_list in categories.items(): if endpoints_list: print(f" {cat:15}: {len(endpoints_list):2} endpoints") print("\n" + "="*60) print("\nNext steps:") print("1. ✅ Auth router - already created") print("2. ✅ Characters router - already created") print("3. ⏳ Game routes router - needs creation (largest)") print("4. ⏳ Combat router - needs creation") print("5. ⏳ Equipment router - needs creation") print("6. ⏳ Crafting router - needs creation") print("7. ⏳ Loot router - needs creation") print("8. ⏳ Admin router - needs creation") print("9. ⏳ Statistics router - needs creation") print("10. ⏳ Clean main.py - after all routers created")