use crate::structs::PostView;
use diesel::{
debug_query,
- dsl::*,
+ dsl::{now, IntervalDsl},
pg::Pg,
result::Error,
sql_function,
impl<'a> PostQuery<'a> {
pub async fn list(self) -> Result<Vec<PostView>, Error> {
- use diesel::dsl::*;
let conn = &mut get_conn(self.pool).await?;
// The left join below will return None in this case
}
}
}
-
- if let Some(community_id) = self.community_id {
+ if self.community_id.is_none() && self.community_actor_id.is_none() {
+ query = query.then_order_by(post_aggregates::featured_local.desc());
+ } else if let Some(community_id) = self.community_id {
query = query
.filter(post::community_id.eq(community_id))
- .then_order_by(post_aggregates::stickied.desc());
- }
-
- if let Some(community_actor_id) = self.community_actor_id {
+ .then_order_by(post_aggregates::featured_community.desc());
+ } else if let Some(community_actor_id) = self.community_actor_id {
query = query
.filter(community::actor_id.eq(community_actor_id))
- .then_order_by(post_aggregates::stickied.desc());
+ .then_order_by(post_aggregates::featured_community.desc());
}
if let Some(url_search) = self.url_search {
let searcher = fuzzy_search(&search_term);
query = query.filter(
post::name
- .ilike(searcher.to_owned())
+ .ilike(searcher.clone())
.or(post::body.ilike(searcher)),
);
}
newtypes::LanguageId,
source::{
actor_language::LocalUserLanguage,
- community::*,
+ community::{Community, CommunityInsertForm, CommunitySafe},
community_block::{CommunityBlock, CommunityBlockForm},
instance::Instance,
language::Language,
local_user::{LocalUser, LocalUserInsertForm, LocalUserUpdateForm},
- person::*,
+ person::{Person, PersonInsertForm, PersonSafe},
person_block::{PersonBlock, PersonBlockForm},
- post::*,
+ post::{Post, PostInsertForm, PostLike, PostLikeForm},
},
traits::{Blockable, Crud, Likeable},
utils::{build_db_pool_for_tests, DbPool},
let person_name = "tegan".to_string();
let new_person = PersonInsertForm::builder()
- .name(person_name.to_owned())
+ .name(person_name.clone())
.public_key("pubkey".to_string())
.instance_id(inserted_instance.id)
.build();
let local_user_form = LocalUserInsertForm::builder()
.person_id(inserted_person.id)
- .password_encrypted("".to_string())
+ .password_encrypted(String::new())
.build();
let inserted_local_user = LocalUser::create(pool, &local_user_form).await.unwrap();
removed: false,
deleted: false,
locked: false,
- stickied: false,
nsfw: false,
embed_title: None,
embed_description: None,
embed_video_url: None,
thumbnail_url: None,
- ap_id: inserted_post.ap_id.to_owned(),
+ ap_id: inserted_post.ap_id.clone(),
local: true,
language_id: LanguageId(47),
+ featured_community: false,
+ featured_local: false,
},
my_vote: None,
unread_comments: 0,
display_name: None,
published: inserted_person.published,
avatar: None,
- actor_id: inserted_person.actor_id.to_owned(),
+ actor_id: inserted_person.actor_id.clone(),
local: true,
admin: false,
bot_account: false,
bio: None,
banner: None,
updated: None,
- inbox_url: inserted_person.inbox_url.to_owned(),
+ inbox_url: inserted_person.inbox_url.clone(),
shared_inbox_url: None,
matrix_user_id: None,
ban_expires: None,
removed: false,
deleted: false,
nsfw: false,
- actor_id: inserted_community.actor_id.to_owned(),
+ actor_id: inserted_community.actor_id.clone(),
local: true,
title: "nada".to_owned(),
description: None,
score: 0,
upvotes: 0,
downvotes: 0,
- stickied: false,
published: agg.published,
newest_comment_time_necro: inserted_post.published,
newest_comment_time: inserted_post.published,
+ featured_community: false,
+ featured_local: false,
},
subscribed: SubscribedType::NotSubscribed,
read: false,