From 37456ada5dbee1c6822b2b07bfafe44777623465 Mon Sep 17 00:00:00 2001 From: Florian Graule Date: Wed, 7 Aug 2024 16:42:32 +0200 Subject: [PATCH] Try fixing cron job, error caused by Strapi reloading after updating db --- backend/config/functions/cronTask.js | 29 +++++++++++----------- backend/config/functions/satelliteUtils.js | 22 +++------------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/backend/config/functions/cronTask.js b/backend/config/functions/cronTask.js index da4c945..915ca03 100644 --- a/backend/config/functions/cronTask.js +++ b/backend/config/functions/cronTask.js @@ -11,27 +11,28 @@ module.exports = { updateAllSatellitesData: { task: async ({ strapi }) => { try { - // Fetching all satellites - const satellites = await strapi.entityService.findMany('api::satellite.satellite'); - - // Waiting for all promises to be resolved - await Promise.all( - satellites.map(async satellite => { - try { - setTimeout(async () => { - await fetchOrbitalData(strapi, satellite.id); - }, 10000); - } catch (error) { - console.error(error); + // Fetch all satellites + const satellites = await strapi.entityService.findMany('api::satellite.satellite', { + fields: ['id', 'catalogNumberNORAD'], + filters: { + catalogNumberNORAD: { $ne: null }, + } + }); + await Promise.all(satellites.map(async satellite => { + const historicalOrbitalData = await fetchOrbitalData(strapi, satellite.catalogNumberNORAD); + await strapi.entityService.update('api::satellite.satellite', satellite.id, { + data: { + historicalOrbitalData: historicalOrbitalData, } }) - ); + })); } catch (error) { console.error(error); + return; } }, options: { - rule: "0 0 0 3 * *", // Every month on the 3rd at midnight + rule: "0 0 0 8 * *", // Every month on the 3rd at midnight }, }, }; diff --git a/backend/config/functions/satelliteUtils.js b/backend/config/functions/satelliteUtils.js index bc9abdc..65d233c 100644 --- a/backend/config/functions/satelliteUtils.js +++ b/backend/config/functions/satelliteUtils.js @@ -1,12 +1,8 @@ // backend/utils/satelliteUtils.js const axios = require('axios'); -async function fetchOrbitalData(strapi, contextId) { +async function fetchOrbitalData(strapi, noradId) { try { - // Fetching the satellite - const satellite = await strapi.entityService.findOne('api::satellite.satellite', contextId); - const noradId = satellite.catalogNumberNORAD; - // Authentication to Space-Track const authResponse = await axios.post('https://www.space-track.org/ajaxauth/login', { identity: 'floridg@stud.ntnu.no', @@ -15,7 +11,8 @@ async function fetchOrbitalData(strapi, contextId) { if (authResponse.status === 200) { // Fetching data from Space-Track - const satelliteResponse = await axios.get(`https://www.space-track.org/basicspacedata/query/class/gp_history/NORAD_CAT_ID/${noradId}/orderby/TLE_LINE1%20ASC/EPOCH/1950-07-02--2024-07-02/format/json`, { + const today = new Date(); + const satelliteResponse = await axios.get(`https://www.space-track.org/basicspacedata/query/class/gp_history/NORAD_CAT_ID/${noradId}/orderby/TLE_LINE1%20ASC/orderby/TLE_LINE1%20ASC/format/json`, { headers: { Cookie: authResponse.headers['set-cookie'] } @@ -30,19 +27,8 @@ async function fetchOrbitalData(strapi, contextId) { eccentricity: data.ECCENTRICITY, semiMajorAxis: data.SEMIMAJOR_AXIS })); - - // Updating the satellite with the new data - const updatedSatellite = await strapi.entityService.update('api::satellite.satellite', contextId, { - data: { - historicalOrbitalData: historicalOrbitalData, - }, - }); - return updatedSatellite; - } else { - throw new Error('Error while fetching data from Space-Track'); + return historicalOrbitalData; } - } else { - throw new Error('Authentication failed'); } } catch (error) { console.error('Error while fetching data to Space-Track: ', error);