Refactor schema

This commit is contained in:
2025-09-17 23:01:22 +02:00
parent 0eb410dff7
commit 28a63b43b0
16 changed files with 1120 additions and 1109 deletions

View File

@@ -0,0 +1,90 @@
import z from "zod"
function blitzKitPlayedStats() {
const ids = [
"arachnologist",
"archer",
"armorer",
"astronaut",
"baker",
"blaze",
"creepertamer",
"diver",
"donkeytamer",
"farmer",
"fisherman",
"florist",
"golem",
"guardian",
"horsetamer",
"hunter",
"hype train",
"jockey",
"knight",
"meatmaster",
"milkman",
"necromancer",
"paladin",
"phoenix",
"pigman",
"ranger",
"reaper",
"reddragon",
"rogue",
"scout",
"shadow knight",
"shark",
"slimeyslime",
"snowman",
"speleologist",
"tim",
"toxicologist",
"troll",
"viking",
"warlock",
"warrior",
"wolftamer"
] as const
const stats = [
"wins",
"wins_teams",
"time_played",
"exp",
"kills",
"games_played"
] as const
const entries = new Map<string, z.ZodDefault<z.ZodNumber>>()
const kits = new Map<string, z.ZodDefault<z.ZodNumber>>()
const prestiges = new Map<string, z.ZodDefault<z.ZodNumber>>()
for (const id of ids) {
for (const stat of stats) {
entries.set(`${stat}_${id}`, z.number().default(0))
kits.set(`${id}`, z.number().default(-1))
prestiges.set(`p${id}`, z.number().default(0))
}
}
return {
stats: Object.fromEntries(entries) as Record<`${typeof stats[number]}_${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
kits: Object.fromEntries(kits) as Record<`${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>,
prestiges: Object.fromEntries(prestiges) as Record<`p${typeof ids[number]}`, z.ZodDefault<z.ZodNumber>>
}
}
export const blitzStatsSchema = z.object({
kills: z.number().default(0),
deaths: z.number().default(0),
kills_solo_normal: z.number().default(0),
kills_teams_normal: z.number().default(0),
wins_solo_normal: z.number().default(0),
wins_teams_normal: z.number().default(0),
coins: z.number().default(0),
damage: z.number().default(0),
damage_taken: z.number().default(0),
...blitzKitPlayedStats().stats,
...blitzKitPlayedStats().kits,
...blitzKitPlayedStats().prestiges
})