mirror of
https://github.com/TheRealOwenRees/echecsfrance.git
synced 2026-07-23 04:26:57 +00:00
83 lines
2.6 KiB
TypeScript
83 lines
2.6 KiB
TypeScript
import { zu } from "@infra-blocks/zod-utils";
|
|
import { z } from "zod";
|
|
|
|
import { TimeControl } from "@/types";
|
|
|
|
export const contactUsSchema = z.object({
|
|
email: z.string().email(),
|
|
subject: z.string().min(1, { message: "FormValidation.required" }),
|
|
message: z.string().min(1, { message: "FormValidation.required" }),
|
|
});
|
|
|
|
export const addClubSchema = z.object({
|
|
name: z.string().min(1, { message: "FormValidation.required" }),
|
|
email: z.string().email(),
|
|
message: z.string().optional(),
|
|
|
|
club: z.object({
|
|
name: z.string().min(1, { message: "FormValidation.required" }),
|
|
email: z.string().email().optional(),
|
|
address: z.string().min(1, { message: "FormValidation.required" }),
|
|
website: z.string().url({ message: "FormValidation.url" }).optional(),
|
|
coordinates: z.array(z.number()).length(2),
|
|
}),
|
|
});
|
|
|
|
export const addTournamentSchema = z.object({
|
|
name: z.string().min(1, { message: "FormValidation.required" }),
|
|
email: z.string().email(),
|
|
message: z.string().optional(),
|
|
|
|
tournament: z.object({
|
|
address: z.string().min(1, { message: "FormValidation.required" }),
|
|
town: z.string().min(1, { message: "FormValidation.required" }),
|
|
department: z.string().min(1, { message: "FormValidation.required" }),
|
|
tournament: z.string().min(1, { message: "FormValidation.required" }),
|
|
url: z.string().url({ message: "FormValidation.url" }),
|
|
time_control: z.nativeEnum(TimeControl),
|
|
norm_tournament: z.boolean(),
|
|
date: z.date(),
|
|
coordinates: z.array(z.number()).length(2),
|
|
country: z.string().min(1, { message: "FormValidation.required" }),
|
|
}),
|
|
});
|
|
|
|
export const fetchTournamentResultsSchema = z.object({
|
|
id: z.string().min(1, { message: "FormValidation.required" }),
|
|
});
|
|
|
|
export const zoneSchema = z
|
|
.object({
|
|
name: z.string().min(1, { message: "FormValidation.required" }),
|
|
features: zu.geojson.featureCollection(),
|
|
classicNotifications: z.boolean(),
|
|
rapidNotifications: z.boolean(),
|
|
blitzNotifications: z.boolean(),
|
|
otherNotifications: z.boolean(),
|
|
})
|
|
.refine((data) => data.features.features.length > 0, {
|
|
message: "FormValidation.zone",
|
|
path: ["features"],
|
|
});
|
|
|
|
export const fetchClubPlayersSchema = z.object({
|
|
clubId: z.string(),
|
|
});
|
|
|
|
const matchPlayerSchema = z.object({
|
|
name: z.string().optional(),
|
|
elo: z.string().optional(),
|
|
nrFFE: z.string().optional(),
|
|
});
|
|
|
|
export const matchSchema = z.object({
|
|
competition: z.string(),
|
|
date: z.date(),
|
|
ronde: z.number(),
|
|
lieu: z.string(),
|
|
team1: z.string(),
|
|
team2: z.string(),
|
|
team1_players: z.array(matchPlayerSchema),
|
|
team2_players: z.array(matchPlayerSchema),
|
|
});
|