fediversion/backend/routers/badges.py
fullsizemalt b4cddf41ea feat: Initialize Fediversion multi-band platform
- Fork elmeg-demo codebase for multi-band support
- Add data importer infrastructure with base class
- Create band-specific importers:
  - phish.py: Phish.net API v5
  - grateful_dead.py: Grateful Stats API
  - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm)
- Add spec-kit configuration for Gemini
- Update README with supported bands and architecture
2025-12-28 12:39:28 -08:00

32 lines
1 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session, select
from database import get_session
from models import User, UserBadge, Badge
from schemas import UserBadgeRead
from auth import get_current_user
from services.stats import check_and_award_badges
router = APIRouter(prefix="/badges", tags=["badges"])
@router.get("/me", response_model=List[UserBadgeRead])
def read_my_badges(
session: Session = Depends(get_session),
current_user: User = Depends(get_current_user)
):
# Trigger a check (lazy evaluation of badges)
check_and_award_badges(session, current_user.id)
# Refresh user to get new badges
session.refresh(current_user)
return current_user.badges
@router.get("/{user_id}", response_model=List[UserBadgeRead])
def read_user_badges(
user_id: int,
session: Session = Depends(get_session)
):
user = session.get(User, user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
return user.badges