from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from sqlalchemy import text from .database import engine, Base from .routes import users, purchases, stats, history, admin Base.metadata.create_all(bind=engine) app = FastAPI(title="BTC Portfolio API") app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:3000", "http://localhost:3001"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(users.router) app.include_router(purchases.router) app.include_router(stats.router) app.include_router(history.router) app.include_router(admin.router, prefix="/admin") @app.on_event("startup") def migrate(): with engine.connect() as conn: cols = [r[1] for r in conn.execute(text("PRAGMA table_info(users)"))] if "is_admin" not in cols: conn.execute(text("ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT 0")) conn.commit() @app.get("/") def root(): return {"message": "BTC Portfolio API"}