From 12ce6b75226d01cab5012fb272cc995ad520db35 Mon Sep 17 00:00:00 2001 From: Redume Date: Sun, 18 Feb 2024 22:59:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=20=D1=81=20=D0=BA=D1=83?= =?UTF-8?q?=D1=80=D1=81=D0=BE=D0=BC=20=D0=B2=D0=B0=D0=BB=D1=8E=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 50 +++++++++++++++++++++++------------------- utils/errorResponse.js | 11 ++++++++++ 2 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 utils/errorResponse.js diff --git a/main.js b/main.js index 1408c2e..1aa2f2b 100644 --- a/main.js +++ b/main.js @@ -1,29 +1,35 @@ const fastify = require('fastify')({ logger: true }); +const schedule = require('node-schedule'); +const pool = require("./postgresql.js"); +const saveRate = require('./utils/saveRate.js'); +const response = require('./utils/errorResponse'); -fastify.route({ - method: 'GET', - url: '/', - schema: { - querystring: { - }, - response: { - 200: { +schedule.scheduleJob('30 8 * * *', async function () { + console.log('I save the currency data'); + await saveRate(); +}); - } - } - }, - preHandler: async (res, reply) => { +fastify.get('/api/getRate/', async function (req, reply) { + if (!req.query?.codeCurrency) return response( + 400, + 'error', + 'codeCurrency parameter is required' + ); - }, - handler: async (res, reply) => { + if (!req.query?.periodStart) return response(400, 'error', 'period parameter is required'); - } -}) + const data = await pool.query('SELECT * FROM currency WHERE from_currency = $1 AND date = $2', [ + req.query.codeCurrency, + req.query.periodStart + ]).then(response('error', 500, 'Internal Server Error')); -try { - await fastify.listen({ port: 3000 }) -} catch (err) { - fastify.log.error(err) - process.exit(1) -} \ No newline at end of file + console.log(typeof data['rows']) + + return data['rows']; +}); + +fastify.listen({ port: 3000 }, err => { + if (err) throw err + console.log(`server listening on ${fastify.server.address().port}`) +}) \ No newline at end of file diff --git a/utils/errorResponse.js b/utils/errorResponse.js new file mode 100644 index 0000000..5e88c08 --- /dev/null +++ b/utils/errorResponse.js @@ -0,0 +1,11 @@ +function response(status, statusCode, message) { + return { + status: status, + statusCode: status, + data: { + message: message + } + } +} + +module.exports = response; \ No newline at end of file