26 lines
714 B
TypeScript
26 lines
714 B
TypeScript
import { z } from 'zod'
|
|
import { MEDIUM_KEYS } from './medium'
|
|
|
|
const isoDate = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'Pick a date')
|
|
const requiredText = z.string().trim().min(1, 'Write something first')
|
|
|
|
export const newNoteSchema = z.object({
|
|
date: isoDate,
|
|
text: requiredText
|
|
})
|
|
|
|
export const newReviewSchema = z.object({
|
|
medium: z.enum(MEDIUM_KEYS, { error: 'Pick a medium' }),
|
|
date: isoDate,
|
|
title: z.string().trim().min(1, 'Add a title'),
|
|
author: z.string().trim().optional(),
|
|
text: requiredText
|
|
})
|
|
|
|
export const loginSchema = z.object({
|
|
password: z.string().min(1)
|
|
})
|
|
|
|
export type NewNoteInput = z.output<typeof newNoteSchema>
|
|
export type NewReviewInput = z.output<typeof newReviewSchema>
|