feat: fetch views manually and worker

This commit is contained in:
Artem Tsyrulnikov
2025-11-12 23:55:44 +03:00
parent 292bb0d49b
commit a48d5e67cb
28 changed files with 632 additions and 135 deletions

View File

@@ -7,10 +7,12 @@ from shared import logger
from src import dependencies
from src.adapter.jwt import JWT
from src.adapter.postgres import Postgres
from src.adapter.telegram import Telegram
from src.adapter.telegram_bot import TelegramBot
from src.adapter.telegram_parser import TelegramParser
from src.config import settings
from src.controller.http import api_router
from src.controller.telegram_callback import telegram_callback_router
from src.controller.worker.views_worker import FetchViewsWorker
from src.usecase import Usecase
@@ -18,9 +20,11 @@ from src.usecase import Usecase
async def lifespan(app: FastAPI) -> AsyncGenerator[None]:
await postgres.connect()
await telegram.start_polling()
await views_worker.start()
yield
await views_worker.stop()
await telegram.stop_polling()
await postgres.close()
@@ -29,15 +33,19 @@ logger.init(settings.logger)
# Dependencies
postgres = Postgres(settings.db)
telegram = Telegram(settings.telegram, telegram_callback_router)
telegram = TelegramBot(settings.telegram, telegram_callback_router)
telegram_views_fetcher = TelegramParser(settings.telegram_parser)
jwt_encoder = JWT(settings.jwt)
usecase = Usecase(
database=postgres,
telegram_writer=telegram,
telegram_bot=telegram,
telegram_parser=telegram_views_fetcher,
jwt_encoder=jwt_encoder,
)
dependencies.set_usecase(usecase)
views_worker = FetchViewsWorker(config=settings.fetch_views_worker)
app = FastAPI(lifespan=lifespan, version=settings.logger.APP_VERSION)
app.include_router(api_router)