Files
Eurovision-25-backend/src/app.py
T
2025-05-16 08:11:54 +03:00

64 lines
1.6 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
# Import routers
from routes import auth, admin, users, songs, reviews, results, contest
from lib.logger import logger
from lib.db import init_db
# Initialize FastAPI app
app = FastAPI(
title="Eurovision 25 Homereview API",
description="Backend API for Eurovision 25 Homereview application",
version="1.0rc3",
)
@app.middleware("http")
async def log_requests(request, call_next):
body = await request.body()
logger.debug(f"Request body: {body.decode('utf-8')}")
response = await call_next(request)
return response
# Add CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # For development; restrict in production
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Mount static files for avatars
app.mount("/static/avatars", StaticFiles(directory="static/avatars"), name="avatars")
app.mount("/static/flags", StaticFiles(directory="static/flags"), name="flags")
# Startup event to create database tables
@app.on_event("startup")
def on_startup():
logger.info("Starting up...")
init_db()
# Health check endpoint
@app.get("/")
async def root():
logger.debug("Root endpoint accessed")
return {"status": "ok", "message": "Eurovision 25 Homereview API"}
# Include routers
app.include_router(auth.router)
app.include_router(admin.router)
app.include_router(users.router)
app.include_router(songs.router)
app.include_router(reviews.router)
app.include_router(results.router)
app.include_router(contest.router)