novela/containers/novela/main.py

43 lines
947 B
Python

from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.responses import RedirectResponse
from fastapi.staticfiles import StaticFiles
from db import close_pool, init_pool
from migrations import run_migrations
from routers import (
backup_router,
editor_router,
grabber_router,
library_router,
reader_router,
settings_router,
)
@asynccontextmanager
async def lifespan(app: FastAPI):
init_pool()
run_migrations()
try:
yield
finally:
close_pool()
app = FastAPI(lifespan=lifespan)
app.mount("/static", StaticFiles(directory="static"), name="static")
app.include_router(library_router)
app.include_router(reader_router)
app.include_router(editor_router)
app.include_router(grabber_router)
app.include_router(settings_router)
app.include_router(backup_router)
@app.get("/")
async def index_redirect():
return RedirectResponse(url="/home", status_code=302)