Updated events page to display all user bets.

This commit is contained in:
2026-01-10 14:01:21 -06:00
parent accd4487b0
commit 3cf9e594e9
14 changed files with 283 additions and 27 deletions

View File

@ -214,6 +214,57 @@ async def get_my_active_bets(
]
@router.get("/my-history", response_model=List[SpreadBetDetail])
async def get_my_bet_history(
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user)
):
"""Get user's completed, cancelled, and disputed bets (history)."""
result = await db.execute(
select(SpreadBet)
.options(
selectinload(SpreadBet.event),
selectinload(SpreadBet.creator),
selectinload(SpreadBet.taker)
)
.where(
and_(
SpreadBet.status.in_([SpreadBetStatus.COMPLETED, SpreadBetStatus.CANCELLED, SpreadBetStatus.DISPUTED]),
(SpreadBet.creator_id == current_user.id) | (SpreadBet.taker_id == current_user.id)
)
)
.order_by(SpreadBet.created_at.desc())
.limit(50)
)
bets = result.scalars().all()
return [
SpreadBetDetail(
id=bet.id,
event_id=bet.event_id,
spread=bet.spread,
team=bet.team,
creator_id=bet.creator_id,
taker_id=bet.taker_id,
stake_amount=bet.stake_amount,
house_commission_percent=bet.house_commission_percent,
status=bet.status,
payout_amount=bet.payout_amount,
winner_id=bet.winner_id,
created_at=bet.created_at,
matched_at=bet.matched_at,
completed_at=bet.completed_at,
creator_username=bet.creator.username,
taker_username=bet.taker.username if bet.taker else None,
event_home_team=bet.event.home_team,
event_away_team=bet.event.away_team,
event_official_spread=bet.event.official_spread,
event_game_time=bet.event.game_time
)
for bet in bets
]
@router.delete("/{bet_id}")
async def cancel_spread_bet(
bet_id: int,