aboutsummaryrefslogtreecommitdiffstats
path: root/apps/workers/feedWorker.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/workers/feedWorker.ts')
-rw-r--r--apps/workers/feedWorker.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/apps/workers/feedWorker.ts b/apps/workers/feedWorker.ts
index 1bd24641..2f2c80f5 100644
--- a/apps/workers/feedWorker.ts
+++ b/apps/workers/feedWorker.ts
@@ -1,5 +1,6 @@
import { and, eq, inArray } from "drizzle-orm";
import { DequeuedJob, Runner } from "liteque";
+import cron from "node-cron";
import Parser from "rss-parser";
import { buildImpersonatingTRPCClient } from "trpc";
@@ -10,6 +11,35 @@ import logger from "@hoarder/shared/logger";
import { FeedQueue } from "@hoarder/shared/queues";
import { BookmarkTypes } from "@hoarder/shared/types/bookmarks";
+export const FeedRefreshingWorker = cron.schedule(
+ "0 * * * *",
+ () => {
+ logger.info("[feed] Scheduling feed refreshing jobs ...");
+ db.query.rssFeedsTable
+ .findMany({
+ columns: {
+ id: true,
+ },
+ })
+ .then((feeds) => {
+ for (const feed of feeds) {
+ FeedQueue.enqueue(
+ {
+ feedId: feed.id,
+ },
+ {
+ idempotencyKey: feed.id,
+ },
+ );
+ }
+ });
+ },
+ {
+ runOnInit: false,
+ scheduled: false,
+ },
+);
+
export class FeedWorker {
static build() {
logger.info("Starting feed worker ...");