-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.py
More file actions
51 lines (40 loc) · 1.25 KB
/
Copy pathapp.py
File metadata and controls
51 lines (40 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"""Product Image Auto Pack Generator -- FastAPI application entry point.
This module creates and configures the FastAPI application. It does NOT
call ``uvicorn.run`` or ``app.run`` so it can be imported by test clients
and deployed behind any ASGI server.
"""
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
import os
import config
from models.database import init_db
from routes.api import router as api_router
from routes.views import router as views_router
@asynccontextmanager
async def lifespan(application: FastAPI):
"""Initialize database on startup."""
init_db()
yield
app = FastAPI(
title=config.APP_NAME,
description=config.APP_DESCRIPTION,
version=config.APP_VERSION,
lifespan=lifespan,
)
# CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Static files
static_dir = os.path.join(os.path.dirname(__file__), "frontend", "static")
if os.path.isdir(static_dir):
app.mount("/static", StaticFiles(directory=static_dir), name="static")
# Routers
app.include_router(api_router)
app.include_router(views_router)