Introducción a los Enums en GraphQL

En GraphQL, los Enums (abreviatura de "Enumerations") son un tipo especial de datos que permite definir un conjunto de valores posibles para un campo. Los Enums son útiles cuando se desea restringir un campo a un conjunto específico de valores predefinidos, lo que ayuda a evitar errores y a mejorar la claridad del esquema.

Conceptos Clave

  • Definición de Enums: Los Enums se definen en el esquema de GraphQL y especifican un conjunto de valores posibles.
  • Uso de Enums en Tipos: Los Enums se pueden utilizar como tipos de campo en objetos, entradas y otros tipos de GraphQL.
  • Validación Automática: GraphQL valida automáticamente que los valores proporcionados para los campos de tipo Enum sean uno de los valores permitidos.

Ejemplo de Definición de Enum

A continuación, se muestra un ejemplo de cómo definir un Enum en un esquema de GraphQL:

enum Role {
  ADMIN
  USER
  GUEST
}

En este ejemplo, hemos definido un Enum llamado Role con tres valores posibles: ADMIN, USER y GUEST.

Uso de Enums en Tipos de GraphQL

Los Enums se pueden utilizar en varios lugares dentro del esquema de GraphQL. Aquí hay un ejemplo de cómo usar el Enum Role en un tipo de objeto:

type User {
  id: ID!
  name: String!
  role: Role!
}

En este ejemplo, el campo role del tipo User utiliza el Enum Role. Esto significa que el campo role solo puede tener uno de los valores definidos en el Enum Role.

Consultas y Mutaciones con Enums

Consulta con Enums

A continuación, se muestra un ejemplo de una consulta que devuelve usuarios y sus roles:

query {
  users {
    id
    name
    role
  }
}

Mutación con Enums

A continuación, se muestra un ejemplo de una mutación que crea un nuevo usuario con un rol específico:

mutation {
  createUser(input: {
    name: "Alice"
    role: ADMIN
  }) {
    id
    name
    role
  }
}

Ejercicio Práctico

Ejercicio 1: Definir y Usar un Enum

  1. Definir un Enum: Define un Enum llamado Status con los valores ACTIVE, INACTIVE y PENDING.
  2. Usar el Enum en un Tipo: Crea un tipo Task que tenga un campo status de tipo Status.
  3. Consulta y Mutación: Escribe una consulta para obtener todas las tareas y sus estados, y una mutación para crear una nueva tarea con un estado específico.

Solución

  1. Definir el Enum Status:
enum Status {
  ACTIVE
  INACTIVE
  PENDING
}
  1. Crear el Tipo Task:
type Task {
  id: ID!
  title: String!
  status: Status!
}
  1. Consulta para Obtener Tareas:
query {
  tasks {
    id
    title
    status
  }
}
  1. Mutación para Crear una Nueva Tarea:
mutation {
  createTask(input: {
    title: "Learn GraphQL"
    status: ACTIVE
  }) {
    id
    title
    status
  }
}

Errores Comunes y Consejos

  • Valores Inválidos: Asegúrate de que los valores proporcionados para los campos de tipo Enum sean uno de los valores permitidos. GraphQL lanzará un error si se proporciona un valor no válido.
  • Actualización de Enums: Si necesitas agregar o eliminar valores de un Enum, ten en cuenta que esto puede afectar a las consultas y mutaciones existentes. Planifica cuidadosamente cualquier cambio en los Enums.

Conclusión

Los Enums en GraphQL son una herramienta poderosa para definir conjuntos de valores predefinidos y mejorar la claridad y la validación de los esquemas. Al utilizar Enums, puedes asegurarte de que los campos solo contengan valores válidos, lo que reduce la posibilidad de errores y mejora la consistencia de los datos. En el próximo módulo, exploraremos otros tipos avanzados de GraphQL, como interfaces y uniones.

© Copyright 2024. Todos los derechos reservados