Skip to content

Commit d6e7710

Browse files
committed
fix: adjust schema validation zod v4
1 parent 565b64a commit d6e7710

File tree

4 files changed

+23
-50
lines changed

4 files changed

+23
-50
lines changed

src/app/database/schema/role.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import BaseSchema from '../entity/base'
44
// Schema
55
export const roleSchema = z.object({
66
name: z
7-
.string({ required_error: 'name is required' })
7+
.string('name is required')
88
.min(3, { message: 'name must be at least 3 characters long' })
99
.max(255, { message: 'name must be at most 255 characters long' }),
1010
})

src/app/database/schema/session.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ import BaseSchema from '../entity/base'
33

44
// Schema
55
export const sessionSchema = z.object({
6-
user_id: z
7-
.string({ required_error: 'user_id is required' })
8-
.uuid({ message: 'user_id must be a valid UUID' }),
6+
user_id: z.uuid({ message: 'user_id must be a valid UUID' }),
97
token: z
10-
.string({ required_error: 'token is required' })
11-
.min(3, { message: 'token must be at least 3 characters long' }),
12-
ip_address: z.string({ required_error: 'ip_address is required' }).nullable().optional(),
13-
device: z.string({ required_error: 'device is required' }).nullable().optional(),
14-
platform: z.string({ required_error: 'platform is required' }).nullable().optional(),
15-
user_agent: z.string({ required_error: 'user_agent is required' }).nullable().optional(),
16-
latitude: z.string({ required_error: 'latitude is required' }).nullable().optional(),
17-
longitude: z.string({ required_error: 'longitude is required' }).nullable().optional(),
8+
.string('token is required')
9+
.min(3, { error: 'token must be at least 3 characters long' }),
10+
ip_address: z.string('ip_address is required').nullable().optional(),
11+
device: z.string('device is required').nullable().optional(),
12+
platform: z.string('platform is required').nullable().optional(),
13+
user_agent: z.string('user_agent is required').nullable().optional(),
14+
latitude: z.string('latitude is required').nullable().optional(),
15+
longitude: z.string('longitude is required').nullable().optional(),
1816
})
1917

2018
// Type

src/app/database/schema/upload.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,19 @@ import BaseSchema from '../entity/base'
44
// Schema
55
export const uploadSchema = z.object({
66
keyfile: z
7-
.string({ required_error: 'keyfile is required' })
7+
.string('keyfile is required')
88
.min(3, { message: 'keyfile must be at least 3 characters long' }),
99
filename: z
10-
.string({ required_error: 'filename is required' })
10+
.string('filename is required')
1111
.min(3, { message: 'filename must be at least 3 characters long' }),
1212
mimetype: z
13-
.string({ required_error: 'mimetype is required' })
13+
.string('mimetype is required')
1414
.min(3, { message: 'mimetype must be at least 3 characters long' }),
15-
size: z
16-
.number({ required_error: 'size is required' })
17-
.min(1, { message: 'size must be at least 1' }),
15+
size: z.number('size is required').min(1, { message: 'size must be at least 1' }),
1816
signed_url: z
19-
.string({ required_error: 'signed_url is required' })
17+
.string('signed_url is required')
2018
.min(3, { message: 'signed_url must be at least 3 characters long' }),
21-
expiry_date_url: z.date({ required_error: 'expiry_date_url is required' }),
19+
expiry_date_url: z.date('expiry_date_url is required'),
2220
})
2321

2422
// Type

src/app/database/schema/user.ts

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,45 +26,22 @@ export const changePasswordSchema = passwordSchema
2626

2727
export const userSchema = passwordSchema
2828
.extend({
29-
fullname: z
30-
.string({
31-
required_error: 'fullname is required',
32-
invalid_type_error: 'fullname must be a string',
33-
})
34-
.min(2, "fullname can't be empty"),
35-
email: z
36-
.string({
37-
required_error: 'email is required',
38-
invalid_type_error: 'email must be a string',
39-
})
40-
.email({ message: 'invalid email address' })
41-
.min(2, "email can't be empty"),
29+
fullname: z.string('fullname is required').min(2, "fullname can't be empty"),
30+
email: z.email({ message: 'invalid email address' }).min(2, "email can't be empty"),
4231
phone: z.string().nullable(),
4332
token_verify: z.string().nullable(),
44-
upload_id: z.string().uuid({ message: 'upload_id invalid uuid format' }).nullable(),
45-
is_active: z.boolean({
46-
required_error: 'is_active is required',
47-
invalid_type_error: 'is_active must be a boolean',
48-
}),
49-
is_blocked: z.boolean({
50-
required_error: 'is_blocked is required',
51-
invalid_type_error: 'is_blocked must be a boolean',
52-
}),
53-
role_id: z
54-
.string({
55-
required_error: 'role id is required',
56-
invalid_type_error: 'role id must be a string',
57-
})
58-
.uuid({ message: 'role id invalid uuid format' })
59-
.min(2, `role id can't be empty`),
33+
upload_id: z.uuid('upload_id invalid uuid format').nullable(),
34+
is_active: z.boolean('is_active is required'),
35+
is_blocked: z.boolean('is_blocked is required'),
36+
role_id: z.uuid('role id invalid uuid format').min(2, `role id can't be empty`),
6037
})
6138
.refine((data) => data.new_password === data.confirm_new_password, {
6239
message: "passwords don't match",
6340
path: ['confirm_new_password'], // path of error
6441
})
6542

6643
export const loginSchema = z.object({
67-
email: z.string().email({ message: 'invalid email address' }).min(2, "email can't be empty"),
44+
email: z.email('invalid email address').min(2, "email can't be empty"),
6845
password: z.string().min(2, "password can't be empty"),
6946
latitude: z.string().nullable(),
7047
longitude: z.string().nullable(),

0 commit comments

Comments
 (0)