Compare commits

..

2 Commits

Author SHA1 Message Date
Thanh Nguyen
b6d53e5807
Merge 9740e5ee1209df17009c0012ca4959d90f0b1a58 into a895145586ad299bcd4072897f4fcd95fd0f69b9 2023-10-01 00:25:37 +02:00
Nazar Kanaev
a895145586 sort articles before storing 2023-09-30 23:19:58 +01:00
2 changed files with 25 additions and 1 deletions

View File

@ -5,6 +5,7 @@
- (fix) relative article links (thanks to @adazsko for the report)
- (fix) atom article links stored in id element (thanks to @adazsko for the report)
- (fix) parsing atom feed titles (thanks to @wnh)
- (fix) sorting same-day batch articles (thanks to @lamescholar for the report)
# v2.4 (2023-08-15)

View File

@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"log"
"sort"
"strings"
"time"
@ -75,6 +76,25 @@ type MarkFilter struct {
Before *time.Time
}
type ItemList []Item
func (list ItemList) Len() int {
return len(list)
}
func (list ItemList) SortKey(i int) string {
return list[i].Date.Format(time.RFC3339) + "::" + list[i].GUID
}
func (list ItemList) Less(i, j int) bool {
return list.SortKey(i) < list.SortKey(j)
}
func (list ItemList) Swap(i, j int) {
list[i], list[j] = list[j], list[i]
}
func (s *Storage) CreateItems(items []Item) bool {
tx, err := s.db.Begin()
if err != nil {
@ -84,7 +104,10 @@ func (s *Storage) CreateItems(items []Item) bool {
now := time.Now().UTC()
for _, item := range items {
itemsSorted := ItemList(items)
sort.Sort(itemsSorted)
for _, item := range itemsSorted {
_, err = tx.Exec(`
insert into items (
guid, feed_id, title, link, date,