68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
import os
|
|
import asyncio
|
|
import logging
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.client.default import DefaultBotProperties
|
|
|
|
from config import BOT_TOKEN
|
|
from handlers import admins_routers, client_routers
|
|
|
|
from middlewares.di import DIMiddleware
|
|
from middlewares.repository import RepositoryMiddleware
|
|
from middlewares.session import DBSessionMiddleware
|
|
from repositories.categories import CategoriesRepository
|
|
from repositories.invoices import InvoiceRepository
|
|
from repositories.order_items import OrderItemRepository
|
|
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, default=DefaultBotProperties(parse_mode="HTML"))
|
|
|
|
# DB services creation
|
|
order_repository = OrderRepository()
|
|
order_items_repository = OrderItemRepository()
|
|
order_service = OrderService(order_repository, order_items_repository)
|
|
|
|
category_repository = CategoriesRepository()
|
|
|
|
product_repository = ProductRepository()
|
|
|
|
invoice_repository = InvoiceRepository()
|
|
|
|
# DI Middleware Init
|
|
dp.update.middleware(DIMiddleware(order_service))
|
|
dp.update.middleware(DBSessionMiddleware(async_session))
|
|
dp.update.middleware(
|
|
RepositoryMiddleware(
|
|
order_repository,
|
|
category_repository,
|
|
product_repository,
|
|
order_items_repository,
|
|
invoice_repository,
|
|
)
|
|
)
|
|
|
|
for ar in admins_routers:
|
|
dp.include_router(ar)
|
|
|
|
for cr in client_routers:
|
|
dp.include_router(cr)
|
|
|
|
await dp.start_polling(bot)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|