Files
folkugat-web/folkugat_web/main.py
2025-04-27 11:49:44 +02:00

58 lines
1.4 KiB
Python

import subprocess
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from folkugat_web import log
from folkugat_web.api import router
from folkugat_web.config import db, directories
from folkugat_web.dal.sql.ddl import create_db
@asynccontextmanager
async def lifespan(_: FastAPI):
"""
Context manager for FastAPI app. It will run all code before `yield`
on app startup, and will run code after `yeld` on app shutdown.
"""
log.logger.info("Running Tailwind CSS...")
try:
subprocess.run([
"tailwindcss",
"-i",
directories.STATIC_DIR / "src" / "tw.css",
"-o",
directories.STATIC_DIR / "css" / "main.css",
# "--minify"
])
log.logger.info("Tailwind CSS done")
except Exception as e:
log.logger.error(f"Error running tailwindcss: {e}")
log.logger.info("Creating DB...")
create_db()
log.logger.info("DB created")
yield
def get_app() -> FastAPI:
app = FastAPI(lifespan=lifespan)
app.include_router(router)
app.mount("/static", StaticFiles(directory=directories.STATIC_DIR), name="static")
app.mount(db.DB_FILES_URL, StaticFiles(directory=db.DB_FILES_DIR), name="fitxers")
return app
app = get_app()
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)