+ api
This commit is contained in:
17
main.py
17
main.py
@@ -16,6 +16,7 @@ from starlette.middleware.cors import CORSMiddleware
|
||||
|
||||
# --- ИМПОРТЫ ПРОЕКТА ---
|
||||
from adapters.google_adapter import GoogleAdapter
|
||||
from api.service.generation_service import GenerationService
|
||||
from middlewares.album import AlbumMiddleware
|
||||
from middlewares.auth import AuthMiddleware
|
||||
from middlewares.dao import DaoMiddleware
|
||||
@@ -33,8 +34,9 @@ from routers.auth_router import router as auth_router
|
||||
from routers.gen_router import router as gen_router
|
||||
from routers.char_router import router as char_router
|
||||
from routers.assets_router import router as assets_router # Роутер бота для ассетов
|
||||
from api.endpoints.assets import router as api_assets_router # Роутер FastAPI
|
||||
from api.endpoints.assets_router import router as api_assets_router # Роутер FastAPI
|
||||
from api.endpoints.character_router import router as api_char_router # Роутер FastAPI
|
||||
from api.endpoints.generation_router import router as api_gen_router
|
||||
|
||||
load_dotenv()
|
||||
|
||||
@@ -47,7 +49,7 @@ ADMIN_ID = int(os.getenv("ADMIN_ID", 0))
|
||||
|
||||
|
||||
def setup_logging():
|
||||
logging.basicConfig(level=logging.INFO,
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s")
|
||||
|
||||
|
||||
@@ -61,6 +63,8 @@ mongo_client = AsyncIOMotorClient(MONGO_HOST)
|
||||
users_repo = UsersRepo(mongo_client)
|
||||
char_repo = CharacterRepo(mongo_client)
|
||||
dao = DAO(mongo_client) # Главный DAO для бота
|
||||
gemini = GoogleAdapter(api_key=GEMINI_API_KEY)
|
||||
generation_service = GenerationService(dao, gemini)
|
||||
|
||||
# Dispatcher
|
||||
dp = Dispatcher(storage=MongoStorage(mongo_client, db_name=DB_NAME))
|
||||
@@ -68,7 +72,7 @@ dp = Dispatcher(storage=MongoStorage(mongo_client, db_name=DB_NAME))
|
||||
# Внедрение зависимостей (глобально для бота)
|
||||
dp["repo"] = users_repo
|
||||
dp["admin_id"] = ADMIN_ID
|
||||
dp["gemini"] = GoogleAdapter(api_key=GEMINI_API_KEY)
|
||||
dp["gemini"] = gemini
|
||||
|
||||
# --- НАСТРОЙКА РОУТЕРОВ БОТА ---
|
||||
|
||||
@@ -108,7 +112,9 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
# Инициализируем DAO для ассетов и кладем в state приложения
|
||||
# Теперь в эндпоинтах можно делать request.app.state.assets_dao
|
||||
app.state.dao = dao
|
||||
|
||||
app.state.mongo_client = mongo_client
|
||||
app.state.gemini_client = gemini
|
||||
|
||||
print("✅ DB & DAO initialized")
|
||||
|
||||
@@ -152,6 +158,7 @@ app.add_middleware(
|
||||
# Подключаем роутер API
|
||||
app.include_router(api_assets_router)
|
||||
app.include_router(api_char_router)
|
||||
app.include_router(api_gen_router)
|
||||
|
||||
|
||||
# --- ХЕНДЛЕРЫ БОТА (Main Router) ---
|
||||
@@ -179,7 +186,7 @@ if __name__ == "__main__":
|
||||
async def main():
|
||||
# Создаем конфигурацию uvicorn вручную
|
||||
# loop="asyncio" заставляет использовать стандартный цикл
|
||||
config = uvicorn.Config(app, host="0.0.0.0", port=8090, loop="asyncio")
|
||||
config = uvicorn.Config(app, host="0.0.0.0", port=8090, loop="asyncio", timeout_keep_alive=120)
|
||||
server = uvicorn.Server(config)
|
||||
|
||||
# Запускаем сервер (lifespan запустится внутри)
|
||||
|
||||
Reference in New Issue
Block a user