From f1b993f90ed262b20e03bde4ed4233afd11695d0 Mon Sep 17 00:00:00 2001 From: Freakazoid182 <> Date: Thu, 4 Apr 2024 23:07:51 +0200 Subject: [PATCH] Get random tagline on site requets --- crates/api/src/site/leave_admin.rs | 3 +++ crates/api_common/src/site.rs | 2 ++ crates/api_crud/src/site/read.rs | 3 +++ crates/db_schema/src/impls/tagline.rs | 17 ++++++++++++++++- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/api/src/site/leave_admin.rs b/crates/api/src/site/leave_admin.rs index 2ca010761..297c84084 100644 --- a/crates/api/src/site/leave_admin.rs +++ b/crates/api/src/site/leave_admin.rs @@ -7,6 +7,7 @@ use lemmy_db_schema::{ local_site_url_blocklist::LocalSiteUrlBlocklist, local_user::{LocalUser, LocalUserUpdateForm}, moderator::{ModAdd, ModAddForm}, + tagline::Tagline, }, traits::Crud, }; @@ -60,6 +61,7 @@ pub async fn leave_admin( let all_languages = Language::read_all(&mut context.pool()).await?; let discussion_languages = SiteLanguage::read_local_raw(&mut context.pool()).await?; let blocked_urls = LocalSiteUrlBlocklist::get_all(&mut context.pool()).await?; + let tagline = Tagline::get_random(&mut context.pool(), site_view.local_site.id).await?; Ok(Json(GetSiteResponse { site_view, @@ -69,5 +71,6 @@ pub async fn leave_admin( all_languages, discussion_languages, blocked_urls, + tagline, })) } diff --git a/crates/api_common/src/site.rs b/crates/api_common/src/site.rs index e5ce3c2f8..7fae24783 100644 --- a/crates/api_common/src/site.rs +++ b/crates/api_common/src/site.rs @@ -7,6 +7,7 @@ use lemmy_db_schema::{ instance::Instance, language::Language, local_site_url_blocklist::LocalSiteUrlBlocklist, + tagline::Tagline, }, ListingType, ModlogActionType, @@ -298,6 +299,7 @@ pub struct GetSiteResponse { pub my_user: Option, pub all_languages: Vec, pub discussion_languages: Vec, + pub tagline: Option, pub blocked_urls: Vec, } diff --git a/crates/api_crud/src/site/read.rs b/crates/api_crud/src/site/read.rs index 637e85b8f..85a63a59e 100644 --- a/crates/api_crud/src/site/read.rs +++ b/crates/api_crud/src/site/read.rs @@ -7,6 +7,7 @@ use lemmy_db_schema::source::{ actor_language::{LocalUserLanguage, SiteLanguage}, language::Language, local_site_url_blocklist::LocalSiteUrlBlocklist, + tagline::Tagline, }; use lemmy_db_views::structs::{LocalUserView, SiteView}; use lemmy_db_views_actor::structs::{ @@ -45,6 +46,7 @@ pub async fn get_site( let all_languages = Language::read_all(&mut context.pool()).await?; let discussion_languages = SiteLanguage::read_local_raw(&mut context.pool()).await?; let blocked_urls = LocalSiteUrlBlocklist::get_all(&mut context.pool()).await?; + let tagline = Tagline::get_random(&mut context.pool(), site_view.local_site.id).await?; Ok(GetSiteResponse { site_view, admins, @@ -53,6 +55,7 @@ pub async fn get_site( all_languages, discussion_languages, blocked_urls, + tagline, }) }) .await diff --git a/crates/db_schema/src/impls/tagline.rs b/crates/db_schema/src/impls/tagline.rs index 9e28c62ad..1baabd9d1 100644 --- a/crates/db_schema/src/impls/tagline.rs +++ b/crates/db_schema/src/impls/tagline.rs @@ -4,7 +4,7 @@ use crate::{ source::tagline::{Tagline, TaglineInsertForm, TaglineUpdateForm}, utils::{get_conn, limit_and_offset, DbPool}, }; -use diesel::{insert_into, result::Error, ExpressionMethods, QueryDsl}; +use diesel::{insert_into, result::Error, ExpressionMethods, OptionalExtension, QueryDsl}; use diesel_async::RunQueryDsl; impl Tagline { @@ -60,4 +60,19 @@ impl Tagline { .get_results::(conn) .await } + + pub async fn get_random( + pool: &mut DbPool<'_>, + for_local_site_id: LocalSiteId, + ) -> Result, Error> { + let conn = &mut get_conn(pool).await?; + sql_function!(fn random() -> Text); + tagline + .order(random()) + .limit(1) + .filter(local_site_id.eq(for_local_site_id)) + .first::(conn) + .await + .optional() + } }