mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
store feed errors
This commit is contained in:
parent
6a6153ca48
commit
99684a4b2f
@ -103,6 +103,7 @@ func (h *Handler) startJobs() {
|
||||
atomic.AddInt32(h.queueSize, -1)
|
||||
if err != nil {
|
||||
h.log.Printf("Failed to fetch %s (%d): %s", feed.FeedLink, feed.Id, err)
|
||||
h.db.SetFeedError(feed.Id, err)
|
||||
continue
|
||||
}
|
||||
h.db.CreateItems(items)
|
||||
@ -168,6 +169,7 @@ func (h Handler) requiresAuth() bool {
|
||||
|
||||
func (h *Handler) fetchAllFeeds() {
|
||||
h.log.Print("Refreshing all feeds")
|
||||
h.db.ResetFeedErrors()
|
||||
for _, feed := range h.db.ListFeeds() {
|
||||
h.fetchFeed(feed)
|
||||
}
|
||||
|
@ -132,3 +132,21 @@ func (s *Storage) GetFeed(id int64) *Feed {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Storage) ResetFeedErrors() {
|
||||
if _, err := s.db.Exec(`delete from feed_errors`); err != nil {
|
||||
s.log.Print(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Storage) SetFeedError(feedID int64, lastError error) {
|
||||
_, err := s.db.Exec(`
|
||||
insert into feed_errors (feed_id, error)
|
||||
values (?, ?)
|
||||
on conflict (feed_id) do update set error = excluded.error`,
|
||||
feedID, lastError.Error(),
|
||||
)
|
||||
if err != nil {
|
||||
s.log.Print(err)
|
||||
}
|
||||
}
|
||||
|
@ -65,12 +65,16 @@ end;
|
||||
create table if not exists http_states (
|
||||
feed_id references feeds(id) unique,
|
||||
last_refreshed datetime not null,
|
||||
last_error string,
|
||||
|
||||
-- http header fields --
|
||||
last_modified string not null,
|
||||
etag string not null
|
||||
);
|
||||
|
||||
create table if not exists feed_errors (
|
||||
feed_id references feeds(id) unique,
|
||||
error string
|
||||
);
|
||||
`
|
||||
|
||||
type Storage struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user