let identifier = identifier.to_string();
Ok(
blocking(context.pool(), move |conn| {
- DbActor::read_from_name(conn, &identifier)
+ DbActor::read_from_name(conn, &identifier, false)
})
.await??,
)
context: web::Data<LemmyContext>,
) -> Result<HttpResponse, LemmyError> {
let community: ApubCommunity = blocking(context.pool(), move |conn| {
- Community::read_from_name(conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name, true)
})
.await??
.into();
context: web::Data<LemmyContext>,
) -> Result<HttpResponse, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name, false)
})
.await??;
let followers = GroupFollowers::new(community, &context).await?;
context: web::Data<LemmyContext>,
) -> Result<HttpResponse, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name, false)
})
.await??;
let id = ObjectId::new(generate_outbox_url(&community.actor_id)?);
context: web::Data<LemmyContext>,
) -> Result<HttpResponse, LemmyError> {
let community: ApubCommunity = blocking(context.pool(), move |conn| {
- Community::read_from_name(conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name, false)
})
.await??
.into();
let user_name = info.into_inner().user_name;
// TODO: this needs to be able to read deleted persons, so that it can send tombstones
let person: ApubPerson = blocking(context.pool(), move |conn| {
- Person::read_from_name(conn, &user_name)
+ Person::read_from_name(conn, &user_name, true)
})
.await??
.into();
context: web::Data<LemmyContext>,
) -> Result<HttpResponse, LemmyError> {
let person = blocking(context.pool(), move |conn| {
- Person::read_from_name(conn, &info.user_name)
+ Person::read_from_name(conn, &info.user_name, false)
})
.await??;
let outbox_id = generate_outbox_url(&person.actor_id)?.into();
)
}
- fn read_from_name(conn: &PgConnection, community_name: &str) -> Result<Community, Error> {
+ fn read_from_name(
+ conn: &PgConnection,
+ community_name: &str,
+ include_deleted: bool,
+ ) -> Result<Community, Error> {
use crate::schema::community::dsl::*;
- community
+ let mut q = community
+ .into_boxed()
.filter(local.eq(true))
- .filter(lower(name).eq(lower(community_name)))
- .first::<Self>(conn)
+ .filter(lower(name).eq(lower(community_name)));
+ if !include_deleted {
+ q = q.filter(deleted.eq(false)).filter(removed.eq(false));
+ }
+ q.first::<Self>(conn)
}
fn read_from_name_and_domain(
)
}
- fn read_from_name(conn: &PgConnection, from_name: &str) -> Result<Person, Error> {
- person
- .filter(deleted.eq(false))
+ fn read_from_name(
+ conn: &PgConnection,
+ from_name: &str,
+ include_deleted: bool,
+ ) -> Result<Person, Error> {
+ let mut q = person
+ .into_boxed()
.filter(local.eq(true))
- .filter(lower(name).eq(lower(from_name)))
- .first::<Person>(conn)
+ .filter(lower(name).eq(lower(from_name)));
+ if !include_deleted {
+ q = q.filter(deleted.eq(false))
+ }
+ q.first::<Self>(conn)
}
fn read_from_name_and_domain(
fn read_from_apub_id(conn: &PgConnection, object_id: &DbUrl) -> Result<Option<Self>, Error>
where
Self: Sized;
- fn read_from_name(conn: &PgConnection, actor_name: &str) -> Result<Self, Error>
+ /// - actor_name is the name of the community or user to read.
+ /// - include_deleted, if true, will return communities or users that were deleted/removed
+ fn read_from_name(
+ conn: &PgConnection,
+ actor_name: &str,
+ include_deleted: bool,
+ ) -> Result<Self, Error>
where
Self: Sized;
fn read_from_name_and_domain(
protocol_and_hostname: &str,
) -> Result<ChannelBuilder, LemmyError> {
let site_view = SiteView::read_local(conn)?;
- let person = Person::read_from_name(conn, user_name)?;
+ let person = Person::read_from_name(conn, user_name, false)?;
let posts = PostQueryBuilder::create(conn)
.listing_type(ListingType::All)
protocol_and_hostname: &str,
) -> Result<ChannelBuilder, LemmyError> {
let site_view = SiteView::read_local(conn)?;
- let community = Community::read_from_name(conn, community_name)?;
+ let community = Community::read_from_name(conn, community_name, false)?;
let posts = PostQueryBuilder::create(conn)
.listing_type(ListingType::Community)
let name_ = name.clone();
let user_id: Option<Url> = blocking(context.pool(), move |conn| {
- Person::read_from_name(conn, &name_)
+ Person::read_from_name(conn, &name_, false)
})
.await?
.ok()
.map(|c| c.actor_id.into());
let community_id: Option<Url> = blocking(context.pool(), move |conn| {
- Community::read_from_name(conn, &name)
+ Community::read_from_name(conn, &name, false)
})
.await?
.ok()