mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 21:19:19 +00:00
change item cleanup logic
This commit is contained in:
parent
f1810827bc
commit
8ec1370845
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user