Automated Action 0cd6e6441d Setup FastAPI REST API for Sports Betting Verification
- Set up FastAPI application structure
- Implemented SQLite database integration with SQLAlchemy
- Added Alembic migrations for database versioning
- Created bet model and API endpoints for CRUD operations
- Added comprehensive README with setup and usage instructions
- Added health check endpoint and CORS support
2025-06-07 13:06:19 +00:00

65 lines
1.7 KiB
Python

from datetime import datetime
from typing import List, Optional
from sqlalchemy.orm import Session
from app.models.bet import Bet
from app.schemas.bet import BetCreate, BetUpdate
def get_bet(db: Session, bet_id: int) -> Optional[Bet]:
"""Get a single bet by ID"""
return db.query(Bet).filter(Bet.id == bet_id).first()
def get_bets(
db: Session, skip: int = 0, limit: int = 100, user_id: Optional[str] = None
) -> List[Bet]:
"""Get multiple bets with optional filtering by user_id"""
query = db.query(Bet)
if user_id:
query = query.filter(Bet.user_id == user_id)
return query.offset(skip).limit(limit).all()
def create_bet(db: Session, bet: BetCreate) -> Bet:
"""Create a new bet"""
db_bet = Bet(
user_id=bet.user_id,
event_id=bet.event_id,
amount=bet.amount,
odds=bet.odds,
prediction=bet.prediction,
)
db.add(db_bet)
db.commit()
db.refresh(db_bet)
return db_bet
def update_bet(db: Session, bet_id: int, bet: BetUpdate) -> Optional[Bet]:
"""Update an existing bet"""
db_bet = get_bet(db=db, bet_id=bet_id)
if db_bet:
update_data = bet.dict(exclude_unset=True)
# If we're setting is_verified to True, also set the verified_at timestamp
if update_data.get("is_verified"):
update_data["verified_at"] = datetime.utcnow()
for field, value in update_data.items():
setattr(db_bet, field, value)
db.commit()
db.refresh(db_bet)
return db_bet
def delete_bet(db: Session, bet_id: int) -> bool:
"""Delete a bet"""
db_bet = get_bet(db=db, bet_id=bet_id)
if db_bet:
db.delete(db_bet)
db.commit()
return True
return False