48 lines
1.1 KiB
Python
48 lines
1.1 KiB
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.backup import start_backup_scheduler, stop_backup_scheduler
|
|
from routers import (
|
|
backup_router,
|
|
builder_router,
|
|
editor_router,
|
|
grabber_router,
|
|
library_router,
|
|
reader_router,
|
|
settings_router,
|
|
)
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
init_pool()
|
|
run_migrations()
|
|
await start_backup_scheduler()
|
|
try:
|
|
yield
|
|
finally:
|
|
await stop_backup_scheduler()
|
|
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.include_router(builder_router)
|
|
|
|
|
|
@app.get("/")
|
|
async def index_redirect():
|
|
return RedirectResponse(url="/home", status_code=302)
|