diff options
| author | Mohamed Bassem <me@mbassem.com> | 2024-11-03 18:33:52 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-11-03 18:33:52 +0000 |
| commit | d34b538a496e3c01f6c49fe23e4360a841ceee3a (patch) | |
| tree | fdcdd40fbb85473e97330e26760012435a355c8d /apps/workers/feedWorker.ts | |
| parent | fa8286aa900ea4f13c1c15d5b0f441436f042d8a (diff) | |
| download | karakeep-d34b538a496e3c01f6c49fe23e4360a841ceee3a.tar.zst | |
feature: Schedule RSS feed refreshes every hour
Diffstat (limited to 'apps/workers/feedWorker.ts')
| -rw-r--r-- | apps/workers/feedWorker.ts | 30 |
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 ..."); |
