Add song listing endpoints
This commit is contained in:
+11
-30
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user