Do not try to update a duplicated feed after a refresh

pull/803/head
Frédéric Guillot 4 years ago
parent e6c6ee441a
commit 0d0395b4e3
  1. 7
      reader/feed/handler.go
  2. 8
      storage/feed.go

@ -127,6 +127,13 @@ func (h *Handler) RefreshFeed(userID, feedID int64) error {
return requestErr
}
if h.store.AnotherFeedURLExists(userID, originalFeed.ID, response.EffectiveURL) {
storeErr := errors.NewLocalizedError(errDuplicate, response.EffectiveURL)
originalFeed.WithError(storeErr.Error())
h.store.UpdateFeedError(originalFeed)
return storeErr
}
if originalFeed.IgnoreHTTPCache || response.IsModified(originalFeed.EtagHeader, originalFeed.LastModifiedHeader) {
logger.Debug("[Handler:RefreshFeed] Feed #%d has been modified", feedID)

@ -68,6 +68,14 @@ func (s *Storage) FeedURLExists(userID int64, feedURL string) bool {
return result
}
// AnotherFeedURLExists checks if the user a duplicated feed.
func (s *Storage) AnotherFeedURLExists(userID, feedID int64, feedURL string) bool {
var result bool
query := `SELECT true FROM feeds WHERE id <> $1 AND user_id=$2 AND feed_url=$3`
s.db.QueryRow(query, feedID, userID, feedURL).Scan(&result)
return result
}
// CountFeeds returns the number of feeds that belongs to the given user.
func (s *Storage) CountFeeds(userID int64) int {
var result int

Loading…
Cancel
Save