58 lines
1.4 KiB
Python
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"
|
|
])
|
|
except Exception as e:
|
|
log.logger.error(f"Error running tailwindcss: {e}")
|
|
log.logger.info("Tailwind CSS done")
|
|
|
|
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)
|