Profile image
¿Espejito, Espejito… Qué es Enum, Zod y Drizzle ORM?

¿Espejito, Espejito… Qué es Enum, Zod y Drizzle ORM?

Wed Apr 09 2025
Desarrollo

¡Hola Chiquis!👋🏻 La polémica está servida con la nueva adaptación de Blancanieves. Desde la representación de los enanitos hasta la vibra de la protagonista, las redes sociales arden con opiniones divididas. Pero, ¿sabías que podemos encontrar paralelismos fascinantes entre esta controversia y algunas herramientas clave en el desarrollo moderno con TypeScript: los enum, Zod y Drizzle ORM? ¡Acompáñame en este viaje donde la magia del código se encuentra con el cuento de hadas!

En el cuento clásico de Blancanieves, los personajes principales tienen roles claros: Blancanieves, la Reina Malvada, el Espejo y los Enanitos. En este caótico bosque encantado que es nuestra nueva película, los personajes parecen tener menos cohesión y más caos narrativo.

El enum de los Enanitos: Definiendo Roles Claramente En TypeScript, un enum (enumeración) nos permite definir un conjunto de constantes con nombre. Imagina que en el guion original, cada enanito tenía un rol bien definido: MINERO, COCINERO, DORMILÓN, etc. Esto es como un enum en acción:

enum RolEnanito {
  MINERO = "Minero incansable",
  COCINERO = "Chef de la cabaña",
  DORMILÓN = "Experto en siestas",
  GRUMPY = "El cascarrabias adorable",
  FELIZ = "Siempre optimista",
  TÍMIDO = "De pocas palabras",
  SABIO = "El consejero del grupo",
}

function presentarEnanito(rol: RolEnanito) {
  console.log(`Saludamos a ${RolEnanito[rol]}, ¡un miembro valioso de la comunidad!`);
}

presentarEnanito(RolEnanito.COCINERO); // Imprime: Saludamos a Chef de la cabaña, ¡un miembro valioso de la comunidad!

Un enum asegura que solo usemos valores válidos para los roles, evitando errores y ambigüedades. Quizás, si los guionistas hubieran tenido un “enum de personajes” bien definido desde el principio, ¡algunas de las críticas sobre la representación de los enanitos no habrían surgido! La claridad y la estructura son clave, tanto en el código como en la narrativa. Los ENUMs en TypeScript son como el contrato social de estos roles, asegurando que cada personaje se ajuste a una categoría bien definida.

Zod y la Reina Malvada: ¡Validando que el Espejo Diga la Verdad (y los Datos También)! Zod es una librería de validación de esquemas en TypeScript que nos permite definir la forma que deben tener nuestros datos. Piénsalo como el espejo mágico de la Reina Malvada, pero mucho más fiable. En lugar de responder subjetivamente sobre quién es la más bella, Zod verifica rigurosamente si los datos cumplen con las reglas establecidas.

Imagina que tenemos un formulario donde los usuarios opinan sobre la nueva película. Con Zod, podemos asegurar que cada opinión tenga un formato específico (por ejemplo, un texto no vacío y una calificación numérica dentro de un rango):

import { z } from "zod";

const opinionSchema = z.object({
  texto: z.string().min(1, "La opinión no puede estar vacía."),
  calificacion: z.number().min(1).max(5, "La calificación debe ser entre 1 y 5."),
});

function procesarOpinion(data: unknown) {
  const resultado = opinionSchema.safeParse(data);
  if (resultado.success) {
    console.log("¡Opinión válida!", resultado.data);
    // Guardar la opinión en la base de datos...
  } else {
    console.error("¡Opinión inválida!", resultado.error.issues);
  }
}

procesarOpinion({ texto: "La película me pareció interesante.", calificacion: 4 });
procesarOpinion({ texto: "", calificacion: 6 }); // ¡Error!

Al igual que Zod valida la estructura de los datos, podríamos decir que los críticos están “validando” si la película cumple con sus “esquemas” de una buena adaptación de Blancanieves. Un esquema bien definido (ya sea en código o en expectativas cinematográficas) ayuda a evitar sorpresas desagradables.

En nuestra película, el Espejo Mágico sabe diferenciar verdades de mentiras. Así funciona Zod en nuestro bosque encantado: valida que los datos enviados realmente cumplan con lo esperado.

Drizzle ORM y el Bosque Encantado: Persistiendo la Historia de Forma Segura y Eficiente Drizzle ORM es una herramienta moderna para interactuar con bases de datos en TypeScript. Imagina que la historia de Blancanieves y todos sus personajes residen en un “bosque encantado” (la base de datos). Drizzle nos proporciona las herramientas para navegar por este bosque, encontrar la información que necesitamos (como los detalles de cada enanito o las opiniones de los espectadores) y guardar nuevos elementos de forma segura y eficiente.

blancanieves

Con Drizzle, definiríamos las “tablas” de nuestra base de datos (por ejemplo, una tabla de “Enanitos” y otra de “Opiniones”). Luego, podríamos realizar consultas para obtener información específica:

import { drizzle } from 'drizzle-orm/node-postgres';
import { pgTable, serial, text, integer } from 'drizzle-orm/pg-core';

// (Supongamos que ya configuraste tu conexión a la base de datos)
// const db = drizzle(pool);

const enanitosTable = pgTable('enanitos', {
  id: serial('id').primaryKey(),
  nombre: text('nombre').notNull(),
  rol: text('rol').notNull(),
});

// Ejemplo de consulta (necesitarías la instancia de 'db' configurada)
// async function obtenerEnanitosMineros() {
//   const mineros = await db.select().from(enanitosTable).where(eq(enanitosTable.rol, 'MINERO'));
//   console.log("Enanitos mineros:", mineros);
// }
// obtenerEnanitosMineros();

Al igual que Drizzle nos ayuda a organizar y acceder a los datos de la historia, una buena dirección y guion deberían organizar y presentar la historia de Blancanieves de manera coherente y atractiva. Las críticas a la película podrían interpretarse como una “consulta” de la audiencia que no encontró la “información” (la historia) de la manera que esperaban.

Drizzle ORM actúa como un bosque donde los personajes y sus historias se almacenan y recuperan para que la narrativa fluya sin problemas. La controversia en torno a la nueva Blancanieves nos recuerda la importancia de la claridad, la validación y la organización, tanto en la narrativa como en el desarrollo de software. enum, Zod y Drizzle ORM son herramientas poderosas en TypeScript que nos ayudan a construir aplicaciones robustas y comprensibles.

Conclusión Aunque la película de Blancanieves puede no ser del agrado de todos, su caótico universo sirve como una analogía perfecta para entender cómo ENUM, Zod y Drizzle ORM trabajan juntos para traer orden y validación a nuestros proyectos. Cada herramienta tiene su rol, igual que los personajes de un cuento, y al usarlas correctamente, podemos crear sistemas robustos y encantados.

Quizás, si los creadores de la película hubieran aplicado algunos de estos principios de “estructura” y “validación” a su visión, ¡la recepción del público habría sido un cuento mucho más feliz!💫

¡Gracias por leer! 👇🏻 🚀 ¿Te ha gustado? Comparte tu opinión. Artículo completo, visita: https://community.aws/@orlidun https://lnkd.in/ewtCN2Mn https://differ.blog/@orlidun https://lnkd.in/eAjM_Smy 👩💻 https://lnkd.in/eKvu-BHe https://dev.to/orlidev https://lnkd.in/ecHHabTD https://pin.it/2BuZ9N4n8 https://linktr.ee/orlidevs ¡No te lo pierdas!

Referencias: Imágenes creadas con: Copilot ( microsoft.com )

#PorUnMillóndeAmigos #MakeYourselfVisible

img250