Skip to content

Commit

Permalink
Add enabled flag + query param to trollboards REST endpoint (#1765)
Browse files Browse the repository at this point in the history
- three additional user properties are now included in trollboard stats
`enabled`, `deleted`, `show_on_leaderboard`
- an optional enabled param can be specified for the trollboards rest
queries, to only show enabled send `enabled=true`
  • Loading branch information
andreaskoepf committed Feb 20, 2023
1 parent 82c9e7c commit 301ad71
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
3 changes: 2 additions & 1 deletion backend/oasst_backend/api/v1/trollboards.py
Expand Up @@ -14,8 +14,9 @@
def get_trollboard(
time_frame: UserStatsTimeFrame,
max_count: Optional[int] = Query(100, gt=0, le=10000),
enabled: Optional[bool] = None,
api_client: ApiClient = Depends(deps.get_trusted_api_client),
db: Session = Depends(deps.get_db),
) -> TrollboardStats:
usr = UserStatsRepository(db)
return usr.get_trollboard(time_frame, limit=max_count)
return usr.get_trollboard(time_frame, limit=max_count, enabled=enabled)
14 changes: 12 additions & 2 deletions backend/oasst_backend/user_stats_repository.py
Expand Up @@ -69,6 +69,9 @@ def _create_troll_score(r, highlighted_user_id: UUID | None) -> TrollScore:
"auth_method",
"display_name",
"last_activity_date",
"enabled",
"deleted",
"show_on_leaderboard",
]:
d[k] = r[k]
if highlighted_user_id:
Expand Down Expand Up @@ -185,6 +188,7 @@ def get_trollboard(
self,
time_frame: UserStatsTimeFrame,
limit: int = 100,
enabled: Optional[bool] = None,
highlighted_user_id: Optional[UUID] = None,
) -> TrollboardStats:
"""
Expand All @@ -198,14 +202,20 @@ def get_trollboard(
User.auth_method,
User.display_name,
User.last_activity_date,
User.enabled,
User.deleted,
User.show_on_leaderboard,
TrollStats,
)
.join(TrollStats, User.id == TrollStats.user_id)
.filter(TrollStats.time_frame == time_frame.value)
.order_by(TrollStats.rank)
.limit(limit)
)

if enabled is not None:
qry = qry.filter(User.enabled == enabled)

qry = qry.order_by(TrollStats.rank).limit(limit)

trollboard = [_create_troll_score(r, highlighted_user_id) for r in self.session.exec(qry)]
if len(trollboard) > 0:
last_update = max(x.modified_date for x in trollboard)
Expand Down
3 changes: 3 additions & 0 deletions oasst-shared/oasst_shared/schemas/protocol.py
Expand Up @@ -495,6 +495,9 @@ class TrollScore(BaseModel):
auth_method: str
display_name: str
last_activity_date: Optional[datetime]
enabled: bool
deleted: bool
show_on_leaderboard: bool

troll_score: int = 0

Expand Down

0 comments on commit 301ad71

Please sign in to comment.