Refactor schema
This commit is contained in:
90
src/lib/schema/stats/blitz.ts
Normal file
90
src/lib/schema/stats/blitz.ts
Normal 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
|
||||
})
|
||||
Reference in New Issue
Block a user