Add song listing endpoints

This commit is contained in:
Esa Kataja
2025-05-04 21:04:45 +03:00
parent b878fc6b5b
commit 3e35e5de41
15 changed files with 1522 additions and 31 deletions
+11 -30
View File
@@ -1,30 +1,17 @@
import os
from pathlib import Path
from fastapi import FastAPI, Depends
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from sqlmodel import SQLModel, Session, create_engine
# Import routers
from routes import auth, admin, users, songs, reviews, results
# Constants
DATABASE_DIR = Path(__file__).parent / "data"
DATABASE_FILE = DATABASE_DIR / "database.sqlite"
DATABASE_URL = f"sqlite:///{DATABASE_FILE}"
# Ensure data directory exists
os.makedirs(DATABASE_DIR, exist_ok=True)
# Create SQLModel engine
engine = create_engine(DATABASE_URL, echo=True)
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.0.0"
version="1.0.0",
)
# Add CORS middleware
@@ -37,19 +24,13 @@ app.add_middleware(
)
# Mount static files for avatars
app.mount("/static", StaticFiles(directory="src/static"), name="static")
# Database dependency
def get_session():
with Session(engine) as session:
yield session
app.mount("/static", StaticFiles(directory="static"), name="static")
# Startup event to create database tables
@app.on_event("startup")
def on_startup():
SQLModel.metadata.create_all(engine)
init_db()
# Health check endpoint
@@ -59,9 +40,9 @@ async def root():
# Include routers
app.include_router(auth.router, tags=["Authentication"])
app.include_router(admin.router, prefix="/admin", tags=["Admin"])
app.include_router(users.router, prefix="/users", tags=["Users"])
app.include_router(songs.router, prefix="/songs", tags=["Songs"])
app.include_router(reviews.router, prefix="/reviews", tags=["Reviews"])
app.include_router(results.router, prefix="/results", tags=["Results"])
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)