fix: only query feeds that havent been queried in the last 5 miuntes
authorxangelo <me@xangelo.ca>
Sat, 27 Jan 2024 03:59:05 +0000 (22:59 -0500)
committerxangelo <me@xangelo.ca>
Sat, 27 Jan 2024 04:01:14 +0000 (23:01 -0500)
src/server.ts

index 83f1244bf159102f44622f06f1b0139f1ab6a7ad..06c1b6221905480f5a787983abbb2284ff154acd 100644 (file)
@@ -16,6 +16,8 @@ const db = knex({
 const parser = new Parser();
 const app = express();
 
+const FEED_REFRESH_RATE = parseInt(process.env.FEED_REFRESH_RATE || '0');
+
 function contentExtractor(feed: FeedSchema, item): string {
   let str = '';
   switch(feed.title) {
@@ -41,7 +43,7 @@ async function queryFeeds() {
 
   const feedsToQuery = completeFeedList.filter(feed => {
     // only update every 5 minutes
-    return Date.now() > (feed.updated_at + (1000 * 60 * 5));
+    return Math.floor(Date.now()/1000) > (feed.updated_at + (1000 * 60 * FEED_REFRESH_RATE));
   });
 
   console.log(`Querying ${feedsToQuery.length} feeds`);
@@ -89,7 +91,10 @@ async function queryFeeds() {
     }
   }
 
-  setTimeout(queryFeeds, (Number(process.env.FEED_REFRESH_RATE) + 1) * 1000 * 60);
+  // we query every minute, incase new feeds were added
+  // but we only check feeds that havne't been checked 
+  // in the last 5 minutes (based on FEED_REFRESH_RATE)
+  setTimeout(queryFeeds, 1000 * 60);
 }
 
 app.use(express.static(join(__dirname, 'public')));
@@ -196,7 +201,7 @@ app.delete('/feeds/:feed_id', async (req, res) => {
 
 app.listen(process.env.API_PORT, () => {
   console.log(`Listening on port ${process.env.API_PORT}`);
-  console.log(`Feed refresh rate: ${(Number(process.env.FEED_REFRESH_RATE) + 1)}m`);
+  console.log(`Feed refresh rate: ${FEED_REFRESH_RATE}m`);
   queryFeeds();
 });