Browse Source

Added apollo server

Efren Yevale Varela 3 years ago
parent
commit
a055e5c837
1 changed files with 54 additions and 0 deletions
  1. 54 0
      app.js

+ 54 - 0
app.js

@@ -1 +1,55 @@
 "use strict";
+
+require("dotenv").config();
+
+const cors    = require("cors");
+const express = require("express");
+const helmet  = require("helmet");
+const http    = require("http");
+
+const { ApolloServer, gql }                 = require("apollo-server-express");
+const { ApolloServerPluginDrainHttpServer } = require("apollo-server-core");
+
+const corsOrigins = process.env.APP_CORS_ORIGINS.split(",");
+
+const app = express();
+app.enable("trust proxy");
+app.use(cors({ origin: corsOrigins }));
+if (app.get("env") === "production") {
+  app.use(helmet());
+  app.use(helmet.contentSecurityPolicy());
+}
+
+const httpServer = http.createServer(app);
+
+const typeDefs = gql`
+  type Hello {
+    message: String
+  }
+
+  type Query {
+    hello: Hello
+  }
+`;
+
+const resolvers = {
+  Query: {
+    hello: _ => ({ message: "Hello World!" })
+  }
+};
+
+const apollo = new ApolloServer({
+  typeDefs,
+  resolvers,
+  plugin: [ApolloServerPluginDrainHttpServer({ httpServer })]
+});
+apollo.start().then(_ => {
+  apollo.applyMiddleware({ app });
+
+  app.all("*", (request, response) => response.send(""));
+
+  httpServer.listen(process.env.APP_PORT);
+
+  let apolloData = httpServer.address();
+  console.log(`GraphQL service listening on ${apolloData.address}:${apolloData.port}${apollo.graphqlPath}`);
+}).catch(error => console.log(error.message));