diff --git a/src/storage/item.go b/src/storage/item.go index 49772fe..aff7c0f 100644 --- a/src/storage/item.go +++ b/src/storage/item.go @@ -76,7 +76,7 @@ func (s *Storage) CreateItems(items []Item) bool { return false } - now := time.Now() + now := time.Now().UTC() for _, item := range items { _, err = tx.Exec(` @@ -85,7 +85,7 @@ func (s *Storage) CreateItems(items []Item) bool { content, image, podcast_url, date_arrived, status ) - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + values (?, ?, ?, ?, strftime('%Y-%m-%d %H:%M:%f', ?), ?, ?, ?, ?, ?) on conflict (feed_id, guid) do nothing`, item.GUID, item.FeedId, item.Title, item.Link, item.Date, item.Content, item.ImageURL, item.AudioURL, @@ -343,7 +343,7 @@ func (s *Storage) DeleteOldItems() { feedId, STARRED, limit, - time.Now().Add(-time.Hour*time.Duration(24*itemsKeepDays)), + time.Now().UTC().Add(-time.Hour*time.Duration(24*itemsKeepDays)), ) if err != nil { log.Print(err) diff --git a/src/storage/item_test.go b/src/storage/item_test.go index cfe5975..dd3cb80 100644 --- a/src/storage/item_test.go +++ b/src/storage/item_test.go @@ -276,7 +276,7 @@ func TestMarkItemsRead(t *testing.T) { func TestDeleteOldItems(t *testing.T) { extraItems := 10 - now := time.Now() + now := time.Now().UTC() db := testDB() feed := db.CreateFeed("feed", "", "", "http://test.com/feed11.xml", nil) diff --git a/src/storage/migration.go b/src/storage/migration.go index ab12de1..9646a97 100644 --- a/src/storage/migration.go +++ b/src/storage/migration.go @@ -4,6 +4,7 @@ import ( "database/sql" "fmt" "log" + "time" ) var migrations = []func(*sql.Tx) error{ @@ -14,6 +15,7 @@ var migrations = []func(*sql.Tx) error{ m05_move_description_to_content, m06_fill_missing_dates, m07_add_feed_size, + m08_normalize_datetime, } var maxVersion = int64(len(migrations)) @@ -271,3 +273,24 @@ func m07_add_feed_size(tx *sql.Tx) error { _, err := tx.Exec(sql) return err } + +func m08_normalize_datetime(tx *sql.Tx) error { + rows, err := tx.Query(`select id, date_arrived from items;`) + if err != nil { + return err + } + for rows.Next() { + var id int64 + var dateArrived time.Time + err = rows.Scan(&id, &dateArrived) + if err != nil { + return err + } + _, err = tx.Exec(`update items set date_arrived = ? where id = ?;`, dateArrived.UTC(), id) + if err != nil { + return err + } + } + _, err = tx.Exec(`update items set date = strftime('%Y-%m-%d %H:%M:%f', date);`) + return err +}