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