🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Módulo 1 - Aula 4

Zod Validação: Segurança de Dados tRPC

Domine validação de dados com Zod: schemas avançados, transformações, mensagens customizadas e validação condicional.

50 min
Intermediário
Validação

🎯 Por que validação rigorosa é crucial?

Segurança: Dados inválidos podem quebrar a aplicação ou causar vulnerabilidades.

Confiabilidade: Validação garante que apenas dados corretos sejam processados.

🛡️ Schemas Zod Avançados para tRPC

schemas/user.ts
// 📁 schemas/user.ts
import { z } from 'zod';

// 🎯 Schema base do usuário
const userSchema = z.object({
  name: z.string()
    .min(2, 'Nome deve ter pelo menos 2 caracteres')
    .max(50, 'Nome não pode ter mais de 50 caracteres'),
  
  email: z.string()
    .email('Email inválido')
    .toLowerCase()
    .transform(email => email.trim()),
  
  age: z.number()
    .min(18, 'Idade mínima é 18 anos')
    .max(120, 'Idade máxima é 120 anos')
    .optional(),
  
  password: z.string()
    .min(8, 'Senha deve ter pelo menos 8 caracteres')
    .regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/, 
      'Senha deve conter ao menos: 1 minúscula, 1 maiúscula, 1 número'),
  
  role: z.enum(['user', 'admin', 'moderator'])
    .default('user'),
  
  preferences: z.object({
    theme: z.enum(['light', 'dark']).default('dark'),
    notifications: z.boolean().default(true),
    language: z.string().default('pt-BR')
  }).optional()
});

// 🔄 Schema para atualização (todos campos opcionais)
export const updateUserSchema = userSchema.partial();

// 📝 Schema para criação
export const createUserSchema = userSchema.omit({ id: true });

🚀 Veja em Ação!

Confira o exemplo interativo desta aula rodando em tempo real:

live-mode-link.txt
Acesse: /curso-trpc/modulo-1/aula-4/live-mode