Skip to content

Commit f36bcac

Browse files
committed
Migrate to zod v4
1 parent a38b44a commit f36bcac

6 files changed

Lines changed: 21 additions & 21 deletions

File tree

lib/api/errors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export class ApiErrorHandler {
2626
* Handle Zod validation errors
2727
*/
2828
static handleZodError(error: ZodError): NextResponse {
29-
const formattedErrors = error.errors.map((err) => ({
29+
const formattedErrors = error.issues.map((err) => ({
3030
field: err.path.join('.'),
3131
message: err.message,
3232
}));

lib/trpc/routers/organizations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ export const organizationsRouter = router({
183183
uploadOrganizationLogo: protectedProcedure
184184
.input(
185185
z.object({
186-
organizationId: z.string().uuid(),
186+
organizationId: z.uuid(),
187187
fileBase64: z.string(),
188188
fileName: z.string(),
189189
mimeType: z.enum(['image/jpeg', 'image/png', 'image/webp', 'image/svg+xml']),

lib/trpc/schemas/billing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const createCheckoutSchema = z.object({
1212
});
1313

1414
export const syncActionSchema = z.object({
15-
action: z.enum(['user', 'stale', 'emergency']).default('user'),
15+
action: z.enum(['user', 'stale', 'emergency']).prefault('user'),
1616
});
1717

1818
// Type exports for client-side use

lib/trpc/schemas/organizations.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ export const createOrgFormSchema = z.object({
3131
});
3232

3333
export const updateOrganizationSchema = z.object({
34-
organizationId: z.string().uuid('Invalid organization ID'),
34+
organizationId: z.uuid('Invalid organization ID'),
3535
name: z.string().min(1).max(100).optional(),
36-
logoUrl: z.string().url('Invalid URL').nullable().optional(),
37-
settings: z.record(z.unknown()).optional(),
36+
logoUrl: z.url('Invalid URL').nullable().optional(),
37+
settings: z.record(z.string(), z.unknown()).optional(),
3838
});
3939

4040
/**
@@ -46,42 +46,42 @@ export const orgGeneralFormSchema = z.object({
4646
});
4747

4848
export const deleteOrganizationSchema = z.object({
49-
organizationId: z.string().uuid('Invalid organization ID'),
49+
organizationId: z.uuid('Invalid organization ID'),
5050
});
5151

5252
export const getOrganizationSchema = z.object({
53-
organizationId: z.string().uuid('Invalid organization ID'),
53+
organizationId: z.uuid('Invalid organization ID'),
5454
});
5555

5656
/**
5757
* Membership Schemas
5858
*/
5959
export const inviteMemberSchema = z.object({
60-
organizationId: z.string().uuid('Invalid organization ID'),
61-
email: z.string().email('Invalid email address'),
62-
role: z.enum(['org:admin', 'org:member']).default('org:member'),
60+
organizationId: z.uuid('Invalid organization ID'),
61+
email: z.email('Invalid email address'),
62+
role: z.enum(['org:admin', 'org:member']).prefault('org:member'),
6363
});
6464

6565
/**
6666
* Form-specific schema for inviting members
6767
* Used for client-side form validation (organizationId provided separately)
6868
*/
6969
export const orgInviteFormSchema = z.object({
70-
email: z.string().email('Invalid email address'),
70+
email: z.email('Invalid email address'),
7171
role: z.enum(['org:admin', 'org:member']),
7272
});
7373

7474
export const updateMemberRoleSchema = z.object({
75-
organizationId: z.string().uuid('Invalid organization ID'),
75+
organizationId: z.uuid('Invalid organization ID'),
7676
clerkUserId: z.string().min(1, 'User ID is required'),
7777
role: z.enum(['org:admin', 'org:member']),
7878
});
7979

8080
export const removeMemberSchema = z.object({
81-
organizationId: z.string().uuid('Invalid organization ID'),
81+
organizationId: z.uuid('Invalid organization ID'),
8282
clerkUserId: z.string().min(1, 'User ID is required'),
8383
});
8484

8585
export const getOrgMembersSchema = z.object({
86-
organizationId: z.string().uuid('Invalid organization ID'),
86+
organizationId: z.uuid('Invalid organization ID'),
8787
});

lib/trpc/schemas/tasks.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,28 @@ export const createTaskSchema = z.object({
1111
description: z.string().optional(),
1212
priority: z.enum(['low', 'medium', 'high']).optional(),
1313
dueDate: z.date().optional(),
14-
organizationId: z.string().uuid().optional(), // NEW: Organization context
14+
organizationId: z.uuid().optional(),
1515
});
1616

1717
export const updateTaskSchema = z.object({
18-
id: z.string().uuid(),
18+
id: z.uuid(),
1919
title: z.string().min(1).max(255).optional(),
2020
description: z.string().nullable().optional(),
2121
completed: z.boolean().optional(),
2222
priority: z.enum(['low', 'medium', 'high']).optional(),
2323
dueDate: z.date().nullable().optional(),
24-
organizationId: z.string().uuid().nullable().optional(), // NEW: Can reassign org
24+
organizationId: z.uuid().nullable().optional(),
2525
});
2626

2727
export const taskListFiltersSchema = z
2828
.object({
2929
completed: z.boolean().optional(),
3030
priority: z.enum(['low', 'medium', 'high']).optional(),
3131
searchQuery: z.string().optional(),
32-
organizationId: z.string().uuid().nullable().optional(), // Can filter by org or null (personal)
32+
organizationId: z.uuid().nullable().optional(), // Can filter by org or null (personal)
3333
})
3434
.optional();
3535

3636
export const deleteTaskSchema = z.object({
37-
id: z.string().uuid(),
37+
id: z.uuid(),
3838
});

lib/trpc/schemas/user.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ export const updateDisplayNameSchema = z.object({
2424

2525
export const updateUserPublicMetadataSchema = z.object({
2626
publicMetadata: z.object({
27-
onboardingComplete: z.boolean().optional().default(false),
27+
onboardingComplete: z.boolean().optional().prefault(false),
2828
}),
2929
});

0 commit comments

Comments
 (0)