Refine CRUD for artists
This commit is contained in:
@ -1,8 +1,25 @@
|
||||
import * as z from "zod/v4";
|
||||
|
||||
export const socialSchema = z.object({
|
||||
id: z.string().optional(),
|
||||
platform: z.string().min(1, "Platform is required"),
|
||||
handle: z.string().min(1, "Handle is required"),
|
||||
isPrimary: z.boolean(),
|
||||
link: z.string().optional(),
|
||||
});
|
||||
|
||||
export const artistSchema = z.object({
|
||||
displayName: z.string().min(3, "Name is required. Min 3 characters."),
|
||||
slug: z.string().min(3, "Slug is required. Min 3 characters.").regex(/^[a-z]+$/, "Only lowercase letters are allowed (no numbers, spaces, or uppercase)"),
|
||||
nickname: z.string().optional(),
|
||||
})
|
||||
|
||||
socials: z.array(socialSchema).optional(),
|
||||
}).refine(
|
||||
(data) => {
|
||||
const socials = data.socials || [];
|
||||
return socials.filter((s) => s.isPrimary).length <= 1;
|
||||
},
|
||||
{
|
||||
message: "Only one social can be primary",
|
||||
path: ["socials"],
|
||||
}
|
||||
);
|
||||
|
Reference in New Issue
Block a user