TopHour,
TopSixHour,
TopTwelveHour,
+ TopThreeMonths,
+ TopSixMonths,
+ TopNineMonths,
}
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
| SortType::TopAll
| SortType::TopWeek
| SortType::TopYear
- | SortType::TopMonth => CommentSortType::Top,
+ | SortType::TopMonth
+ | SortType::TopThreeMonths
+ | SortType::TopSixMonths
+ | SortType::TopNineMonths => CommentSortType::Top,
}
}
.filter(post_aggregates::published.gt(now - 12.hours()))
.then_order_by(post_aggregates::score.desc())
.then_order_by(post_aggregates::published.desc()),
+ SortType::TopThreeMonths => query
+ .filter(post_aggregates::published.gt(now - 3.months()))
+ .then_order_by(post_aggregates::score.desc())
+ .then_order_by(post_aggregates::published.desc()),
+ SortType::TopSixMonths => query
+ .filter(post_aggregates::published.gt(now - 6.months()))
+ .then_order_by(post_aggregates::score.desc())
+ .then_order_by(post_aggregates::published.desc()),
+ SortType::TopNineMonths => query
+ .filter(post_aggregates::published.gt(now - 9.months()))
+ .then_order_by(post_aggregates::score.desc())
+ .then_order_by(post_aggregates::published.desc()),
};
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
SortType::TopTwelveHour => query
.filter(person::published.gt(now - 12.hours()))
.order_by(person_aggregates::comment_score.desc()),
+ SortType::TopThreeMonths => query
+ .filter(person::published.gt(now - 3.months()))
+ .order_by(person_aggregates::comment_score.desc()),
+ SortType::TopSixMonths => query
+ .filter(person::published.gt(now - 6.months()))
+ .order_by(person_aggregates::comment_score.desc()),
+ SortType::TopNineMonths => query
+ .filter(person::published.gt(now - 9.months()))
+ .order_by(person_aggregates::comment_score.desc()),
};
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
--- /dev/null
+-- update the default sort type
+update local_user set default_sort_type = 'TopDay' where default_sort_type in ('TopThreeMonths', 'TopSixMonths', 'TopNineMonths');
+
+-- rename the old enum
+alter type sort_type_enum rename to sort_type_enum__;
+-- create the new enum
+CREATE TYPE sort_type_enum AS ENUM ('Active', 'Hot', 'New', 'Old', 'TopDay', 'TopWeek', 'TopMonth', 'TopYear', 'TopAll', 'MostComments', 'NewComments');
+
+-- alter all you enum columns
+alter table local_user
+ alter column default_sort_type type sort_type_enum using default_sort_type::text::sort_type_enum;
+
+-- drop the old enum
+drop type sort_type_enum__;
--- /dev/null
+-- Update the enums
+ALTER TYPE sort_type_enum ADD VALUE 'TopThreeMonths';
+ALTER TYPE sort_type_enum ADD VALUE 'TopSixMonths';
+ALTER TYPE sort_type_enum ADD VALUE 'TopNineMonths';