mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-10 21:00:37 -05:00
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { z } from "zod";
|
|
import { falsyToNull, id, jsonParseable } from "~/utils/zod";
|
|
import { TEAM, TEAM_MEMBER_ROLES } from "./team-constants";
|
|
|
|
export const teamParamsSchema = z.object({ customUrl: z.string() });
|
|
|
|
export const createTeamSchema = z.object({
|
|
name: z.string().min(TEAM.NAME_MIN_LENGTH).max(TEAM.NAME_MAX_LENGTH),
|
|
});
|
|
|
|
export const editTeamSchema = z.union([
|
|
z.object({
|
|
_action: z.literal("DELETE"),
|
|
}),
|
|
z.object({
|
|
_action: z.literal("EDIT"),
|
|
name: z.string().min(TEAM.NAME_MIN_LENGTH).max(TEAM.NAME_MAX_LENGTH),
|
|
bio: z.preprocess(
|
|
falsyToNull,
|
|
z.string().max(TEAM.BIO_MAX_LENGTH).nullable()
|
|
),
|
|
twitter: z.preprocess(
|
|
falsyToNull,
|
|
z.string().max(TEAM.TWITTER_MAX_LENGTH).nullable()
|
|
),
|
|
css: z.preprocess(falsyToNull, z.string().refine(jsonParseable).nullable()),
|
|
}),
|
|
]);
|
|
|
|
export const manageRosterSchema = z.union([
|
|
z.object({
|
|
_action: z.literal("RESET_INVITE_LINK"),
|
|
}),
|
|
z.object({
|
|
_action: z.literal("DELETE_MEMBER"),
|
|
userId: id,
|
|
}),
|
|
z.object({
|
|
_action: z.literal("TRANSFER_OWNERSHIP"),
|
|
newOwnerId: id,
|
|
}),
|
|
z.object({
|
|
_action: z.literal("UPDATE_MEMBER_ROLE"),
|
|
userId: id,
|
|
role: z.union([z.enum(TEAM_MEMBER_ROLES), z.literal("")]),
|
|
}),
|
|
]);
|