mirror of
https://github.com/pawelmalak/flame.git
synced 2025-07-19 11:39:36 +02:00
Created Cron job to get data from external api every 15 minutes and save it to local database. Created Weather model and controller to get latest weather status
This commit is contained in:
parent
3fc3d07598
commit
adc4aaed0f
8 changed files with 195 additions and 0 deletions
42
utils/getExternalWeather.js
Normal file
42
utils/getExternalWeather.js
Normal file
|
@ -0,0 +1,42 @@
|
|||
const Config = require('../models/Config');
|
||||
const Weather = require('../models/Weather');
|
||||
const axios = require('axios');
|
||||
|
||||
const getExternalWeather = async () => {
|
||||
// Get API key from database
|
||||
let secret = await Config.findOne({
|
||||
where: { key: 'WEATHER_API_KEY' }
|
||||
});
|
||||
|
||||
if (!secret) {
|
||||
console.log('API key was not found');
|
||||
return;
|
||||
}
|
||||
|
||||
secret = secret.value;
|
||||
|
||||
// Fetch data from external API
|
||||
try {
|
||||
const res = await axios.get(`http://api.weatherapi.com/v1/current.json?key=${secret}&q=52.229676,21.012229`);
|
||||
|
||||
// For dev
|
||||
// console.log(res.data);
|
||||
|
||||
// Save weather data
|
||||
const cursor = res.data.current;
|
||||
await Weather.create({
|
||||
externalLastUpdate: cursor.last_updated,
|
||||
tempC: cursor.temp_c,
|
||||
tempF: cursor.temp_f,
|
||||
isDay: cursor.is_day,
|
||||
conditionText: cursor.condition.text,
|
||||
conditionCode: cursor.condition.code
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
console.log('External API request failed');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = getExternalWeather;
|
Loading…
Add table
Add a link
Reference in a new issue