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)
|