Overhaul RSS feed widget: persistence, multi-feed management, search, bookmarks
- Add rss_feeds + rss_items tables with indexes and HN default seed - Add 5-min background RSS sync loop in monitor.js with 90-day prune - New /api/rss/feeds route for feed CRUD with immediate fetch on add - Rewrite /api/rss route with search, feed filter, pagination, read/bookmark PATCH - Full NewsFeed component rewrite: feed manager, search bar, filter pills, read/unread tracking, bookmarks, favicons, auto-refresh with new items badge - Remove placeholder widget, NewsFeed now spans 4 cols / 3 rows - Add rss-parser deps to Dockerfile for standalone monitor
This commit is contained in:
33
lib/db.ts
33
lib/db.ts
@@ -45,7 +45,40 @@ export async function getDb() {
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_uptime_logs_service_timestamp
|
||||
ON uptime_logs(service_name, timestamp);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS rss_feeds (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
url TEXT NOT NULL UNIQUE,
|
||||
last_fetched DATETIME,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS rss_items (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
feed_id INTEGER NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
link TEXT NOT NULL UNIQUE,
|
||||
pub_date DATETIME,
|
||||
creator TEXT,
|
||||
snippet TEXT,
|
||||
read INTEGER DEFAULT 0,
|
||||
bookmarked INTEGER DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_rss_items_feed ON rss_items(feed_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_rss_items_pubdate ON rss_items(pub_date DESC);
|
||||
`);
|
||||
|
||||
// Seed default HN feed if rss_feeds is empty
|
||||
const feedCount = await db.get('SELECT COUNT(*) as cnt FROM rss_feeds');
|
||||
if (feedCount?.cnt === 0) {
|
||||
await db.run(
|
||||
'INSERT INTO rss_feeds (name, url) VALUES (?, ?)',
|
||||
'Hacker News', 'https://news.ycombinator.com/rss'
|
||||
);
|
||||
}
|
||||
|
||||
return db;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user