Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jangernert/FeedReader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrendan Long <self@brendanlong.com>2019-05-27 22:46:57 +0300
committerBrendan Long <self@brendanlong.com>2019-05-27 22:57:26 +0300
commitefe36f89b49812e750b1a0c5493c7b88d2386da9 (patch)
tree925b2d4949a90da731e5e030fcbd8fd6fbbb8377 /src
parent9ea9b37d9077e1abeb00a263ad1bf672e9fe9844 (diff)
Fix delete old articles logic
- Fix double-negative in delete query - Change logic to use days instead of weeks - Use to_start_date() consistently
Diffstat (limited to 'src')
-rw-r--r--src/Backend/FeedServer.vala6
-rw-r--r--src/DataBaseWriteAccess.vala8
-rw-r--r--src/Enums.vala24
3 files changed, 19 insertions, 19 deletions
diff --git a/src/Backend/FeedServer.vala b/src/Backend/FeedServer.vala
index f12baa90..76600454 100644
--- a/src/Backend/FeedServer.vala
+++ b/src/Backend/FeedServer.vala
@@ -279,10 +279,10 @@ public class FeedReader.FeedServer : GLib.Object {
Notification.send(newArticles, new_and_unread);
}
- var drop_weeks = drop_articles.to_weeks();
- if(drop_weeks != null)
+ var article_max_age_days = drop_articles.to_days();
+ if(article_max_age_days != null)
{
- db.dropOldArticles(-(int)drop_weeks);
+ db.dropOldArticles(article_max_age_days);
}
int last_modified = db.getLastModified();
diff --git a/src/DataBaseWriteAccess.vala b/src/DataBaseWriteAccess.vala
index 26274b7f..cfae9673 100644
--- a/src/DataBaseWriteAccess.vala
+++ b/src/DataBaseWriteAccess.vala
@@ -83,12 +83,12 @@ public class FeedReader.DataBase : DataBaseReadOnly {
Settings.state().set_int("last-spring-cleaning", (int)now.to_unix());
}
- public void dropOldArticles(int weeks)
+ public void dropOldArticles(int max_age_days)
{
var query = new QueryBuilder(QueryType.SELECT, "main.articles");
query.select_field("articleID");
query.select_field("feedID");
- query.where("datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-%i days')".printf(weeks*7));
+ query.where(@"datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-$(max_age_days) days')");
query.where_equal_int("marked", ArticleStatus.UNMARKED.to_int());
if(FeedServer.get_default().useMaxArticles())
{
@@ -456,6 +456,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
assert (guidHash_position > 0);
assert (modified_position > 0);
+ DateTime? drop_date = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_start_date();
foreach(var article in articles)
{
// if article time is in the future
@@ -465,8 +466,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
article.SetDate(now);
}
- int? weeks = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_weeks();
- if(weeks != null && article.getDate().compare(now.add_weeks(-(int)weeks)) == -1)
+ if(drop_date != null && article.getDate().compare(drop_date) == -1)
{
Logger.info("Ignoring old article: %s".printf(article.getTitle()));
continue;
diff --git a/src/Enums.vala b/src/Enums.vala
index 1fe545f9..9212e7f9 100644
--- a/src/Enums.vala
+++ b/src/Enums.vala
@@ -177,32 +177,32 @@ namespace FeedReader {
ONE_MONTH,
SIX_MONTHS;
- public int? to_weeks()
+ public int? to_days()
{
switch(this)
{
- case NEVER:
+ case NEVER:
return null;
- case ONE_WEEK:
- return 1;
- case ONE_MONTH:
- return 4;
- case SIX_MONTHS:
- return 24;
- default:
+ case ONE_WEEK:
+ return 7;
+ case ONE_MONTH:
+ return 31;
+ case SIX_MONTHS:
+ return 186;
+ default:
assert_not_reached();
}
}
public DateTime? to_start_date()
{
- int? weeks = to_weeks();
- if(weeks == null)
+ int? days = to_days();
+ if(days == null)
{
return null;
}
- return new DateTime.now_utc().add_weeks(-(int)weeks);
+ return new DateTime.now_utc().add_days(-(int)days);
}
}