rlt_salary/app/handlers.py

30 lines
1.1 KiB
Python
Raw Normal View History

2024-02-27 23:27:42 +01:00
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)