From 9bc6c0a203b51f35a3d8cf1bb0fd7a1e6554ca81 Mon Sep 17 00:00:00 2001 From: Redume Date: Fri, 17 Jan 2025 15:11:29 +0300 Subject: [PATCH] feat(server): Made a new Root with available currencies to collect and first and last collection date --- nginx.conf | 11 +++++++++++ server/main.js | 2 ++ server/routes/metadata.js | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 server/routes/metadata.js diff --git a/nginx.conf b/nginx.conf index 1ee2254..fe6a393 100644 --- a/nginx.conf +++ b/nginx.conf @@ -51,6 +51,17 @@ http { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } + + location /api/metadata { + limit_req zone=kekkai burst=4; + + add_header Access-Control-Allow-Origin *; + proxy_pass http://server_backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } location /api/getChart { limit_req zone=kekkai burst=4; diff --git a/server/main.js b/server/main.js index c156081..0e03054 100644 --- a/server/main.js +++ b/server/main.js @@ -21,9 +21,11 @@ const fastify = require("fastify")({ const getRateRoute = require("./routes/getRate.js"); const HomeRoute = require("./routes/home.js"); +const getMetadata = require("./routes/metadata.js"); fastify.register(getRateRoute); fastify.register(HomeRoute); +fastify.register(getMetadata); fastify.setNotFoundHandler(function (res, reply) { return reply.status(404).send({ diff --git a/server/routes/metadata.js b/server/routes/metadata.js new file mode 100644 index 0000000..2912144 --- /dev/null +++ b/server/routes/metadata.js @@ -0,0 +1,18 @@ +const pool = require('../../shared/database/src/postgresql.js'); +const config = require('../../shared/config/src/main.js')(); + +module.exports = async function metadata(fastify) { + fastify.get('/api/metadata/', async function (req, res) { + const first_date = await pool.query('SELECT * FROM currency ORDER BY date LIMIT 1'); + const last_date = await pool.query('SELECT * FROM currency ORDER BY date DESC LIMIT 1'); + + return res.status(200).send({ + 'first_date': first_date.rows[0]?.date ? first_date.rows[0]?.date : 'None', + 'last_date': last_date.rows[0]?.date ? last_date.rows[0]?.date : 'None', + 'currencies': { + 'crypto': config['currency']['crypto'], + 'fiat': config['currency']['fiat'], + } + }) + }); +}