diff --git a/crates/api_common/src/tagline.rs b/crates/api_common/src/tagline.rs index 4728d0cbb..332a838c2 100644 --- a/crates/api_common/src/tagline.rs +++ b/crates/api_common/src/tagline.rs @@ -1,4 +1,4 @@ -use lemmy_db_views::structs::TaglineView; +use lemmy_db_schema::source::tagline::Tagline; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; #[cfg(feature = "full")] @@ -9,7 +9,7 @@ use ts_rs::TS; #[cfg_attr(feature = "full", ts(export))] /// A response for custom emojis. pub struct ListTaglinesResponse { - pub taglines: Vec, + pub taglines: Vec, } #[skip_serializing_none] diff --git a/crates/api_crud/src/tagline/list.rs b/crates/api_crud/src/tagline/list.rs index 22deeeb61..d8f067ef1 100644 --- a/crates/api_crud/src/tagline/list.rs +++ b/crates/api_crud/src/tagline/list.rs @@ -3,7 +3,8 @@ use lemmy_api_common::{ context::LemmyContext, tagline::{ListTaglines, ListTaglinesResponse}, }; -use lemmy_db_views::structs::{LocalUserView, SiteView, TaglineView}; +use lemmy_db_schema::source::tagline::Tagline; +use lemmy_db_views::structs::{LocalUserView, SiteView}; use lemmy_utils::error::LemmyError; #[tracing::instrument(skip(context))] @@ -13,14 +14,13 @@ pub async fn list_taglines( context: Data, ) -> Result, LemmyError> { let local_site = SiteView::read_local(&mut context.pool()).await?; - let taglines = TaglineView::list( + let taglines = Tagline::list( &mut context.pool(), local_site.local_site.id, data.page, data.limit, ) - .await - .map_err(|e| anyhow::anyhow!("Failed to construct taglines response: {e}"))?; + .await?; Ok(Json(ListTaglinesResponse { taglines })) } diff --git a/crates/db_schema/src/impls/tagline.rs b/crates/db_schema/src/impls/tagline.rs index be4860e17..94faee249 100644 --- a/crates/db_schema/src/impls/tagline.rs +++ b/crates/db_schema/src/impls/tagline.rs @@ -1,8 +1,8 @@ use crate::{ newtypes::LocalSiteId, - schema::tagline::dsl::{local_site_id, tagline}, + schema::tagline::dsl::{local_site_id, published, tagline}, source::tagline::{Tagline, TaglineForm}, - utils::{get_conn, DbPool}, + utils::{get_conn, limit_and_offset, DbPool}, }; use diesel::{insert_into, result::Error, ExpressionMethods, QueryDsl}; use diesel_async::{AsyncPgConnection, RunQueryDsl}; @@ -55,4 +55,21 @@ impl Tagline { .get_results::(conn) .await } + + pub async fn list( + pool: &mut DbPool<'_>, + for_local_site_id: LocalSiteId, + page: Option, + limit: Option, + ) -> Result, Error> { + let conn = &mut get_conn(pool).await?; + let (limit, offset) = limit_and_offset(page, limit)?; + tagline + .order(published.desc()) + .offset(offset) + .limit(limit) + .filter(local_site_id.eq(for_local_site_id)) + .get_results::(conn) + .await + } } diff --git a/crates/db_views/src/lib.rs b/crates/db_views/src/lib.rs index 6cc951c86..73310d743 100644 --- a/crates/db_views/src/lib.rs +++ b/crates/db_views/src/lib.rs @@ -23,6 +23,4 @@ pub mod registration_application_view; pub mod site_view; pub mod structs; #[cfg(feature = "full")] -pub mod tagline_view; -#[cfg(feature = "full")] pub mod vote_view; diff --git a/crates/db_views/src/structs.rs b/crates/db_views/src/structs.rs index f9ad4dcd3..a290ca4a1 100644 --- a/crates/db_views/src/structs.rs +++ b/crates/db_views/src/structs.rs @@ -19,7 +19,6 @@ use lemmy_db_schema::{ private_message_report::PrivateMessageReport, registration_application::RegistrationApplication, site::Site, - tagline::Tagline, }, SubscribedType, }; @@ -194,15 +193,6 @@ pub struct SiteView { pub counts: SiteAggregates, } -#[derive(Debug, Serialize, Deserialize, Clone)] -#[cfg_attr(feature = "full", derive(TS, Queryable))] -#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))] -#[cfg_attr(feature = "full", ts(export))] -/// A custom emoji view. -pub struct TaglineView { - pub tagline: Tagline, -} - #[derive(Debug, Serialize, Deserialize, Clone)] #[cfg_attr(feature = "full", derive(TS, Queryable))] #[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))] diff --git a/crates/db_views/src/tagline_view.rs b/crates/db_views/src/tagline_view.rs deleted file mode 100644 index 954460c58..000000000 --- a/crates/db_views/src/tagline_view.rs +++ /dev/null @@ -1,38 +0,0 @@ -use crate::structs::TaglineView; -use diesel::{result::Error, ExpressionMethods, QueryDsl}; -use diesel_async::RunQueryDsl; -use lemmy_db_schema::{ - newtypes::LocalSiteId, - schema::tagline, - source::tagline::Tagline, - utils::{get_conn, limit_and_offset, DbPool}, -}; - -impl TaglineView { - pub async fn list( - pool: &mut DbPool<'_>, - for_local_site_id: LocalSiteId, - page: Option, - limit: Option, - ) -> Result, Error> { - let conn = &mut get_conn(pool).await?; - let (limit, offset) = limit_and_offset(page, limit)?; - let taglines = tagline::table - .filter(tagline::local_site_id.eq(for_local_site_id)) - .order(tagline::id) - .select(tagline::all_columns) - .limit(limit) - .offset(offset) - .load::(conn) - .await?; - - let mut result = Vec::new(); - for tagline in &taglines { - result.push(TaglineView { - tagline: tagline.clone(), - }); - } - - Ok(result) - } -}