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) | 		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,9 +322,34 @@ 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 { | ||||||
|  | 		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 { | 		if err != nil { | ||||||
| 			s.log.Print(err) | 			s.log.Print(err) | ||||||
| 			return | 			return | ||||||
| @@ -329,6 +360,7 @@ func (s *Storage) DeleteOldItems() { | |||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		if num > 0 { | 		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, |  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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user