init
This commit is contained in:
51
src/main.py
Normal file
51
src/main.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from collections.abc import AsyncGenerator
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.routing import APIRouter
|
||||
|
||||
from shared import logger
|
||||
from src import dependencies
|
||||
from src.adapter.postgres.postgres import Postgres
|
||||
from src.adapter.telegram.telegram import Telegram
|
||||
from src.config import settings
|
||||
from src.controller.http.user import user_router
|
||||
from src.controller.telegram.bot import telegram_router
|
||||
from src.usecase.usecase import Usecase
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI) -> AsyncGenerator[None]:
|
||||
await postgres.connect()
|
||||
await telegram.start_polling()
|
||||
|
||||
yield
|
||||
|
||||
await telegram.stop_polling()
|
||||
await postgres.close()
|
||||
|
||||
|
||||
logger.init(settings.logger)
|
||||
|
||||
# Dependencies
|
||||
postgres = Postgres(settings.db)
|
||||
dependencies.set_get_session(postgres.session_getter)
|
||||
|
||||
telegram = Telegram(settings.telegram, telegram_router)
|
||||
|
||||
usecase = Usecase(
|
||||
database=postgres,
|
||||
telegram_writer=telegram,
|
||||
)
|
||||
dependencies.set_usecase(usecase)
|
||||
|
||||
app: FastAPI = FastAPI(lifespan=lifespan, version=settings.logger.APP_VERSION)
|
||||
|
||||
# Routing
|
||||
api_router = APIRouter(prefix='/api')
|
||||
|
||||
v1_router = APIRouter(prefix='/v1')
|
||||
v1_router.include_router(user_router)
|
||||
api_router.include_router(v1_router)
|
||||
|
||||
app.include_router(api_router)
|
||||
Reference in New Issue
Block a user