import os 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") origins = os.getenv("ALLOWED_ORIGINS", "http://localhost:3000,http://localhost:3001").split(",") app.add_middleware( CORSMiddleware, allow_origins=origins, 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"}