From 144c11224707c59caee527b9d417658073d1d46a Mon Sep 17 00:00:00 2001 From: Freakazoid182 <> Date: Fri, 5 Apr 2024 22:36:08 +0200 Subject: [PATCH] Impl Crud for Tagline Remove superfluous properties --- crates/api_crud/src/tagline/create.rs | 10 ++++---- crates/api_crud/src/tagline/delete.rs | 2 +- crates/api_crud/src/tagline/update.rs | 12 ++++------ crates/db_schema/src/impls/tagline.rs | 33 ++++++++++++-------------- crates/db_schema/src/source/tagline.rs | 6 ++--- 5 files changed, 28 insertions(+), 35 deletions(-) diff --git a/crates/api_crud/src/tagline/create.rs b/crates/api_crud/src/tagline/create.rs index 43a48c0e7..29821d321 100644 --- a/crates/api_crud/src/tagline/create.rs +++ b/crates/api_crud/src/tagline/create.rs @@ -5,9 +5,12 @@ use lemmy_api_common::{ tagline::{CreateTagline, TaglineResponse}, utils::is_admin, }; -use lemmy_db_schema::source::{ - local_site::LocalSite, - tagline::{Tagline, TaglineInsertForm}, +use lemmy_db_schema::{ + source::{ + local_site::LocalSite, + tagline::{Tagline, TaglineInsertForm}, + }, + traits::Crud, }; use lemmy_db_views::structs::LocalUserView; use lemmy_utils::error::LemmyError; @@ -25,7 +28,6 @@ pub async fn create_tagline( let tagline_form = TaglineInsertForm { local_site_id: local_site.id, content: data.content.to_string(), - updated: None, }; let tagline = Tagline::create(&mut context.pool(), &tagline_form).await?; diff --git a/crates/api_crud/src/tagline/delete.rs b/crates/api_crud/src/tagline/delete.rs index 26ae7fabb..9add3cfe6 100644 --- a/crates/api_crud/src/tagline/delete.rs +++ b/crates/api_crud/src/tagline/delete.rs @@ -6,7 +6,7 @@ use lemmy_api_common::{ utils::is_admin, SuccessResponse, }; -use lemmy_db_schema::source::tagline::Tagline; +use lemmy_db_schema::{source::tagline::Tagline, traits::Crud}; use lemmy_db_views::structs::LocalUserView; use lemmy_utils::error::LemmyError; diff --git a/crates/api_crud/src/tagline/update.rs b/crates/api_crud/src/tagline/update.rs index d94cbd46a..7db5c3dc5 100644 --- a/crates/api_crud/src/tagline/update.rs +++ b/crates/api_crud/src/tagline/update.rs @@ -6,10 +6,8 @@ use lemmy_api_common::{ utils::is_admin, }; use lemmy_db_schema::{ - source::{ - local_site::LocalSite, - tagline::{Tagline, TaglineUpdateForm}, - }, + source::tagline::{Tagline, TaglineUpdateForm}, + traits::Crud, utils::naive_now, }; use lemmy_db_views::structs::LocalUserView; @@ -21,14 +19,12 @@ pub async fn update_tagline( context: Data, local_user_view: LocalUserView, ) -> Result, LemmyError> { - let local_site = LocalSite::read(&mut context.pool()).await?; // Make sure user is an admin is_admin(&local_user_view)?; let tagline_form = TaglineUpdateForm { - local_site_id: local_site.id, - content: data.content.to_string(), - updated: Some(naive_now()), + content: Some(data.content.to_string()), + updated: Some(Some(naive_now())), }; let tagline = Tagline::update(&mut context.pool(), data.id, &tagline_form).await?; diff --git a/crates/db_schema/src/impls/tagline.rs b/crates/db_schema/src/impls/tagline.rs index 1baabd9d1..c872b1438 100644 --- a/crates/db_schema/src/impls/tagline.rs +++ b/crates/db_schema/src/impls/tagline.rs @@ -2,13 +2,19 @@ use crate::{ newtypes::{LocalSiteId, TaglineId}, schema::tagline::dsl::{local_site_id, published, tagline}, source::tagline::{Tagline, TaglineInsertForm, TaglineUpdateForm}, + traits::Crud, utils::{get_conn, limit_and_offset, DbPool}, }; use diesel::{insert_into, result::Error, ExpressionMethods, OptionalExtension, QueryDsl}; use diesel_async::RunQueryDsl; -impl Tagline { - pub async fn create(pool: &mut DbPool<'_>, form: &TaglineInsertForm) -> Result { +#[async_trait] +impl Crud for Tagline { + type InsertForm = TaglineInsertForm; + type UpdateForm = TaglineUpdateForm; + type IdType = TaglineId; + + async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result { let conn = &mut get_conn(pool).await?; insert_into(tagline) .values(form) @@ -16,34 +22,25 @@ impl Tagline { .await } - pub async fn update( + async fn update( pool: &mut DbPool<'_>, tagline_id: TaglineId, - form: &TaglineUpdateForm, + new_tagline: &Self::UpdateForm, ) -> Result { let conn = &mut get_conn(pool).await?; diesel::update(tagline.find(tagline_id)) - .set(form) + .set(new_tagline) .get_result::(conn) .await } - pub async fn delete(pool: &mut DbPool<'_>, tagline_id: TaglineId) -> Result { + async fn delete(pool: &mut DbPool<'_>, id: Self::IdType) -> Result { let conn = &mut get_conn(pool).await?; - diesel::delete(tagline.find(tagline_id)).execute(conn).await - } - - pub async fn get_all( - pool: &mut DbPool<'_>, - for_local_site_id: LocalSiteId, - ) -> Result, Error> { - let conn = &mut get_conn(pool).await?; - tagline - .filter(local_site_id.eq(for_local_site_id)) - .get_results::(conn) - .await + diesel::delete(tagline.find(id)).execute(conn).await } +} +impl Tagline { pub async fn list( pool: &mut DbPool<'_>, for_local_site_id: LocalSiteId, diff --git a/crates/db_schema/src/source/tagline.rs b/crates/db_schema/src/source/tagline.rs index 2fd913db6..62dcf5a34 100644 --- a/crates/db_schema/src/source/tagline.rs +++ b/crates/db_schema/src/source/tagline.rs @@ -35,14 +35,12 @@ pub struct Tagline { pub struct TaglineInsertForm { pub local_site_id: LocalSiteId, pub content: String, - pub updated: Option>, } #[derive(Clone, Default)] #[cfg_attr(feature = "full", derive(Insertable, AsChangeset))] #[cfg_attr(feature = "full", diesel(table_name = tagline))] pub struct TaglineUpdateForm { - pub local_site_id: LocalSiteId, - pub content: String, - pub updated: Option>, + pub content: Option, + pub updated: Option>>, }