30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
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) |