Better bracket logic

This commit is contained in:
2026-02-14 01:04:54 +01:00 Verified
parent 87d3ea5ef0
commit 7b878b3abe
32 changed files with 1326 additions and 1348 deletions
+18 -33
View File
@@ -7,39 +7,16 @@ from . import logic, models, schemas
def _rebuild_structure(db: Session, t: models.Tournament):
"""
Nukes existing nodes/matches and regenerates them based on current teams.
Used when teams are added/removed.
"""
t.matches = []
for m in t.matches:
db.delete(m)
db.flush()
t.nodes = []
db.flush()
node_data = logic.generate_bracket_nodes(t)
for nd in node_data:
db.add(models.BracketNode(**nd, tournament_id=t.id))
logic.generate_bracket(db, t)
db.flush()
db.refresh(t)
logic.initialize_seeding(db, t)
logic.update_schedule_times(db, t)
def get_tournaments(db: Session):
return db.query(models.Tournament).all()
def get_tournament(db: Session, tournament_id: str):
return (
db.query(models.Tournament)
.filter(models.Tournament.id == tournament_id)
.first()
)
def create_tournament(db: Session, data: schemas.TournamentCreate):
t_id = str(uuid4())[:8]
new_t = models.Tournament(
@@ -56,19 +33,27 @@ def create_tournament(db: Session, data: schemas.TournamentCreate):
db.add(new_t)
db.commit()
node_data = logic.generate_bracket_nodes(new_t)
for nd in node_data:
db.add(models.BracketNode(**nd, tournament_id=t_id))
db.commit()
db.refresh(new_t)
logic.initialize_seeding(db, new_t)
# Generate Bracket
logic.generate_bracket(db, new_t)
logic.update_schedule_times(db, new_t)
db.commit()
db.refresh(new_t)
return new_t
def get_tournaments(db: Session):
return db.query(models.Tournament).all()
def get_tournament(db: Session, tournament_id: str):
return (
db.query(models.Tournament)
.filter(models.Tournament.id == tournament_id)
.first()
)
def delete_tournament(db: Session, tournament_id: str) -> bool:
t = get_tournament(db, tournament_id)
if not t: