| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | const fastify = require("fastify")({ logger: false, keepAliveTimeout: 0 });const handlers = require("./handlers");fastify.setErrorHandler((error, request, reply) => {  console.log(error)  reply.status(500).send({ ok: false })})fastify.register(require("@fastify/view"), {  engine: {    handlebars: require("handlebars")  }});fastify.addHook('onRequest', (request, reply, done) => {  reply.header("Server", "Fastify");  done()})fastify.get("/json", {  schema: {    response: {      200: {        type: 'object',        properties: {          message: { type: 'string' }        }      }    }  }}, (req, reply) => {  reply    .header("Content-Type", "application/json")    .code(200)    .send({ message: "Hello, World!" });});fastify.get("/plaintext", (req, reply) => {  reply    .header("Content-Type", "text/plain")    .code(200)    .send("Hello, World!");});const database = process.env.DATABASE;if (database) {  const dbLayer = require(`./db/${database}`);  const routerHandler = handlers(dbLayer);  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", updateSchema, routerHandler.updates);}fastify.listen({ port: 8080, host: "0.0.0.0" }, (err, address) => {  if (err) {    throw err;  }  console.log(    `Worker started and listening on ${address} ${new Date().toISOString()}`  );});
 |