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.