Skip to content

Commit 0d4be0f

Browse files
committed
chore: restore zod validation for users
1 parent 819a6e5 commit 0d4be0f

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

src/users/types.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { AccessLevel } from '@prisma/client';
2+
import z from 'zod';
3+
4+
import { removeNotNumbers } from '../utils';
5+
6+
const UserSchema = z.object({
7+
id: z.string().uuid(),
8+
name: z.string(),
9+
lastName: z.string(),
10+
login: z.string().transform((v) => v.toLowerCase()),
11+
password: z.string(),
12+
phone: z.string().transform(removeNotNumbers),
13+
accessLevel: z.nativeEnum(AccessLevel),
14+
createdAt: z.string(),
15+
updatedAt: z.string().nullable().optional(),
16+
});
17+
18+
const CreateUserSchema = UserSchema.pick({
19+
name: true,
20+
lastName: true,
21+
phone: true,
22+
});
23+
24+
const UpdateUserSchema = UserSchema.omit({
25+
id: true,
26+
accessLevel: true,
27+
createdAt: true,
28+
updatedAt: true,
29+
}).partial();
30+
31+
export { CreateUserSchema, UpdateUserSchema };

src/users/users.service.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import { Injectable } from '@nestjs/common';
33
import { PrismaService } from '../prisma/prisma.service';
44
import { CreateUserDTO } from './dtos/CreateUserDTO';
55
import { UpdateUserDTO } from './dtos/UpdateUserDTO';
6+
import { CreateUserSchema, UpdateUserSchema } from './types';
67

78
@Injectable()
89
export class UsersService {
910
constructor(private readonly prismaService: PrismaService) {}
1011

11-
async store({ name, lastName, phone }: CreateUserDTO) {
12+
async store(body: CreateUserDTO) {
13+
const { name, lastName, phone } = CreateUserSchema.parse(body);
1214
await this.prismaService.user.create({
1315
data: {
1416
name,
@@ -22,12 +24,13 @@ export class UsersService {
2224
}
2325

2426
async update(id: string, body: UpdateUserDTO) {
27+
const payload = UpdateUserSchema.parse(body);
2528
await this.prismaService.user.update({
2629
where: {
2730
id,
2831
},
2932
data: {
30-
...body,
33+
...payload,
3134
updatedAt: new Date().toISOString(),
3235
},
3336
});

0 commit comments

Comments
 (0)