38 lines
673 B
TypeScript
38 lines
673 B
TypeScript
/**
|
|
* Common validation schemas
|
|
*/
|
|
|
|
import { z } from 'zod';
|
|
|
|
/**
|
|
* Email validation schema
|
|
*/
|
|
export const emailSchema = z.string().email('Invalid email address');
|
|
|
|
/**
|
|
* UUID validation schema
|
|
*/
|
|
export const uuidSchema = z.string().uuid('Invalid UUID');
|
|
|
|
/**
|
|
* URL validation schema
|
|
*/
|
|
export const urlSchema = z.string().url('Invalid URL');
|
|
|
|
/**
|
|
* Pagination schema
|
|
*/
|
|
export const paginationSchema = z.object({
|
|
page: z.number().int().positive().default(1),
|
|
limit: z.number().int().positive().max(100).default(10),
|
|
});
|
|
|
|
/**
|
|
* Sort schema
|
|
*/
|
|
export const sortSchema = z.object({
|
|
field: z.string(),
|
|
order: z.enum(['asc', 'desc']).default('asc'),
|
|
});
|
|
|