Get random tagline on site requets

This commit is contained in:
Freakazoid182 2024-04-04 23:07:51 +02:00
parent 2b1fdf106b
commit f1b993f90e
4 changed files with 24 additions and 1 deletions

View file

@ -7,6 +7,7 @@ use lemmy_db_schema::{
local_site_url_blocklist::LocalSiteUrlBlocklist, local_site_url_blocklist::LocalSiteUrlBlocklist,
local_user::{LocalUser, LocalUserUpdateForm}, local_user::{LocalUser, LocalUserUpdateForm},
moderator::{ModAdd, ModAddForm}, moderator::{ModAdd, ModAddForm},
tagline::Tagline,
}, },
traits::Crud, traits::Crud,
}; };
@ -60,6 +61,7 @@ pub async fn leave_admin(
let all_languages = Language::read_all(&mut context.pool()).await?; let all_languages = Language::read_all(&mut context.pool()).await?;
let discussion_languages = SiteLanguage::read_local_raw(&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 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 { Ok(Json(GetSiteResponse {
site_view, site_view,
@ -69,5 +71,6 @@ pub async fn leave_admin(
all_languages, all_languages,
discussion_languages, discussion_languages,
blocked_urls, blocked_urls,
tagline,
})) }))
} }

View file

@ -7,6 +7,7 @@ use lemmy_db_schema::{
instance::Instance, instance::Instance,
language::Language, language::Language,
local_site_url_blocklist::LocalSiteUrlBlocklist, local_site_url_blocklist::LocalSiteUrlBlocklist,
tagline::Tagline,
}, },
ListingType, ListingType,
ModlogActionType, ModlogActionType,
@ -298,6 +299,7 @@ pub struct GetSiteResponse {
pub my_user: Option<MyUserInfo>, pub my_user: Option<MyUserInfo>,
pub all_languages: Vec<Language>, pub all_languages: Vec<Language>,
pub discussion_languages: Vec<LanguageId>, pub discussion_languages: Vec<LanguageId>,
pub tagline: Option<Tagline>,
pub blocked_urls: Vec<LocalSiteUrlBlocklist>, pub blocked_urls: Vec<LocalSiteUrlBlocklist>,
} }

View file

@ -7,6 +7,7 @@ use lemmy_db_schema::source::{
actor_language::{LocalUserLanguage, SiteLanguage}, actor_language::{LocalUserLanguage, SiteLanguage},
language::Language, language::Language,
local_site_url_blocklist::LocalSiteUrlBlocklist, local_site_url_blocklist::LocalSiteUrlBlocklist,
tagline::Tagline,
}; };
use lemmy_db_views::structs::{LocalUserView, SiteView}; use lemmy_db_views::structs::{LocalUserView, SiteView};
use lemmy_db_views_actor::structs::{ 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 all_languages = Language::read_all(&mut context.pool()).await?;
let discussion_languages = SiteLanguage::read_local_raw(&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 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 { Ok(GetSiteResponse {
site_view, site_view,
admins, admins,
@ -53,6 +55,7 @@ pub async fn get_site(
all_languages, all_languages,
discussion_languages, discussion_languages,
blocked_urls, blocked_urls,
tagline,
}) })
}) })
.await .await

View file

@ -4,7 +4,7 @@ use crate::{
source::tagline::{Tagline, TaglineInsertForm, TaglineUpdateForm}, source::tagline::{Tagline, TaglineInsertForm, TaglineUpdateForm},
utils::{get_conn, limit_and_offset, DbPool}, 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; use diesel_async::RunQueryDsl;
impl Tagline { impl Tagline {
@ -60,4 +60,19 @@ impl Tagline {
.get_results::<Self>(conn) .get_results::<Self>(conn)
.await .await
} }
pub async fn get_random(
pool: &mut DbPool<'_>,
for_local_site_id: LocalSiteId,
) -> Result<Option<Self>, 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::<Self>(conn)
.await
.optional()
}
} }