DispelEvilBot/bot/services/shop.py

30 lines
1.0 KiB
Python

"""Сервис магазина."""
from __future__ import annotations
from common.models import Donat, Title
from common.repositories import shop_repo
async def list_titles() -> list[Title]:
rows = await shop_repo.get_titles_list()
return [Title(id=int(row["i"]), title=row["n"] or "", price=int(row["p"] or 0)) for row in rows]
async def list_donats() -> list[Donat]:
rows = await shop_repo.get_donats_list()
return [Donat(id=int(row["i"]), title=row["n"] or "", price=int(row["p"] or 0)) for row in rows]
async def buy_title(id_user: int, id_title: int) -> bool:
"""Купить звание. Возвращает True при успехе."""
return await shop_repo.buy_title(id_user, id_title) == 1
async def buy_donat(id_user: int, id_donat: int) -> str | None:
"""Купить донат. Возвращает промокод или None при неуспехе."""
result = await shop_repo.buy_donat(id_user, id_donat)
if result == "-1":
return None
return result