mirror of
				https://github.com/nkanaev/yarr.git
				synced 2025-10-30 06:31:07 +00:00 
			
		
		
		
	change item cleanup logic
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user