const fetch = require("node-fetch"); var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'simcompanies', password: '', database: 'simcompanies' }); const marketAPI = "https://www.simcompanies.com/api/v1/market-ticker/"; var date = new Date(); const actualdate = new Date(); //don't ask me why, but simcompanies uses yesterday to get the values for today... date.setDate(date.getDate() - 1); const url = marketAPI + date.toISOString() + "/"; //function to get marketprices from API: const getData = async url => { var marketData = await fetch(url); if (marketData.status === 200) { marketData = await marketData.text(); marketData = await JSON.parse(marketData); return marketData; } else { throw ("fetch returned status code " + marketData.status); } } const storeData = async marketData => { marketData = await marketData; connection.beginTransaction(function (err) { if (err) { throw err; } for (var data in marketData) { const kind = mysql.escape(marketData[data]["kind"]); const price = mysql.escape(marketData[data]["price"]); const storedate = `FROM_UNIXTIME(${Math.round(actualdate.valueOf() / 1000)})`; const querystring = `INSERT INTO market (kind,price,time) VALUES (${kind},${price},${storedate})` connection.query(querystring, function (error, results, fields) { if (error) { return connection.rollback(function () { throw error; }); } }); } connection.commit(function (err) { if (err) { return connection.rollback(function () { connection.end(); throw err; }); } else { connection.end(); } }); }); } storeData(getData(url));