mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 12:30:12 +02:00
67 lines
1.4 KiB
TypeScript
67 lines
1.4 KiB
TypeScript
import { z } from 'zod';
|
|
import { idValidation } from './shared.validation';
|
|
|
|
const noWhiteSpaces = /^\S*$/;
|
|
|
|
const list = {
|
|
body: z.object({}),
|
|
params: z.object({}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const detail = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('userId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const createUser = {
|
|
body: z.object({
|
|
displayName: z.optional(z.string().min(0).max(100)),
|
|
isAdmin: z.optional(z.boolean()),
|
|
password: z.string().min(6).max(255),
|
|
username: z
|
|
.string()
|
|
.min(2)
|
|
.max(30)
|
|
.refine((value) => noWhiteSpaces.test(value), {
|
|
message: 'No white spaces allowed',
|
|
}),
|
|
}),
|
|
params: z.object({}),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const deleteUser = {
|
|
body: z.object({}),
|
|
params: z.object({ ...idValidation('userId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
const updateUser = {
|
|
body: z.object({
|
|
displayName: z.optional(z.string().min(0).max(100)),
|
|
isAdmin: z.optional(z.boolean()),
|
|
password: z.optional(z.string().min(6).max(255)),
|
|
username: z.optional(
|
|
z
|
|
.string()
|
|
.min(2)
|
|
.max(30)
|
|
.refine((value) => noWhiteSpaces.test(value), {
|
|
message: 'No white spaces allowed',
|
|
})
|
|
),
|
|
}),
|
|
params: z.object({ ...idValidation('userId') }),
|
|
query: z.object({}),
|
|
};
|
|
|
|
export const usersValidation = {
|
|
createUser,
|
|
deleteUser,
|
|
detail,
|
|
list,
|
|
updateUser,
|
|
};
|