travopti/backend/climate.js

64 lines
1.9 KiB
JavaScript

require('dotenv').config()
const mysql = require('mysql2/promise');
const axios = require('axios')
const startDate = '2018-01'
const endDate = '2018-12'
async function main() {
const connection = await mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
database: 'travopti'
});
const [result, fields] = await connection.execute(`SELECT * FROM regions WHERE meteostat_id IS NOT NULL`)
Promise.all(result.map(res => {
console.log(res)
return axios.get(`https://api.meteostat.net/v1/climate/normals?station=${res.meteostat_id}&key=${process.env.METEOSTAT_API_KEY}`)
})).then(responses => {
responses.forEach(response => {
//console.log(response.data)
})
//console.log(responses[0])
})
connection.end();
}
async function createClimateObject(src) {
let response = await axios.get(`https://api.meteostat.net/v1/climate/normals?station=${res.meteostat_id}&key=${process.env.METEOSTAT_API_KEY}`)
let temperatures = response.data.data.temperature
let precipitations = response.data.data.precipitation
let sunshines = response.data.data.sunshine
console.log(Object.entries(temperatures)[0])
let results = []
for (let index = 1; index <= 12; index++) {
//const element = array[index];
let result = {
region: src.region,
region_id: src.id,
month: index,
temperature: Object.values(temperatures)[index],
precipitation: Object.values(precipitations)[index],
sunshine: Object.values(sunshines)[index],
}
results.push(result)
}
return results
}
async function createClimateObjectFromLastYear(src) {
let response = await axios.get(`https://api.meteostat.net/v1/history/monthly?station=${res.meteostat_id}&start=${startDate}&end=${endDate}&key=${process.env.METEOSTAT_API_KEY}`)
let result = {
region_id: src.id,
}
}
main()