mirror of
https://github.com/zoriya/vex.git
synced 2026-05-31 01:35:32 +00:00
Use etags, fetch dates and save errors
This commit is contained in:
@@ -18,6 +18,7 @@ type Feed struct {
|
||||
SubmitterId uuid.UUID `json:"submitterId"`
|
||||
Submitter *User `json:"submitter,omitempty"`
|
||||
AddedDate time.Time `json:"addedDate"`
|
||||
SyncErorr *string `json:"syncError,omitempty"`
|
||||
etag string
|
||||
lastFetchDate *time.Time
|
||||
}
|
||||
@@ -31,6 +32,7 @@ type FeedDao struct {
|
||||
SubmitterId uuid.UUID `db:"submitter_id"`
|
||||
Submitter *User `db:"submitter"`
|
||||
AddedDate time.Time `db:"added_date"`
|
||||
SyncErorr *string `db:"sync_error"`
|
||||
Etag string
|
||||
LastFetchDate *time.Time `db:"last_fetch_date"`
|
||||
}
|
||||
@@ -119,3 +121,29 @@ func (s FeedService) ListFeeds() ([]Feed, error) {
|
||||
}
|
||||
return Map(ret, func(f FeedDao, _ int) Feed { return f.ToFeed() }), nil
|
||||
}
|
||||
|
||||
func (s FeedService) UpdateSyncStatus(id uuid.UUID, etag string, lastFetchDate *time.Time) error {
|
||||
_, err := s.database.NamedExec(
|
||||
`update feeds set etag = :etag, last_fetch_date = :date, sync_error = :err
|
||||
where id = :id`,
|
||||
map[string]interface{}{
|
||||
"id": id,
|
||||
"etag": etag,
|
||||
"date": lastFetchDate,
|
||||
"err": nil,
|
||||
},
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s FeedService) SaveSyncError(id uuid.UUID, error error) error {
|
||||
_, err := s.database.NamedExec(
|
||||
`update feeds set sync_error = :err
|
||||
where id = :i`,
|
||||
map[string]interface{}{
|
||||
"id": id,
|
||||
"err": error.Error(),
|
||||
},
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
+2
-3
@@ -55,8 +55,7 @@ func (s SyncService) SyncFeed(feed Feed) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// TODO: update etag and last fetch date of feed
|
||||
return nil
|
||||
return s.feeds.UpdateSyncStatus(feed.Id, info.ETag, &info.LastModified)
|
||||
}
|
||||
|
||||
func (s SyncService) SyncFeeds() error {
|
||||
@@ -69,7 +68,7 @@ func (s SyncService) SyncFeeds() error {
|
||||
err := s.SyncFeed(feed)
|
||||
if err != nil {
|
||||
log.Printf("Could not sync feed %v: %v", feed.Link, err)
|
||||
// TODO: s.feeds.SaveError(feed.Id, err)
|
||||
s.feeds.SaveSyncError(feed.Id, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user