Updated events page to display all user bets.
This commit is contained in:
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user