From 7a9dd3b8741adbea7b75976ddde21103f16659b4 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Apr 2026 01:57:58 +0000 Subject: [PATCH] Address code review feedback on draft window implementation - sports-data-sync: use unambiguous past placeholder dates for synced seasons, with a comment explaining the intent - sports-season model: remove redundant top-level lte/gte imports (callback form already supplies them) - _journal.json: add missing trailing newline - sports-season test: mock ~/database/schema instead of stubbing all drizzle builder functions, matching the established pattern in the codebase - admin list: compute today once in component body instead of per-row https://claude.ai/code/session_01LHYgpyimF8v8odUB6kj8Qc --- app/models/__tests__/sports-season.test.ts | 26 +++++++++++----------- app/models/sports-season.ts | 2 +- app/routes/admin.sports-seasons.tsx | 2 +- app/utils/sports-data-sync.server.ts | 7 ++++-- drizzle/meta/_journal.json | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/app/models/__tests__/sports-season.test.ts b/app/models/__tests__/sports-season.test.ts index 7cdeaa7..4bbabd1 100644 --- a/app/models/__tests__/sports-season.test.ts +++ b/app/models/__tests__/sports-season.test.ts @@ -4,6 +4,19 @@ vi.mock("~/database/context", () => ({ database: vi.fn(), })); +// Mock the schema so the schema module doesn't execute drizzle builder calls, +// following the same pattern as scoring-event-dashboard.test.ts. +vi.mock("~/database/schema", () => ({ + sportsSeasons: { + id: "ss.id", + sportId: "ss.sport_id", + name: "ss.name", + year: "ss.year", + draftOn: "ss.draft_on", + draftOff: "ss.draft_off", + }, +})); + vi.mock("drizzle-orm", () => ({ eq: (col: unknown, val: unknown) => ({ type: "eq", col, val }), sql: (strings: TemplateStringsArray, ...values: unknown[]) => ({ type: "sql", strings, values }), @@ -12,19 +25,6 @@ vi.mock("drizzle-orm", () => ({ and: (...args: unknown[]) => ({ type: "and", args }), desc: (col: unknown) => ({ type: "desc", col }), asc: (col: unknown) => ({ type: "asc", col }), - relations: () => ({}), - pgTable: () => ({}), - pgEnum: (_name: string, values: string[]) => values, - boolean: () => ({ notNull: () => ({ default: () => ({}) }) }), - integer: () => ({ notNull: () => ({}), default: () => ({}) }), - varchar: () => ({ notNull: () => ({}) }), - uuid: () => ({ primaryKey: () => ({}), notNull: () => ({ references: () => ({}) }) }), - timestamp: () => ({ defaultNow: () => ({ notNull: () => ({}) }) }), - decimal: () => ({ notNull: () => ({ default: () => ({}) }), precision: () => ({}) }), - date: () => ({ notNull: () => ({}) }), - text: () => ({}), - index: () => ({}), - uniqueIndex: () => ({}), })); import { findAllSportsSeasons, findDraftableSportsSeasons } from "../sports-season"; diff --git a/app/models/sports-season.ts b/app/models/sports-season.ts index c3633e1..35886b6 100644 --- a/app/models/sports-season.ts +++ b/app/models/sports-season.ts @@ -1,4 +1,4 @@ -import { eq, sql, lte, gte } from "drizzle-orm"; +import { eq, sql } from "drizzle-orm"; import { database } from "~/database/context"; import * as schema from "~/database/schema"; diff --git a/app/routes/admin.sports-seasons.tsx b/app/routes/admin.sports-seasons.tsx index 94ec3f6..2f4d925 100644 --- a/app/routes/admin.sports-seasons.tsx +++ b/app/routes/admin.sports-seasons.tsx @@ -40,6 +40,7 @@ export async function loader() { export default function AdminSportsSeasons({ loaderData }: Route.ComponentProps) { const { sportsSeasons } = loaderData; + const today = new Date().toISOString().slice(0, 10); return (
@@ -115,7 +116,6 @@ export default function AdminSportsSeasons({ loaderData }: Route.ComponentProps) {(() => { - const today = new Date().toISOString().slice(0, 10); const active = season.draftOn <= today && today <= season.draftOff; return (
diff --git a/app/utils/sports-data-sync.server.ts b/app/utils/sports-data-sync.server.ts index 7ceeb96..1848913 100644 --- a/app/utils/sports-data-sync.server.ts +++ b/app/utils/sports-data-sync.server.ts @@ -336,8 +336,11 @@ export async function importSportsDataFromJSON( | "playoffs" | "regular_season" | "majors", - draftOn: "2099-12-31", - draftOff: "2099-12-31", + // Placeholder: season is not draftable until an admin sets real dates. + // A narrow past window is used so the season never accidentally appears + // in league creation without an intentional update. + draftOn: "2000-01-01", + draftOff: "2000-01-02", }) .returning(); sportsSeasonIdMap.set(seasonKey, created_.id); diff --git a/drizzle/meta/_journal.json b/drizzle/meta/_journal.json index 9726b27..45d4800 100644 --- a/drizzle/meta/_journal.json +++ b/drizzle/meta/_journal.json @@ -493,4 +493,4 @@ "breakpoints": true } ] -} \ No newline at end of file +}