feat: Add conditional data fetching logic for fiat and crypto currencies
- Introduced flags to prevent duplicate data fetching for fiat and crypto currencies. - Added service status check to skip fetching data if it's already collected for the respective currency type. - Implemented logging for successful and skipped data fetching for both fiat and crypto services. - Reset flags before each scheduled task to allow fetching fresh data on every run. - Enhanced error handling and logging for each service's data fetching attempt.
This commit is contained in:
parent
e7c2701d52
commit
1c348566f0
1 changed files with 26 additions and 0 deletions
26
main.js
26
main.js
|
@ -10,6 +10,9 @@ const config = require('./utils/load_config.js')();
|
|||
const services = [];
|
||||
const servicesDir = path.join(__dirname, 'services');
|
||||
|
||||
let fiatFetched = false;
|
||||
let cryptoFetched = false;
|
||||
|
||||
async function main() {
|
||||
if (!config['schedule'])
|
||||
throw new Error('The crontab schedule is not set.');
|
||||
|
@ -34,6 +37,9 @@ async function main() {
|
|||
schedule.scheduleJob(config['schedule'], async () => {
|
||||
console.log('Running scheduled task at:', new Date());
|
||||
|
||||
fiatFetched = false;
|
||||
cryptoFetched = false;
|
||||
|
||||
for (const srv of services) {
|
||||
const results = await srv.parseCurrencies();
|
||||
|
||||
|
@ -42,6 +48,16 @@ async function main() {
|
|||
|
||||
for (const result of results) {
|
||||
try {
|
||||
if (srv.info.type === 'fiat' && fiatFetched) {
|
||||
console.log('Skipping fiat currency collection as data has already been fetched.');
|
||||
continue;
|
||||
}
|
||||
|
||||
if (srv.info.type === 'crypto' && cryptoFetched) {
|
||||
console.log('Skipping crypto currency collection as data has already been fetched.');
|
||||
continue;
|
||||
}
|
||||
|
||||
const currency = await validateCurrency(result);
|
||||
|
||||
await pool.query(
|
||||
|
@ -59,6 +75,16 @@ async function main() {
|
|||
console.error(validationError);
|
||||
}
|
||||
}
|
||||
|
||||
if (srv.info.type === 'crypto') {
|
||||
cryptoFetched = true;
|
||||
console.log('Crypto currency data fetched successfully.');
|
||||
}
|
||||
|
||||
if (srv.info.type === 'fiat') {
|
||||
fiatFetched = true;
|
||||
console.log('Fiat currency data fetched successfully.');
|
||||
}
|
||||
} else {
|
||||
console.error("Data not received for writing to the database.");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue