before claude fix #1
This commit is contained in:
61
FitnessSync/backend/main.py
Normal file
61
FitnessSync/backend/main.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from contextlib import asynccontextmanager
|
||||
from src.services.postgresql_manager import PostgreSQLManager
|
||||
from alembic.config import Config
|
||||
from alembic import command
|
||||
import os
|
||||
|
||||
# Create application lifespan to handle startup/shutdown
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
# Startup
|
||||
# Run database migrations
|
||||
alembic_cfg = Config("alembic.ini")
|
||||
database_url = os.getenv("DATABASE_URL", "postgresql://postgres:password@localhost:5432/fitbit_garmin_sync")
|
||||
alembic_cfg.set_main_option("sqlalchemy.url", database_url)
|
||||
command.upgrade(alembic_cfg, "head")
|
||||
|
||||
# Initialize database tables
|
||||
db_manager = PostgreSQLManager(database_url=database_url)
|
||||
db_manager.init_db()
|
||||
|
||||
yield
|
||||
|
||||
# Shutdown
|
||||
# Add any cleanup code here if needed
|
||||
|
||||
# Create FastAPI app with lifespan
|
||||
app = FastAPI(lifespan=lifespan)
|
||||
|
||||
# Mount static files
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
# Initialize templates
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
# Include API routes
|
||||
from src.api.status import router as status_router
|
||||
from src.api.sync import router as sync_router
|
||||
from src.api.setup import router as setup_router
|
||||
from src.api.logs import router as logs_router
|
||||
from src.api.metrics import router as metrics_router
|
||||
from src.api.activities import router as activities_router
|
||||
|
||||
app.include_router(status_router, prefix="/api")
|
||||
app.include_router(sync_router, prefix="/api")
|
||||
app.include_router(setup_router, prefix="/api")
|
||||
app.include_router(logs_router, prefix="/api")
|
||||
app.include_router(metrics_router, prefix="/api")
|
||||
app.include_router(activities_router, prefix="/api")
|
||||
|
||||
from fastapi import Request
|
||||
|
||||
@app.get("/")
|
||||
async def read_root(request: Request):
|
||||
return templates.TemplateResponse("index.html", {"request": request})
|
||||
|
||||
@app.get("/setup")
|
||||
async def setup_page(request: Request):
|
||||
return templates.TemplateResponse("setup.html", {"request": request})
|
||||
Reference in New Issue
Block a user