support sort by n_attention
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
-- This file should undo anything in `up.sql`
|
||||
DROP INDEX posts_attention_idx
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Your SQL goes here
|
||||
CREATE INDEX posts_attention_idx ON posts (n_attentions)
|
||||
@@ -216,6 +216,7 @@ impl PostListCache {
|
||||
1 => -p.last_comment_time.timestamp(),
|
||||
2 => (-p.hot_score).into(),
|
||||
3 => rand::thread_rng().gen_range(0..i64::MAX),
|
||||
4 => (-p.n_attentions).into(),
|
||||
_ => panic!("wrong mode"),
|
||||
},
|
||||
p.id,
|
||||
|
||||
@@ -256,6 +256,10 @@ impl Post {
|
||||
query = query.filter(posts::is_reported.eq(false));
|
||||
}
|
||||
|
||||
if order_mode == 1 {
|
||||
query = query.filter(posts::n_comments.gt(0));
|
||||
}
|
||||
|
||||
if let Some(ri) = room_id {
|
||||
query = query.filter(posts::room_id.eq(ri));
|
||||
}
|
||||
@@ -265,6 +269,7 @@ impl Post {
|
||||
1 => query.order(posts::last_comment_time.desc()),
|
||||
2 => query.order(posts::hot_score.desc()),
|
||||
3 => query.order(RANDOM),
|
||||
4 => query.order(posts::n_attentions.desc()),
|
||||
_ => panic!("Wrong order mode!"),
|
||||
};
|
||||
|
||||
@@ -351,7 +356,7 @@ impl Post {
|
||||
pub async fn refresh_cache(&self, rconn: &RdsConn, is_new: bool) {
|
||||
join!(
|
||||
self.set_instance_cache(rconn),
|
||||
future::join_all((if is_new { 0..4 } else { 1..4 }).map(|mode| async move {
|
||||
future::join_all((if is_new { 0..5 } else { 1..5 }).map(|mode| async move {
|
||||
PostListCache::init(None, mode, &rconn.clone())
|
||||
.put(self)
|
||||
.await;
|
||||
|
||||
@@ -45,4 +45,8 @@ table! {
|
||||
|
||||
joinable!(comments -> posts (post_id));
|
||||
|
||||
allow_tables_to_appear_in_same_query!(comments, posts, users,);
|
||||
allow_tables_to_appear_in_same_query!(
|
||||
comments,
|
||||
posts,
|
||||
users,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user