import json from app.database import MongoDB, aggregate_salaries from app.config import configs from aiogram import Router, types from aiogram.filters import Command from app.texts import invalid, greetings from app.query import Query from app.database.MongoDBConfig import MongoDBConfig from loguru import logger router = Router() client_config = MongoDBConfig(url=str(configs.DB_URI), db_name=configs.DATABASE_NAME, collection=configs.COLLECTION_NAME) client = MongoDB(config=client_config) @router.message(Command("start")) async def start_handler(message: types.Message): await message.answer(greetings.format(name=message.from_user.first_name)) @router.message() async def query_handler(message: types.Message): try: query = Query(**json.loads(message.text)) logger.info("Aggregate query starting") result = await aggregate_salaries(client.collection, query.dt_from, query.dt_upto, query.group_type) logger.info("Aggregate query complete") await message.answer(str(result)) except ValueError as e: await message.answer(invalid)