Update price-history.min.js

This commit is contained in:
tripathyr 2024-10-22 19:15:56 +05:30 committed by GitHub
parent c0b7418e24
commit c2f2a01bf4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1 +1 @@
const express=require("express"),router=express.Router(),cron=require("node-cron"),axios=require("axios"),fs=require("fs"),path=require("path"),csv=require("csv-parser"),PriceHistory=require("../models/price-history"),CSV_FILE_PATH="/home/production/deployed/utility-api/btc_price_history_full.csv";function readCsvFile(){return new Promise(((e,r)=>{const t=[];fs.createReadStream(CSV_FILE_PATH).pipe(csv()).on("data",(e=>t.push(e))).on("end",(()=>e(t))).on("error",(e=>r(e)))}))}async function fetchBtcPrices(){try{const e=(await axios.get("https://bitpay.com/api/rates")).data,r=e.find((e=>"USD"===e.code&&"US Dollar"===e.name)).rate;return{usd:r,inr:e.find((e=>"INR"===e.code&&"Indian Rupee"===e.name)).rate}}catch(e){return console.error("Error fetching BTC prices from BitPay:",e),null}}async function updateDailyAverage(e){const r=(new Date).setHours(0,0,0,0);try{const t=await PriceHistory.findOne({date:r,asset:"btc"});if(t){const a=(t.usd*t.count+e.usd)/(t.count+1),c=(t.inr*t.count+e.inr)/(t.count+1);await PriceHistory.updateOne({date:r,asset:"btc"},{$set:{usd:a,inr:c,count:t.count+1}})}else await PriceHistory.create({date:r,asset:"btc",usd:e.usd,inr:e.inr,count:1});console.log("Daily average updated successfully.")}catch(e){console.error("Error updating daily average:",e)}}async function collectAndUpdatePrices(){const e=await fetchBtcPrices();e&&await updateDailyAverage(e)}cron.schedule("0 */4 * * *",(async()=>{console.log("Starting price collection for daily averaging..."),await collectAndUpdatePrices()})),module.exports=router;
const express=require("express"),router=express.Router(),cron=require("node-cron"),axios=require("axios"),fs=require("fs"),path=require("path"),csv=require("csv-parser"),PriceHistory=require("../models/price-history"),CSV_FILE_PATH="/home/production/deployed/utility-api/btc_price_history_full.csv";function readCsvFile(){return new Promise(((e,r)=>{const t=[];fs.createReadStream(CSV_FILE_PATH).pipe(csv()).on("data",(e=>t.push(e))).on("end",(()=>e(t))).on("error",(e=>r(e)))}))}async function fetchBtcPrices(){try{const e=(await axios.get("https://bitpay.com/api/rates")).data,r=e.find((e=>"USD"===e.code&&"US Dollar"===e.name)).rate;return{usd:r,inr:e.find((e=>"INR"===e.code&&"Indian Rupee"===e.name)).rate}}catch(e){return console.error("Error fetching BTC prices from BitPay:",e),null}}async function updateDailyAverage(e){const r=new Date;r.setHours(0,0,0,0);try{const t=await PriceHistory.findOne({date:r,asset:"btc"});if(t){const a=(t.usd*t.count+e.usd)/(t.count+1),c=(t.inr*t.count+e.inr)/(t.count+1);await PriceHistory.updateOne({date:r,asset:"btc"},{$set:{usd:a,inr:c,count:t.count+1}})}else await PriceHistory.create({date:r,asset:"btc",usd:e.usd,inr:e.inr,count:1});console.log("Daily average updated successfully.")}catch(e){console.error("Error updating daily average:",e)}}async function collectAndUpdatePrices(){const e=await fetchBtcPrices();e&&await updateDailyAverage(e)}cron.schedule("0 */4 * * *",(async()=>{console.log("Starting price collection for daily averaging..."),await collectAndUpdatePrices()})),module.exports=router;