fever api feed last_updated_on_time

This commit is contained in:
Nazar Kanaev 2020-11-01 15:44:41 +00:00
parent 60a947f131
commit e4cc96ef09
2 changed files with 43 additions and 15 deletions

View File

@ -39,7 +39,7 @@ type FeverFeed struct {
Url string `json:"url"` Url string `json:"url"`
SiteUrl string `json:"site_url"` SiteUrl string `json:"site_url"`
IsSpark int `json:"is_spark"` IsSpark int `json:"is_spark"`
LastUpdatedOnTime int64 `json:"last_updated_on_time"` LastUpdated int64 `json:"last_updated_on_time"`
} }
type FeverItem struct { type FeverItem struct {
@ -128,10 +128,14 @@ func FeverGroupsHandler(rw http.ResponseWriter, req *http.Request) {
func FeverFeedsHandler(rw http.ResponseWriter, req *http.Request) { func FeverFeedsHandler(rw http.ResponseWriter, req *http.Request) {
feeds := db(req).ListFeeds() feeds := db(req).ListFeeds()
httpStates := db(req).ListHTTPStates()
feverFeeds := make([]*FeverFeed, len(feeds)) feverFeeds := make([]*FeverFeed, len(feeds))
for i, feed := range feeds { for i, feed := range feeds {
// TODO: check url/siteurl var lastUpdated int64
if state, ok := httpStates[feed.Id]; ok {
lastUpdated = state.LastRefreshed.Unix()
}
// TODO: store last updated on time? // TODO: store last updated on time?
feverFeeds[i] = &FeverFeed{ feverFeeds[i] = &FeverFeed{
ID: feed.Id, ID: feed.Id,
@ -140,7 +144,7 @@ func FeverFeedsHandler(rw http.ResponseWriter, req *http.Request) {
Url: feed.FeedLink, Url: feed.FeedLink,
SiteUrl: feed.Link, SiteUrl: feed.Link,
IsSpark: 0, IsSpark: 0,
LastUpdatedOnTime: 1, LastUpdated: lastUpdated,
} }
} }
writeFeverJSON(rw, map[string]interface{}{ writeFeverJSON(rw, map[string]interface{}{

View File

@ -12,6 +12,30 @@ type HTTPState struct {
Etag string Etag string
} }
func (s *Storage) ListHTTPStates() map[int64]HTTPState {
result := make(map[int64]HTTPState)
rows, err := s.db.Query(`select feed_id, last_refreshed, last_modified, etag from http_states`)
if err != nil {
s.log.Print(err)
return result
}
for rows.Next() {
var state HTTPState
err = rows.Scan(
&state.FeedID,
&state.LastRefreshed,
&state.LastModified,
&state.Etag,
)
if err != nil {
s.log.Print(err)
return result
}
result[state.FeedID] = state
}
return result
}
func (s *Storage) GetHTTPState(feedID int64) *HTTPState { func (s *Storage) GetHTTPState(feedID int64) *HTTPState {
row := s.db.QueryRow(` row := s.db.QueryRow(`
select feed_id, last_refreshed, last_modified, etag select feed_id, last_refreshed, last_modified, etag