mirror of
https://github.com/LemmyNet/lemmy
synced 2024-11-10 06:54:12 +00:00
Feature add hours as sorting options backend (#3161)
* add hours as sorting options * ran cargo +nightly fmt * woodpicker trigger
This commit is contained in:
parent
dc36d9ed89
commit
4d160461ce
6 changed files with 46 additions and 1 deletions
|
@ -59,6 +59,9 @@ pub enum SortType {
|
||||||
TopAll,
|
TopAll,
|
||||||
MostComments,
|
MostComments,
|
||||||
NewComments,
|
NewComments,
|
||||||
|
TopHour,
|
||||||
|
TopSixHour,
|
||||||
|
TopTwelveHour,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
||||||
|
|
|
@ -196,7 +196,10 @@ pub fn post_to_comment_sort_type(sort: SortType) -> CommentSortType {
|
||||||
SortType::Active | SortType::Hot => CommentSortType::Hot,
|
SortType::Active | SortType::Hot => CommentSortType::Hot,
|
||||||
SortType::New | SortType::NewComments | SortType::MostComments => CommentSortType::New,
|
SortType::New | SortType::NewComments | SortType::MostComments => CommentSortType::New,
|
||||||
SortType::Old => CommentSortType::Old,
|
SortType::Old => CommentSortType::Old,
|
||||||
SortType::TopDay
|
SortType::TopHour
|
||||||
|
| SortType::TopSixHour
|
||||||
|
| SortType::TopTwelveHour
|
||||||
|
| SortType::TopDay
|
||||||
| SortType::TopAll
|
| SortType::TopAll
|
||||||
| SortType::TopWeek
|
| SortType::TopWeek
|
||||||
| SortType::TopYear
|
| SortType::TopYear
|
||||||
|
|
|
@ -414,6 +414,18 @@ impl<'a> PostQuery<'a> {
|
||||||
.filter(post_aggregates::published.gt(now - 1.days()))
|
.filter(post_aggregates::published.gt(now - 1.days()))
|
||||||
.then_order_by(post_aggregates::score.desc())
|
.then_order_by(post_aggregates::score.desc())
|
||||||
.then_order_by(post_aggregates::published.desc()),
|
.then_order_by(post_aggregates::published.desc()),
|
||||||
|
SortType::TopHour => query
|
||||||
|
.filter(post_aggregates::published.gt(now - 1.hours()))
|
||||||
|
.then_order_by(post_aggregates::score.desc())
|
||||||
|
.then_order_by(post_aggregates::published.desc()),
|
||||||
|
SortType::TopSixHour => query
|
||||||
|
.filter(post_aggregates::published.gt(now - 6.hours()))
|
||||||
|
.then_order_by(post_aggregates::score.desc())
|
||||||
|
.then_order_by(post_aggregates::published.desc()),
|
||||||
|
SortType::TopTwelveHour => query
|
||||||
|
.filter(post_aggregates::published.gt(now - 12.hours()))
|
||||||
|
.then_order_by(post_aggregates::score.desc())
|
||||||
|
.then_order_by(post_aggregates::published.desc()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
|
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
|
||||||
|
|
|
@ -113,6 +113,15 @@ impl<'a> PersonQuery<'a> {
|
||||||
SortType::TopDay => query
|
SortType::TopDay => query
|
||||||
.filter(person::published.gt(now - 1.days()))
|
.filter(person::published.gt(now - 1.days()))
|
||||||
.order_by(person_aggregates::comment_score.desc()),
|
.order_by(person_aggregates::comment_score.desc()),
|
||||||
|
SortType::TopHour => query
|
||||||
|
.filter(person::published.gt(now - 1.hours()))
|
||||||
|
.order_by(person_aggregates::comment_score.desc()),
|
||||||
|
SortType::TopSixHour => query
|
||||||
|
.filter(person::published.gt(now - 6.hours()))
|
||||||
|
.order_by(person_aggregates::comment_score.desc()),
|
||||||
|
SortType::TopTwelveHour => query
|
||||||
|
.filter(person::published.gt(now - 12.hours()))
|
||||||
|
.order_by(person_aggregates::comment_score.desc()),
|
||||||
};
|
};
|
||||||
|
|
||||||
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
|
let (limit, offset) = limit_and_offset(self.page, self.limit)?;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- update the default sort type
|
||||||
|
update local_user set default_sort_type = 'TopDay' where default_sort_type in ('TopHour', 'TopSixHour', 'TopTwelveHour');
|
||||||
|
|
||||||
|
-- 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__;
|
|
@ -0,0 +1,4 @@
|
||||||
|
-- Update the enums
|
||||||
|
ALTER TYPE sort_type_enum ADD VALUE 'TopHour';
|
||||||
|
ALTER TYPE sort_type_enum ADD VALUE 'TopSixHour';
|
||||||
|
ALTER TYPE sort_type_enum ADD VALUE 'TopTwelveHour';
|
Loading…
Reference in a new issue