Organización del Código para Implementar GraphQL

Clase 3 de 24Curso de GraphQL con Node.js

Resumen

¿Cómo está organizada la arquitectura de la aplicación?

En este instructivo, exploraremos cómo está estructurada la aplicación utilizando la Clean Architecture. Esta metodología se basa en una división clara de responsabilidades para asegurar un código modular y fácil de mantenibilidad. La organización del proyecto se distribuye en varias capas fundamentales:

  • Capa de Controllers: Aquí encontramos los Routers, que gestionan las rutas de nuestra aplicación.
  • Capa de Servicios: Se encarga de manejar la lógica del negocio y las operaciones más complejas.
  • Capa de Entidades: Utiliza SQLite como ORM para gestionar las bases de datos, concretamente con PostgreSQL.

¿Qué contiene la carpeta config?

La carpeta config almacena la configuración de las variables de entorno, esenciales para adaptar la aplicación a diferentes fases como desarrollo o producción. Estos datos se extraen de un archivo .env y se cargan en un archivo JavaScript, simplificando su consumo en el código.

¿Qué roles cumple la carpeta database?

La carpeta database desempeña un papel vital al manejar las migraciones y modelos de base de datos:

  • Migraciones: Definen la estructura de las tablas, como usuarios, clientes, categorías, productos y órdenes, incluyendo la tabla de relación muchos a muchos.
  • Modelos: Proporciona los esquemas detallados de los datos, especificando tipos, IDs y otras características.
  • Semillas de Información: Contiene datos iniciales, como usuarios de prueba, facilitando el testing.

¿Cómo interactúa SQLite en la aplicación?

SQLite se utiliza en la capa de servicios para conectar la aplicación a la base de datos mediante un ORM. Aquí, los comandos para operaciones como migraciones o sets de datos se ejecutan a través del CLI de SQLite.

¿Cómo se manejan los DTOs y los middlewares?

Los DTOs (Data Transfer Objects) son esenciales para validar la integridad de los datos, asegurándose de que cumplen los criterios antes de ser procesados. La implementación incluye validadores de autenticación, manejo de errores y comprobación de estructuras de datos.

  • DTOs: Incluyen validaciones para nombre, caracteres, etc.
  • Middlewares: Aseguran conexiones específicas, validan roles, gestionan API keys y validan los DTOs en los endpoints.

¿Cómo se estructuran las rutas y servicios?

Las rutas definen los endpoints disponibles, como la obtención de productos. Se utiliza un middleware para validar y pasar los datos a la capa de servicios, donde se realizan las consultas a la base de datos. Aquí se realizan operaciones CRUD completas: creación, lectura, actualización y eliminación de registros.

¿Qué utilidades se encuentran en los utils?

La carpeta de utilidades contiene estrategias de autenticación basadas en JSON Web Tokens (JWT). Aquí también se verifican usuarios y contraseñas, asignando los JWT a los usuarios identificados dentro del sistema. Esto permite una administración segura y eficaz de sesiones.

Cada una de estas capas juega un papel crucial en el funcionamiento de la aplicación y se compondrá para integrar GraphQL en el desarrollo futuro de la misma. Con esta estructura bien definida, reforzamos la modularidad y escalabilidad del proyecto, permitiéndonos avanzar con confianza al siguiente módulo dedicado a GraphQL.