aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/db/queries/feeds.sql
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-04-27 21:20:10 +0900
committernsfisis <nsfisis@gmail.com>2026-04-27 21:20:10 +0900
commitcb00405041ee4714b6e817e9570cfa10ae972840 (patch)
treeff98728b3e5e099eb9ac5556eeb407c68e0fc208 /backend/db/queries/feeds.sql
parent938863425bf8ad6c17e43b3da128f92cf6d6ab63 (diff)
downloadfeedaka-cb00405041ee4714b6e817e9570cfa10ae972840.tar.gz
feedaka-cb00405041ee4714b6e817e9570cfa10ae972840.tar.zst
feedaka-cb00405041ee4714b6e817e9570cfa10ae972840.zip
feat(backend): adapt feed fetch interval to update frequencyHEADmain
Add per-feed fetch_interval_seconds (clamped to [1h, 24h]) that halves on new articles and grows 1.5x when a fetch yields nothing, replacing the fixed 1h schedule with the 10min cooldown filter. Scheduler tick shortened to 30min so the 1h floor is honored with reasonable precision.
Diffstat (limited to 'backend/db/queries/feeds.sql')
-rw-r--r--backend/db/queries/feeds.sql16
1 files changed, 11 insertions, 5 deletions
diff --git a/backend/db/queries/feeds.sql b/backend/db/queries/feeds.sql
index 094a0f8..678f7cc 100644
--- a/backend/db/queries/feeds.sql
+++ b/backend/db/queries/feeds.sql
@@ -1,10 +1,10 @@
-- name: GetFeed :one
-SELECT id, url, title, fetched_at, is_subscribed, user_id
+SELECT id, url, title, fetched_at, is_subscribed, user_id, fetch_interval_seconds
FROM feeds
WHERE id = ?;
-- name: GetFeeds :many
-SELECT id, url, title, fetched_at, is_subscribed, user_id
+SELECT id, url, title, fetched_at, is_subscribed, user_id, fetch_interval_seconds
FROM feeds
WHERE is_subscribed = 1 AND user_id = ?
ORDER BY id;
@@ -24,14 +24,20 @@ DELETE FROM feeds
WHERE id = ?;
-- name: GetFeedByURL :one
-SELECT id, url, title, fetched_at, is_subscribed, user_id
+SELECT id, url, title, fetched_at, is_subscribed, user_id, fetch_interval_seconds
FROM feeds
WHERE url = ? AND user_id = ?;
-- name: GetFeedsToFetch :many
-SELECT id, url, fetched_at, user_id
+SELECT id, url, fetched_at, user_id, fetch_interval_seconds
FROM feeds
-WHERE is_subscribed = 1;
+WHERE is_subscribed = 1
+ AND datetime(fetched_at, '+' || fetch_interval_seconds || ' seconds') <= datetime('now');
+
+-- name: UpdateFeedFetchInterval :exec
+UPDATE feeds
+SET fetch_interval_seconds = ?
+WHERE id = ?;
-- name: UnsubscribeFeed :exec
UPDATE feeds