Memegram GraphQL
Partimos de Memegram y le añadimos GraphQL.
Base de datos
npm
mysql2
Para poder utilizar la base de datos se debe instalar el paquete mysql2
npm install mysql2
dotenv
Para gestionar las variables de entorno se debe instalar el paquete dotenv
npm install dotenv
Para poder utilizar las variables de entorno se debe configurar el archivo .env
express
Para poder utilizar el servidor se debe instalar el paquete express
npm install express
helmet
Helmet es un middleware que se encarga de proteger la aplicación de ataques de seguridad.
Para poder utilizar el middleware helmet
se debe instalar el paquete helmet
npm install helmet
NOTA: Se ha deshabilitado helmet temporalmente para evitar una incompatibilidad con graphQL
morgan
morgan es un middleware que permite ver las peticiones que se hacen al servidor.
Para poder utilizar el middleware morgan
se debe instalar el paquete morgan
npm install morgan
express-graphql
El módulo express-graphql
provee un modo fácil para crear un servidor express que ejecute una api GraphQL.
Más info: https://graphql.org/graphql-js/express-graphql/
npm install express-graphql
graphql
el módulo graphql
exporta un subconjunto de funcionalidad para la creación de tipos y servidores GraphQL
Más info: https://graphql.org/graphql-js/graphql/
npm install graphql
graphql-tools
el módulo graphql-tools
es un conjunto de paquetes npm y una estructura opinionada para crear crear esquemas y resolvers graphQL en Javascript.
Más info: https://www.graphql-tools.com/docs/introduction
npm install graphql-tools
node
index.js
En este archivo se encuentra la lógica de la aplicación.
*.dao.js
Implementaremos los DAO que se encargarán de saber cómo acceder a los objetos de la base de datos.
Crearemos una clase para cada uno de los DAO que necesitemos, pero para nos aprovecharemos de la programación orientada a objetos y crearemos una clase padre que nos servirá de base para todos los DAO.
Los siguientes dao heredarán de esta clase e implementarán funciones/consultas específicas para cada uno de los DAO.
typedefs
En este archivo se encuentran las definiciones de tipos de datos graphQL que utilizaremos en las queries.
resolvers
Los resolvers nos implementan las funciones que se ejecutarán para los campos que tienen que ser calculados en el schema.