This commit is contained in:
Zeeshaun
2026-05-06 15:08:32 +00:00
parent b05a1a954b
commit 0de593c7d3
54 changed files with 4522 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
import { z } from "zod";
import { HANDEDNESS_OPTIONS, POSITIONS } from "@/lib/constants";
export const playerSchema = z.object({
firstName: z.string().trim().min(1, "First name is required."),
lastName: z.string().trim().min(1, "Last name is required."),
jerseyNumber: z.coerce.number().int().min(0).max(999),
batsThrows: z.enum(HANDEDNESS_OPTIONS),
primaryPosition: z.enum(POSITIONS),
secondaryPosition: z.enum(POSITIONS).nullable().optional(),
tertiaryPosition: z.enum(POSITIONS).nullable().optional(),
isActive: z.boolean(),
notes: z.string().max(500).optional().default("")
});
export const pitchingAppearanceSchema = z.object({
playerId: z.string().min(1),
gameDate: z.string().min(1),
pitchCount: z.coerce.number().int().min(1).max(200),
notes: z.string().max(300).optional().default("")
});
export const pitchingRulesSchema = z.array(
z.object({
minPitches: z.coerce.number().int().min(0),
maxPitches: z.coerce.number().int().positive().nullable(),
requiredRestDays: z.coerce.number().int().min(0).max(10)
})
).min(1);
export const generateLineupSchema = z.object({
gameDate: z.string().min(1),
playerIds: z.array(z.string()).min(1, "Select at least one player."),
startingPitcherId: z.string().nullable().optional()
});
export const saveLineupSchema = generateLineupSchema.extend({
battingOrder: z.array(
z.object({
playerId: z.string(),
playerName: z.string(),
slot: z.coerce.number().int().positive()
})
).min(1),
defensiveAssignments: z.array(
z.object({
playerId: z.string(),
playerName: z.string(),
position: z.enum(POSITIONS)
})
),
bench: z.array(z.string()),
notes: z.array(z.string())
});