From 3d19313a7f655bc2626990650c4de8141485eea3 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Fri, 26 Jul 2019 21:13:06 -0700 Subject: Add option to disable feeds --- storage/feed.go | 40 +++++++++++++++++++++++++++++++--------- storage/job.go | 10 ++++++---- 2 files changed, 37 insertions(+), 13 deletions(-) (limited to 'storage') diff --git a/storage/feed.go b/storage/feed.go index 5c2df83..17b37ff 100644 --- a/storage/feed.go +++ b/storage/feed.go @@ -59,7 +59,7 @@ func (s *Storage) Feeds(userID int64) (model.Feeds, error) { f.user_id, f.checked_at at time zone u.timezone, f.parsing_error_count, f.parsing_error_msg, f.scraper_rules, f.rewrite_rules, f.crawler, f.user_agent, - f.username, f.password, + f.username, f.password, f.disabled, f.category_id, c.title as category_title, fi.icon_id, u.timezone @@ -99,6 +99,7 @@ func (s *Storage) Feeds(userID int64) (model.Feeds, error) { &feed.UserAgent, &feed.Username, &feed.Password, + &feed.Disabled, &feed.Category.ID, &feed.Category.Title, &iconID, @@ -133,7 +134,7 @@ func (s *Storage) FeedByID(userID, feedID int64) (*model.Feed, error) { f.user_id, f.checked_at at time zone u.timezone, f.parsing_error_count, f.parsing_error_msg, f.scraper_rules, f.rewrite_rules, f.crawler, f.user_agent, - f.username, f.password, + f.username, f.password, f.disabled, f.category_id, c.title as category_title, fi.icon_id, u.timezone @@ -160,6 +161,7 @@ func (s *Storage) FeedByID(userID, feedID int64) (*model.Feed, error) { &feed.UserAgent, &feed.Username, &feed.Password, + &feed.Disabled, &feed.Category.ID, &feed.Category.Title, &iconID, @@ -185,8 +187,10 @@ func (s *Storage) FeedByID(userID, feedID int64) (*model.Feed, error) { func (s *Storage) CreateFeed(feed *model.Feed) error { sql := ` INSERT INTO feeds - (feed_url, site_url, title, category_id, user_id, etag_header, last_modified_header, crawler, user_agent, username, password) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) + (feed_url, site_url, title, category_id, user_id, etag_header, + last_modified_header, crawler, user_agent, username, password, + disabled) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) RETURNING id ` @@ -203,6 +207,7 @@ func (s *Storage) CreateFeed(feed *model.Feed) error { feed.UserAgent, feed.Username, feed.Password, + feed.Disabled, ).Scan(&feed.ID) if err != nil { return fmt.Errorf("unable to create feed %q: %v", feed.FeedURL, err) @@ -222,11 +227,27 @@ func (s *Storage) CreateFeed(feed *model.Feed) error { // UpdateFeed updates an existing feed. func (s *Storage) UpdateFeed(feed *model.Feed) (err error) { - query := `UPDATE feeds SET - feed_url=$1, site_url=$2, title=$3, category_id=$4, etag_header=$5, last_modified_header=$6, checked_at=$7, - parsing_error_msg=$8, parsing_error_count=$9, scraper_rules=$10, rewrite_rules=$11, crawler=$12, user_agent=$13, - username=$14, password=$15 - WHERE id=$16 AND user_id=$17` + query := ` + UPDATE feeds SET + feed_url=$1, + site_url=$2, + title=$3, + category_id=$4, + etag_header=$5, + last_modified_header=$6, + checked_at=$7, + parsing_error_msg=$8, + parsing_error_count=$9, + scraper_rules=$10, + rewrite_rules=$11, + crawler=$12, + user_agent=$13, + username=$14, + password=$15, + disabled=$16 + WHERE + id=$17 AND user_id=$18 + ` _, err = s.db.Exec(query, feed.FeedURL, @@ -244,6 +265,7 @@ func (s *Storage) UpdateFeed(feed *model.Feed) (err error) { feed.UserAgent, feed.Username, feed.Password, + feed.Disabled, feed.ID, feed.UserID, ) diff --git a/storage/job.go b/storage/job.go index e115533..c231c97 100644 --- a/storage/job.go +++ b/storage/job.go @@ -18,8 +18,9 @@ func (s *Storage) NewBatch(batchSize int) (jobs model.JobList, err error) { SELECT id, user_id FROM feeds - WHERE parsing_error_count < $1 - ORDER BY checked_at ASC LIMIT %d` + WHERE parsing_error_count < $1 AND disabled is false + ORDER BY checked_at ASC LIMIT %d + ` return s.fetchBatchRows(fmt.Sprintf(query, batchSize), maxParsingError) } @@ -32,8 +33,9 @@ func (s *Storage) NewUserBatch(userID int64, batchSize int) (jobs model.JobList, SELECT id, user_id FROM feeds - WHERE user_id=$1 - ORDER BY checked_at ASC LIMIT %d` + WHERE user_id=$1 AND disabled is false + ORDER BY checked_at ASC LIMIT %d + ` return s.fetchBatchRows(fmt.Sprintf(query, batchSize), userID) } -- cgit v1.2.3