diff --git a/package.json b/package.json index 66baa38..fefcd0a 100644 --- a/package.json +++ b/package.json @@ -66,5 +66,5 @@ "tw-animate-css": "^1.3.8", "typescript": "^5" }, - "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" + "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319" } diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index bd5be7d..5edff01 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -4,7 +4,7 @@ export const URLRecord = z.object({ id: z.coerce.number(), is_custom: z.boolean(), original_url: z.string().url(), - short_code: z.string().max(20), + short_code: z.string().max(25), created_at: z.coerce.date(), updated_at: z.coerce.date(), click_count: z.number().int().nonnegative(), diff --git a/src/lib/validations.ts b/src/lib/validations.ts index a2e23e4..0399c93 100644 --- a/src/lib/validations.ts +++ b/src/lib/validations.ts @@ -1,24 +1,17 @@ import { z } from "zod" -export const createUrlSchema = z.object({ +export const editUrlSchema = z.object({ url: z.string().url("Invalid URL format"), shortCode: z .string() - .min(2, "Short code must be at least 3 characters") - .max(20, "Short code must be at most 20 characters") + .min(2, "Short code must be at least 2 characters") + .max(25, "Short code must be at most 25 characters") .regex( /^[a-zA-Z0-9_-]+$/, "Short code can only contain letters, numbers, hyphens and underscores" - ) - .optional(), + ), }) -export type CreateUrlInput = z.infer - -export const editUrlSchema = createUrlSchema.extend({ - shortCode: z - .string() - .min(2) - .max(20) - .regex(/^[a-zA-Z0-9_-]+$/), +export const createUrlSchema = editUrlSchema.extend({ + shortCode: editUrlSchema.shape.shortCode.optional(), })