LifeRPG_v2.0/modern/backend/app.py

44 lines
1.1 KiB
Python

from fastapi import FastAPI, Depends, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from . import models
from .oauth import router as oauth_router
import os
app = FastAPI(title='LifeRPG Modern Backend')
app.add_middleware(
CORSMiddleware,
allow_origins=[os.getenv('FRONTEND_ORIGIN', 'http://localhost:5173')],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event('startup')
def startup_event():
models.init_db()
@app.get('/health')
def health():
return {'status': 'ok'}
@app.get('/api/v1/hello')
def hello():
return {'message': 'Hello from LifeRPG modern backend (FastAPI)'}
app.include_router(oauth_router, prefix='/api/v1')
# Basic user routes (demo)
@app.post('/api/v1/users')
def create_user(payload: dict):
db = models.SessionLocal()
email = payload.get('email')
if not email:
raise HTTPException(status_code=400, detail='email required')
user = models.User(email=email, display_name=payload.get('display_name'))
db.add(user)
db.commit()
db.refresh(user)
db.close()
return {'id': user.id, 'email': user.email}