brackt/app/models
Chris Parsons 0ba2b391f8
Fix draft order initialization for teams added mid-season (#449)
* Fix draft order showing only new team when league size increased before order was set

When a commissioner increased the team count on a league that had teams
but no draft order set yet, the server created draft slots only for the
newly-added teams. This left the DB with N+K teams but only K slots,
causing the drag-and-drop list to display only the K new teams.

Two fixes:
1. Server: only append new draft slots when an order was already set
   (existingSlots.length > 0). If no order exists yet, skip slot creation
   so the page correctly treats the order as unset for all teams.
2. Frontend: buildDraftOrderTeams() appends any unslotted teams after the
   slotted ones, so a partially-corrupt DB state still shows all teams.

https://claude.ai/code/session_01M3H55gnMxRztJK9KMXqqZo

* Address code review feedback on draft order bug fix

- Move buildDraftOrderTeams to app/lib/draft-order.ts so it is importable
  and testable; remove the local copy from the settings component
- Add unit tests for buildDraftOrderTeams covering the empty, full, and
  partial-slot cases
- Tighten the draft slot guard from existingSlots.length > 0 to
  existingSlots.length === currentTeamCount so partial legacy states are
  treated the same as "order not set"
- Condense the 3-line server comment to a single line per project style
- Rename getNumTeamsInSeason → getNumDraftSlotsBySeasonId to reflect what
  the function actually counts, and update its one call site
- Add tests for the server-side slot-creation guard logic

https://claude.ai/code/session_01M3H55gnMxRztJK9KMXqqZo

* Fix lint: move shouldAppendDraftSlots to outer scope

oxlint (consistent-function-scoping) requires functions that don't close
over any variables to be defined at the outer scope rather than inside a
describe block.

https://claude.ai/code/session_01M3H55gnMxRztJK9KMXqqZo

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-19 18:22:47 -07:00
..
__tests__ Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
account.ts Add opt-in Discord pings to standings notifications (#429) 2026-05-15 10:06:54 -07:00
audit-log.ts Migrate auth from Clerk to BetterAuth (#354) 2026-04-29 10:03:50 -07:00
autodraft-settings.ts Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
canonical-golf-skills.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
canonical-surface-elo.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
commissioner.ts Refactor user profile to comprehensive settings page (#403) 2026-05-10 17:26:14 -07:00
cs2-major-stage.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
draft-pick.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
draft-queue.ts feat: proactively prune ineligible queue items after each pick (#59) 2026-03-02 22:07:22 -08:00
draft-slot.ts Fix draft order initialization for teams added mid-season (#449) 2026-05-19 18:22:47 -07:00
draft-timer.ts Fix draft timer creation for teams without existing timers (#26) 2026-02-22 17:27:16 -08:00
draft-utils.ts Add Brackt as a league-private meta-sport (#200) (#377) 2026-05-04 20:31:44 -07:00
ev-snapshot.ts User/chris/ev f1 framework (#93) 2026-03-09 15:34:31 -07:00
event-result.ts Add not-participating exclusion support for event results (#446) 2026-05-19 11:13:32 -07:00
golf-skills.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
group-stage-match.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
index.ts Remove sports_season_tournaments junction table — derive from scoring_events (#373) 2026-05-02 22:19:59 -07:00
league.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
participant-expected-value.ts Fix EPL simulator parity config (#421) 2026-05-13 15:02:23 -07:00
participant-result.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
participant-season-result.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
participant.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
pending-standings-mappings.ts Add regular season standings for NBA/NHL (fixes #89) (#192) 2026-03-21 00:12:01 -07:00
playoff-match-game.ts Add playoff match game scheduling and odds management (#135) 2026-03-11 14:17:43 -07:00
playoff-match-odds.ts Add playoff match game scheduling and odds management (#135) 2026-03-11 14:17:43 -07:00
playoff-match.ts Fix bracket scoring logic to prefer template over DB defaults (#298) 2026-04-15 11:27:00 -07:00
qualifying-points.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
regular-season-standings.ts Deduplicate soccer simulator helpers (#391) 2026-05-07 11:48:57 -07:00
scoring-calculator.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
scoring-event.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
scoring-rules.ts Fix QP tie rounding and finalized scoring (#440) 2026-05-17 21:58:53 -07:00
season-participant.ts Canonical golf skills migration + copy participants feature (#369) 2026-05-02 10:29:28 -07:00
season-sport.ts feat: Refactor database connection handling in draft-related functions for improved flexibility 2025-10-26 20:35:55 -07:00
season-template-sport.ts refactor: remove isRequired field from season sports and templates 2025-10-13 15:00:59 -07:00
season-template.ts Improve admin dashboard stats and fix scoring event bugs (#230) 2026-03-25 20:46:54 -07:00
season.ts Use sport icons in league views (#394) 2026-05-07 23:06:49 -07:00
simulator.ts Fix EPL simulator parity config (#421) 2026-05-13 15:02:23 -07:00
sport.ts Harden sport icon cleanup (#397) 2026-05-08 21:19:09 -07:00
sports-season.ts Formalize simulator system with manifest, input-policy, runner, and admin UI (#409) 2026-05-11 21:09:53 -07:00
standings.ts Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
surface-elo.ts Canonical tournament layer: 2026-05-01 21:04:48 -07:00
team-score-events.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
team.ts Remove backfill-flag-configs script (#389) 2026-05-06 20:35:02 -07:00
tournament-group.ts Add oxlint linting setup with zero errors (#194) 2026-03-21 09:44:05 -07:00
tournament-result.ts Canonical tournament layer: schema + backfill (1/2) (#365) 2026-05-01 20:13:18 -07:00
tournament.ts Canonical tournament layer: 2026-05-01 21:04:48 -07:00
user.ts Add admin user management interface with search and username editing (#431) 2026-05-15 12:07:51 -07:00
watchlist.ts Mobile draft room improvements: watchlist, collapsible picks feed, autodraft controls (#355) 2026-04-29 11:49:26 -07:00