"""Сервис магазина.""" 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