mirror of
https://github.com/evroon/bracket.git
synced 2026-03-05 23:59:01 -05:00
Use asyncpg for updating tournaments (#523)
fix https://github.com/evroon/bracket/issues/514
This commit is contained in:
@@ -30,6 +30,7 @@ from bracket.sql.tournaments import (
|
||||
sql_get_tournament,
|
||||
sql_get_tournament_by_endpoint_name,
|
||||
sql_get_tournaments,
|
||||
sql_update_tournament,
|
||||
)
|
||||
from bracket.sql.users import get_user_access_to_club, get_which_clubs_has_user_access_to
|
||||
from bracket.utils.errors import (
|
||||
@@ -97,10 +98,7 @@ async def update_tournament_by_id(
|
||||
_: UserPublic = Depends(user_authenticated_for_tournament),
|
||||
) -> SuccessResponse:
|
||||
try:
|
||||
await database.execute(
|
||||
query=tournaments.update().where(tournaments.c.id == tournament_id),
|
||||
values=tournament_body.model_dump(),
|
||||
)
|
||||
await sql_update_tournament(tournament_id, tournament_body)
|
||||
except asyncpg.exceptions.UniqueViolationError as exc:
|
||||
check_unique_constraint_violation(exc, {UniqueIndex.ix_tournaments_dashboard_endpoint})
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from typing import Any
|
||||
|
||||
from bracket.database import database
|
||||
from bracket.models.db.tournament import Tournament
|
||||
from bracket.models.db.tournament import Tournament, TournamentUpdateBody
|
||||
from bracket.utils.id_types import TournamentId
|
||||
|
||||
|
||||
@@ -52,3 +52,25 @@ async def sql_delete_tournament(tournament_id: TournamentId) -> None:
|
||||
WHERE id = :tournament_id
|
||||
"""
|
||||
await database.fetch_one(query=query, values={"tournament_id": tournament_id})
|
||||
|
||||
|
||||
async def sql_update_tournament(
|
||||
tournament_id: TournamentId, tournament: TournamentUpdateBody
|
||||
) -> None:
|
||||
query = """
|
||||
UPDATE tournaments
|
||||
SET
|
||||
start_time = :start_time,
|
||||
name = :name,
|
||||
dashboard_public = :dashboard_public,
|
||||
dashboard_endpoint = :dashboard_endpoint,
|
||||
players_can_be_in_multiple_teams = :players_can_be_in_multiple_teams,
|
||||
auto_assign_courts = :auto_assign_courts,
|
||||
duration_minutes = :duration_minutes,
|
||||
margin_minutes = :margin_minutes
|
||||
WHERE tournaments.id = :tournament_id
|
||||
"""
|
||||
await database.execute(
|
||||
query=query,
|
||||
values={"tournament_id": tournament_id, **tournament.model_dump()},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user