change item cleanup logic

This commit is contained in:
Nazar Kanaev 2020-08-11 10:55:42 +01:00
parent f1810827bc
commit 8ec1370845
2 changed files with 47 additions and 14 deletions

View File

@ -70,18 +70,24 @@ func (s *Storage) CreateItems(items []Item) bool {
s.log.Print(err)
return false
}
now := time.Now()
for _, item := range items {
_, err = tx.Exec(`
insert into items (
guid, feed_id, title, link, description,
content, author, date, date_updated, status, image
content, author,
date, date_updated, date_arrived,
status, image
)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
on conflict (guid) do update set date_updated=?`,
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
on conflict (guid) do update set
date_updated = ?, date_arrived = ?`,
item.GUID, item.FeedId, html.UnescapeString(item.Title), item.Link, item.Description,
item.Content, item.Author, item.Date, item.DateUpdated, UNREAD, item.Image,
item.Content, item.Author,
item.Date, item.DateUpdated, now,
UNREAD, item.Image,
// upsert values
item.DateUpdated,
item.DateUpdated, now,
)
if err != nil {
s.log.Print(err)
@ -316,9 +322,34 @@ func (s *Storage) SyncSearch() {
}
func (s *Storage) DeleteOldItems() {
result, err := s.db.Exec(
`delete from items where status = ? and date < ?`,
READ, time.Now().Add(-time.Hour*24*90) /* 90 days */)
rows, err := s.db.Query(fmt.Sprintf(`
select feed_id, count(*) as num_items
from items
where status != %d
group by feed_id
having num_items > 50
`, STARRED))
if err != nil {
s.log.Print(err)
return
}
feedIds := make([]int64, 0)
for rows.Next() {
var id int64
rows.Scan(&id, nil)
feedIds = append(feedIds, id)
}
s.log.Print(feedIds)
for _, feedId := range feedIds {
result, err := s.db.Exec(`
delete from items where feed_id = ? and status != ? and date_arrived < ?`,
feedId,
STARRED,
time.Now().Add(-time.Hour*24*90), // 90 days
)
if err != nil {
s.log.Print(err)
return
@ -329,6 +360,7 @@ func (s *Storage) DeleteOldItems() {
return
}
if num > 0 {
s.log.Printf("Deleted %d old items\n", num)
s.log.Printf("Deleted %d old items (%d)", num, feedId)
}
}
}

View File

@ -40,6 +40,7 @@ create table if not exists items (
author text,
date datetime,
date_updated datetime,
date_arrived datetime,
status integer,
image text,
search_rowid integer