commit inicial
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
import asyncio
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import HTMLResponse, RedirectResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from fastapi.templating import Jinja2Templates
|
||||
from starlette.middleware.sessions import SessionMiddleware
|
||||
|
||||
from app.config import settings
|
||||
from app.database import engine, apply_migrations
|
||||
from app.models import Base
|
||||
from app.routers import auth, player, admin, voting, stats
|
||||
from app import spotify
|
||||
from app.history_poller import start_poller
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
apply_migrations()
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
task = asyncio.create_task(start_poller())
|
||||
yield
|
||||
task.cancel()
|
||||
|
||||
|
||||
app = FastAPI(title="Spotify Cantina", lifespan=lifespan)
|
||||
app.add_middleware(SessionMiddleware, secret_key=settings.SECRET_KEY)
|
||||
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
templates = Jinja2Templates(directory="app/templates")
|
||||
|
||||
app.include_router(auth.router)
|
||||
app.include_router(player.router)
|
||||
app.include_router(admin.router)
|
||||
app.include_router(voting.router)
|
||||
app.include_router(stats.router)
|
||||
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
def index(request: Request):
|
||||
if not spotify.is_authenticated():
|
||||
return RedirectResponse(url="/auth/login")
|
||||
return templates.TemplateResponse("index.html", {"request": request})
|
||||
Reference in New Issue
Block a user