from fastapi import APIRouter, Query, Body from fastapi import HTTPException from datetime import datetime, timedelta from app.models.bonus import PurchaseBonus import uuid router = APIRouter( prefix="/api/bonuses", tags=["Bonuses"] ) @router.get("/effects") async def get_user_effects(username: str): """Получить активные эффекты пользователя для плагина""" from app.services.bonus import BonusService return await BonusService().get_user_active_effects(username) @router.get("/types") async def get_bonus_types(): """Получить доступные типы бонусов""" from app.services.bonus import BonusService return await BonusService().list_available_bonuses() @router.get("/user/{username}") async def get_user_bonuses(username: str): """Получить активные бонусы пользователя""" from app.services.bonus import BonusService return await BonusService().get_user_bonuses(username) @router.post("/purchase") async def purchase_bonus(purchase_bonus: PurchaseBonus): """Купить бонус""" from app.services.bonus import BonusService return await BonusService().purchase_bonus(purchase_bonus.username, purchase_bonus.bonus_type_id) @router.post("/upgrade") async def upgrade_user_bonus(username: str = Body(...), bonus_id: str = Body(...)): """Улучшить существующий бонус""" from app.services.bonus import BonusService return await BonusService().upgrade_bonus(username, bonus_id)