瀏覽代碼

Squashed commit of the following: (#5569)

commit 17b265300d163b88b14a0720e85b9faa56c7c186
Author: Manuel Spigolon <[email protected]>
Date:   Sat Mar 28 15:22:29 2020 +0100

    fix lowercase for postgres

commit 0488935b1b0aa652569a9965896582d5aeca4b4f
Author: Manuel Spigolon <[email protected]>
Date:   Fri Mar 27 19:30:40 2020 +0100

    fix schema array output

commit e4cc276f1047c58882af870a12b04d3d96b4adc1
Author: Manuel Spigolon <[email protected]>
Date:   Fri Mar 27 13:25:50 2020 +0100

    add schema on routes
Manuel Spigolon 5 年之前
父節點
當前提交
e60b3cf405
共有 1 個文件被更改,包括 62 次插入8 次删除
  1. 62 8
      frameworks/JavaScript/fastify/create-server.js

+ 62 - 8
frameworks/JavaScript/fastify/create-server.js

@@ -8,13 +8,23 @@ fastify.register(require("point-of-view"), {
   templates: __dirname + "/views"
 });
 
-fastify.use((req, reply, next) => {
+fastify.addHook('onRequest', (request, reply, done) => {
   reply.setHeader("Server", "Fastify");
+  done()
+})
 
-  next();
-});
-
-fastify.get("/json", (req, reply) => {
+fastify.get("/json", {
+  schema: {
+    response: {
+      200: {
+        type: 'object',
+        properties: {
+          message: { type: 'string' }
+        }
+      }
+    }
+  }
+}, (req, reply) => {
   reply
     .header("Content-Type", "application/json")
     .code(200)
@@ -34,10 +44,54 @@ if (database) {
   const dbLayer = require(`./db/${database}`);
   const routerHandler = handlers(dbLayer);
 
-  fastify.get("/db", routerHandler.singleQuery);
-  fastify.get("/queries", routerHandler.multipleQueries);
+  const itemSchema = {
+    type: 'object',
+    properties: {
+      id: { type: 'integer' },
+      message: { type: 'string' },
+      randomNumber: { type: 'integer' }
+    }
+  }
+
+  if (database === 'postgres') {
+    // postgres return lowercase columns
+    itemSchema.properties.randomnumber = { type: 'integer' };
+  }
+
+  const singleQuerySchema = {
+    schema: {
+      response:{
+        200: itemSchema
+      }
+    }
+  }
+
+  const multipleQueriesSchema = {
+    schema: {
+      response:{
+        200: {
+          type: 'array',
+          items: itemSchema
+        }
+      }
+    }
+  }
+
+  const updateSchema = {
+    schema: {
+      response:{
+        200: {
+          type: 'array',
+          items: itemSchema
+        }
+      }
+    }
+  }
+
+  fastify.get("/db", singleQuerySchema, routerHandler.singleQuery);
+  fastify.get("/queries", multipleQueriesSchema, routerHandler.multipleQueries);
   fastify.get("/fortunes", routerHandler.fortunes);
-  fastify.get("/updates", routerHandler.updates);
+  fastify.get("/updates", updateSchema, routerHandler.updates);
 }
 
 fastify.listen(8080, "0.0.0.0", err => {