33 lines
1.2 KiB
Markdown
33 lines
1.2 KiB
Markdown
|
# Database Cleanup
|
|||
|
|
|||
|
Old articles and statuses are removed after a certain period of time.
|
|||
|
|
|||
|
(This applies to the OnMyMac account only. Other syncing systems have their own rules, and the app should follow them.)
|
|||
|
|
|||
|
We do this so that the database doesn’t just grow forever. Because the bigger it gets, the slower it gets.
|
|||
|
|
|||
|
The cleanup process is run at app launch, before other reads and writes. It should be fast enough that it goes unnoticed by the user.
|
|||
|
|
|||
|
Articles are deleted first, then statuses.
|
|||
|
|
|||
|
## Articles
|
|||
|
|
|||
|
All articles whose feed is no longer in the subscriptions list are deleted.
|
|||
|
|
|||
|
A cut-off date of 4 * 31 days ago is calculated.
|
|||
|
|
|||
|
For the remaining articles, we go feed-by-feed.
|
|||
|
|
|||
|
If a feed has 20 or fewer articles, it’s left alone.
|
|||
|
|
|||
|
For each article (oldest first) delete until:
|
|||
|
The feed’s count of articles is down to 20,
|
|||
|
or the article is newer than the cut-off date.
|
|||
|
|
|||
|
The reason we preserve some articles that would otherwise be deleted: you want to be able to select a feed that hasn’t been updated in a year (or whatever long period of time) and still articles from that feed.
|
|||
|
|
|||
|
## Statuses
|
|||
|
|
|||
|
Statuses older than five months (see statuses.dateArrived) with no matching articleID in articles are deleted.
|
|||
|
|