mirror of
https://github.com/nkanaev/yarr.git
synced 2026-06-10 02:13:21 +00:00
refactor feedstate + swap implementation
This commit is contained in:
@@ -8,14 +8,19 @@ import (
|
||||
type FeedState struct {
|
||||
FeedID int64
|
||||
LastRefreshed time.Time
|
||||
LastError *string
|
||||
LastError string
|
||||
HTTPLastModified string
|
||||
HTTPEtag string
|
||||
}
|
||||
|
||||
func (s *Storage) ListFeedStates() ([]FeedState, error) {
|
||||
rows, err := s.db.Query(`
|
||||
select feed_id, last_refreshed, last_modified, etag, last_error
|
||||
select
|
||||
feed_id
|
||||
, last_refreshed
|
||||
, last_error
|
||||
, http_lmod
|
||||
, http_etag
|
||||
from feed_states
|
||||
`)
|
||||
if err != nil {
|
||||
@@ -29,9 +34,9 @@ func (s *Storage) ListFeedStates() ([]FeedState, error) {
|
||||
err := rows.Scan(
|
||||
&state.FeedID,
|
||||
&state.LastRefreshed,
|
||||
&state.LastError,
|
||||
&state.HTTPLastModified,
|
||||
&state.HTTPEtag,
|
||||
&state.LastError,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -44,14 +49,19 @@ func (s *Storage) ListFeedStates() ([]FeedState, error) {
|
||||
func (s *Storage) GetFeedState(feedID int64) (*FeedState, error) {
|
||||
var state FeedState
|
||||
err := s.db.QueryRow(`
|
||||
select feed_id, last_refreshed, last_modified, etag, last_error
|
||||
select
|
||||
feed_id
|
||||
, last_refreshed
|
||||
, last_error
|
||||
, http_lmod
|
||||
, http_etag
|
||||
from feed_states where feed_id = :id
|
||||
`, sql.Named("id", feedID)).Scan(
|
||||
&state.FeedID,
|
||||
&state.LastRefreshed,
|
||||
&state.LastError,
|
||||
&state.HTTPLastModified,
|
||||
&state.HTTPEtag,
|
||||
&state.LastError,
|
||||
)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, nil
|
||||
@@ -79,28 +89,28 @@ func (s *Storage) UpdateFeedState(feedID int64, params UpdateFeedStateParams) (b
|
||||
insert into feed_states (
|
||||
feed_id
|
||||
, last_refreshed
|
||||
, last_modified
|
||||
, etag
|
||||
, last_error
|
||||
, http_lmod
|
||||
, http_etag
|
||||
)
|
||||
values (
|
||||
:id
|
||||
, coalesce(:refreshed, 0)
|
||||
, coalesce(:last_modified, '')
|
||||
, coalesce(:etag, '')
|
||||
, coalesce(:last_refreshed, 0)
|
||||
, coalesce(:last_error, '')
|
||||
, coalesce(:http_lmod, '')
|
||||
, coalesce(:http_etag, '')
|
||||
)
|
||||
on conflict (feed_id) do update set
|
||||
last_refreshed = coalesce(:refreshed, last_refreshed),
|
||||
last_modified = coalesce(:last_modified, last_modified),
|
||||
etag = coalesce(:etag, etag),
|
||||
last_error = coalesce(:last_error, last_error)
|
||||
last_refreshed = coalesce(:last_refreshed, last_refreshed),
|
||||
last_error = coalesce(:last_error, last_modified),
|
||||
http_lmod = coalesce(:http_lmod, http_lmod),
|
||||
http_etag = coalesce(:http_etag, http_etag)
|
||||
`,
|
||||
sql.Named("id", feedID),
|
||||
sql.Named("refreshed", params.LastRefreshed),
|
||||
sql.Named("last_modified", params.HTTPLastModified),
|
||||
sql.Named("etag", params.HTTPEtag),
|
||||
sql.Named("last_refreshed", params.LastRefreshed),
|
||||
sql.Named("last_error", params.LastError),
|
||||
sql.Named("http_lmod", params.HTTPLastModified),
|
||||
sql.Named("http_etag", params.HTTPEtag),
|
||||
)
|
||||
if err != nil {
|
||||
return false, err
|
||||
|
||||
Reference in New Issue
Block a user