flowstate/lib/schemas/task.schema.ts
Chneemann a60851ac07
All checks were successful
Deploy Flowstate to VPS / deploy (push) Successful in 1m27s
refactor(lib): consolidate services, types, utils, and actions into lib folder and update import paths
2026-08-23 16:44:18 +02:00

32 lines
1 KiB
TypeScript

/**
* @file app/lib/schemas/task.schema.ts
* @description Zod validation schema for task creation and modification operations, enforcing constraints on title, description, status, priority, dates, and assignees.
*/
import { z } from "zod";
import { taskStatusEnum, taskPriorityEnum } from "@/db/schema";
/**
* Zod validation schema for task entities and form submissions.
*/
export const taskSchema = z.object({
id: z.uuid().optional(),
title: z
.string()
.min(1, "Title is required")
.max(255, "Title is too long (max 255 characters)"),
description: z
.string()
.min(1, "Description is required")
.max(2000, "Description is too long (max 2000 characters)"),
status: z.enum(taskStatusEnum.enumValues),
priority: z.enum(taskPriorityEnum.enumValues),
dueDate: z
.string()
.min(1, "Due date is required")
.transform((val) => new Date(val)),
dueTime: z
.string()
.regex(/^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/, "Invalid time format"),
assignees: z.array(z.uuid()).optional(),
});