Skip to content

Commit 5e76174

Browse files
committed
small leaderboard_db improvements
1 parent 03a6fd7 commit 5e76174

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

src/libkernelbot/leaderboard_db.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -142,31 +142,21 @@ def update_leaderboard(
142142
):
143143
task = definition.task
144144
try:
145+
lb_id = self.get_leaderboard_id(name)
145146
self.cursor.execute(
146147
"""
147148
UPDATE leaderboard.leaderboard
148149
SET deadline = %s, task = %s, description = %s
149-
WHERE name = %s;
150+
WHERE id = %s;
150151
""",
151152
(
152153
deadline.astimezone(datetime.timezone.utc),
153154
task.to_str(),
154155
definition.description,
155-
name,
156+
lb_id,
156157
),
157158
)
158159

159-
self.cursor.execute(
160-
"""
161-
SELECT id
162-
FROM leaderboard.leaderboard
163-
WHERE name = %s
164-
""",
165-
(name,),
166-
)
167-
168-
lb_id = self.cursor.fetchone()[0]
169-
170160
# replace templates
171161
self.cursor.execute(
172162
"""
@@ -237,8 +227,13 @@ def delete_leaderboard(self, leaderboard_name: str, force: bool = False):
237227
self.name_cache.invalidate() # Invalidate autocomplete cache
238228
except psycopg2.Error as e:
239229
self.connection.rollback()
230+
if isinstance(e, psycopg2.errors.ForeignKeyViolation):
231+
raise KernelBotError(
232+
f"Could not delete leaderboard `{leaderboard_name}` with existing submissions."
233+
) from e
234+
240235
logger.exception("Could not delete leaderboard %s.", leaderboard_name, exc_info=e)
241-
raise KernelBotError(f"Could not delete leaderboard {leaderboard_name}.") from e
236+
raise KernelBotError(f"Could not delete leaderboard `{leaderboard_name}`.") from e
242237

243238
def create_submission(
244239
self,
@@ -428,7 +423,7 @@ def get_leaderboard_names(self, active_only: bool = False) -> list[str]:
428423
def get_leaderboards(self) -> list["LeaderboardItem"]:
429424
self.cursor.execute(
430425
"""
431-
SELECT id, name, deadline, task, creator_id, forum_id, description
426+
SELECT id, name, deadline, task, creator_id, forum_id, description, secret_seed
432427
FROM leaderboard.leaderboard
433428
"""
434429
)
@@ -452,6 +447,7 @@ def get_leaderboards(self) -> list["LeaderboardItem"]:
452447
creator_id=lb[4],
453448
forum_id=lb[5],
454449
description=lb[6],
450+
secret_seed=lb[7],
455451
)
456452
)
457453

0 commit comments

Comments
 (0)