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)
|
s.log.Print(err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
now := time.Now()
|
||||||
for _, item := range items {
|
for _, item := range items {
|
||||||
_, err = tx.Exec(`
|
_, err = tx.Exec(`
|
||||||
insert into items (
|
insert into items (
|
||||||
guid, feed_id, title, link, description,
|
guid, feed_id, title, link, description,
|
||||||
content, author, date, date_updated, status, image
|
content, author,
|
||||||
|
date, date_updated, date_arrived,
|
||||||
|
status, image
|
||||||
)
|
)
|
||||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
on conflict (guid) do update set date_updated=?`,
|
on conflict (guid) do update set
|
||||||
|
date_updated = ?, date_arrived = ?`,
|
||||||
item.GUID, item.FeedId, html.UnescapeString(item.Title), item.Link, item.Description,
|
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
|
// upsert values
|
||||||
item.DateUpdated,
|
item.DateUpdated, now,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.log.Print(err)
|
s.log.Print(err)
|
||||||
@ -316,19 +322,45 @@ func (s *Storage) SyncSearch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Storage) DeleteOldItems() {
|
func (s *Storage) DeleteOldItems() {
|
||||||
result, err := s.db.Exec(
|
rows, err := s.db.Query(fmt.Sprintf(`
|
||||||
`delete from items where status = ? and date < ?`,
|
select feed_id, count(*) as num_items
|
||||||
READ, time.Now().Add(-time.Hour*24*90) /* 90 days */)
|
from items
|
||||||
|
where status != %d
|
||||||
|
group by feed_id
|
||||||
|
having num_items > 50
|
||||||
|
`, STARRED))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.log.Print(err)
|
s.log.Print(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
num, err := result.RowsAffected()
|
|
||||||
if err != nil {
|
feedIds := make([]int64, 0)
|
||||||
s.log.Print(err)
|
for rows.Next() {
|
||||||
return
|
var id int64
|
||||||
|
rows.Scan(&id, nil)
|
||||||
|
feedIds = append(feedIds, id)
|
||||||
}
|
}
|
||||||
if num > 0 {
|
s.log.Print(feedIds)
|
||||||
s.log.Printf("Deleted %d old items\n", num)
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
num, err := result.RowsAffected()
|
||||||
|
if err != nil {
|
||||||
|
s.log.Print(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if num > 0 {
|
||||||
|
s.log.Printf("Deleted %d old items (%d)", num, feedId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ create table if not exists items (
|
|||||||
author text,
|
author text,
|
||||||
date datetime,
|
date datetime,
|
||||||
date_updated datetime,
|
date_updated datetime,
|
||||||
|
date_arrived datetime,
|
||||||
status integer,
|
status integer,
|
||||||
image text,
|
image text,
|
||||||
search_rowid integer
|
search_rowid integer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user