Files
LoveACE-EndF/main.py

81 lines
2.2 KiB
Python
Raw Normal View History

2025-08-03 16:50:56 +08:00
from contextlib import asynccontextmanager
from fastapi import FastAPI
from database.creator import db_manager
from router.invite import invite_router
from router.jwc import jwc_router
from router.login import login_router
from router.aac import aac_router
from router.user import user_router
2025-09-03 13:00:40 +08:00
from router.isim import isim_router
2025-08-03 16:50:56 +08:00
from richuru import install
from fastapi.middleware.cors import CORSMiddleware as allow_origins
import uvicorn
# 导入配置管理器和日志设置
from config import config_manager
from config.logger import setup_logger, get_logger
# 初始化日志系统
install()
2025-08-03 16:50:56 +08:00
setup_logger()
logger = get_logger()
2025-08-03 16:50:56 +08:00
@asynccontextmanager
async def lifespan(app: FastAPI):
# 验证配置文件完整性
if not config_manager.validate_config():
logger.error("配置文件验证失败,请检查配置")
raise RuntimeError("配置文件验证失败")
logger.info("应用程序启动中...")
# 启动时连接数据库
await db_manager.init_db()
logger.success("数据库连接成功")
yield
# 关闭时断开数据库连接
await db_manager.close_db()
logger.info("应用程序已关闭")
# 获取应用配置
app_config = config_manager.get_settings().app
# Production FastAPI application
app = FastAPI(
lifespan=lifespan,
title=app_config.title,
description=app_config.description,
version=app_config.version,
debug=app_config.debug,
docs_url=None if not app_config.debug else "/docs",
redoc_url=None if not app_config.debug else "/redoc",
openapi_url=None if not app_config.debug else "/openapi.json",
2025-08-03 16:50:56 +08:00
)
# CORS配置
app.add_middleware(
allow_origins,
allow_origins=app_config.cors_allow_origins,
allow_credentials=app_config.cors_allow_credentials,
allow_methods=app_config.cors_allow_methods,
allow_headers=app_config.cors_allow_headers,
)
@app.get("/")
async def root():
return {"message": "Hello World"}
2025-08-03 16:50:56 +08:00
app.include_router(invite_router)
app.include_router(jwc_router)
app.include_router(login_router)
app.include_router(aac_router)
app.include_router(user_router)
2025-09-03 13:00:40 +08:00
app.include_router(isim_router)
2025-08-03 16:50:56 +08:00
if __name__ == "__main__":
uvicorn.run(app, host=app_config.host, port=app_config.port)