From 1f7f83a31a13d555716a7756c6d1ab21f32141c3 Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Tue, 23 Dec 2025 15:45:29 -0800 Subject: [PATCH] fix: Videos page links to show, hide test users from leaderboard - Videos page now links song titles to show page (where video is displayed) - Leaderboard hides tenwest/testuser until 12+ real users exist --- backend/services/gamification.py | 24 ++++++++++++++++++++---- frontend/app/videos/page.tsx | 14 +++++++------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/backend/services/gamification.py b/backend/services/gamification.py index 429a9b7..dcff809 100644 --- a/backend/services/gamification.py +++ b/backend/services/gamification.py @@ -222,11 +222,27 @@ def check_and_award_badges(session: Session, user: User) -> List[Badge]: def get_leaderboard(session: Session, limit: int = 10) -> List[dict]: """Get top users by XP""" - users = session.exec( - select(User) + # Test accounts to hide until we have real users + TEST_USER_EMAILS = ["tenwest", "testuser"] + MIN_USERS_TO_SHOW_TEST = 12 + + # Count total real users + total_users = session.exec( + select(func.count(User.id)) .where(User.is_active == True) - .order_by(User.xp.desc()) - .limit(limit) + ).one() or 0 + + # Build query + query = select(User).where(User.is_active == True) + + # If we don't have enough real users, hide test accounts + if total_users < MIN_USERS_TO_SHOW_TEST: + for test_email in TEST_USER_EMAILS: + query = query.where(~User.email.ilike(f"{test_email}@%")) + query = query.where(~User.email.ilike(f"%{test_email}%")) + + users = session.exec( + query.order_by(User.xp.desc()).limit(limit) ).all() return [ diff --git a/frontend/app/videos/page.tsx b/frontend/app/videos/page.tsx index d776ca7..c4dffd3 100644 --- a/frontend/app/videos/page.tsx +++ b/frontend/app/videos/page.tsx @@ -107,8 +107,8 @@ export default function VideosPage() {