import os import asyncio import logging from aiogram import Bot, Dispatcher from config import BOT_TOKEN from handlers import init_handlers from middlewares.di import DIMiddleware from middlewares.repository import RepositoryMiddleware from middlewares.session import DBSessionMiddleware from repositories.categories import CategoriesRepository from repositories.orders import OrderRepository from repositories.products import ProductRepository from services import OrderService from db.base import async_session logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) os.makedirs("static/img", exist_ok=True) async def main(): dp = Dispatcher() bot = Bot(token=BOT_TOKEN) # DB services creation order_repository = OrderRepository() order_service = OrderService(order_repository) category_repository = CategoriesRepository() product_repository = ProductRepository() # DI Middleware Init dp.message.middleware(DIMiddleware(order_service)) dp.message.middleware(DBSessionMiddleware(async_session)) dp.message.middleware( RepositoryMiddleware(order_repository, category_repository, product_repository) ) dp.callback_query.middleware(DIMiddleware(order_service)) dp.callback_query.middleware(DBSessionMiddleware(async_session)) dp.callback_query.middleware( RepositoryMiddleware(order_repository, category_repository, product_repository) ) init_handlers(dp) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())