Revert "Revert "Change Crud to Crud<'a> (won't compile)""

This reverts commit 25a27165a8.
pull/3707/head
dull b 2023-07-24 19:36:19 +00:00
parent a1084530d2
commit 3129cd0fc3
13 changed files with 100 additions and 83 deletions

View File

@ -152,20 +152,23 @@ where ca.comment_id = c.id"
} }
#[async_trait] #[async_trait]
impl Crud for Comment { impl<'a> Crud<'a> for Comment {
type InsertForm = CommentInsertForm; type InsertForm = CommentInsertForm;
type UpdateForm = CommentUpdateForm; type UpdateForm = CommentUpdateForm;
type IdType = CommentId; type IdType = CommentId;
/// This is unimplemented, use [[Comment::create]] /// This is unimplemented, use [[Comment::create]]
async fn create(_pool: &mut DbPool<'_>, _comment_form: &Self::InsertForm) -> Result<Self, Error> { async fn create(
_pool: &mut DbPool<'_>,
_comment_form: &'a Self::InsertForm,
) -> Result<Self, Error> {
unimplemented!(); unimplemented!();
} }
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
comment_id: CommentId, comment_id: CommentId,
comment_form: &Self::UpdateForm, comment_form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(comment.find(comment_id)) diesel::update(comment.find(comment_id))

View File

@ -9,14 +9,14 @@ use diesel::{dsl::insert_into, result::Error, ExpressionMethods, QueryDsl};
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for CommentReply { impl<'a> Crud<'a> for CommentReply {
type InsertForm = CommentReplyInsertForm; type InsertForm = CommentReplyInsertForm;
type UpdateForm = CommentReplyUpdateForm; type UpdateForm = CommentReplyUpdateForm;
type IdType = CommentReplyId; type IdType = CommentReplyId;
async fn create( async fn create(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
comment_reply_form: &Self::InsertForm, comment_reply_form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -34,7 +34,7 @@ impl Crud for CommentReply {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
comment_reply_id: CommentReplyId, comment_reply_id: CommentReplyId,
comment_reply_form: &Self::UpdateForm, comment_reply_form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(comment_reply.find(comment_reply_id)) diesel::update(comment_reply.find(comment_reply_id))

View File

@ -23,12 +23,12 @@ use diesel::{dsl::insert_into, result::Error, ExpressionMethods, QueryDsl};
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for Community { impl<'a> Crud<'a> for Community {
type InsertForm = CommunityInsertForm; type InsertForm = CommunityInsertForm;
type UpdateForm = CommunityUpdateForm; type UpdateForm = CommunityUpdateForm;
type IdType = CommunityId; type IdType = CommunityId;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let is_new_community = match &form.actor_id { let is_new_community = match &form.actor_id {
Some(id) => Community::read_from_apub_id(pool, id).await?.is_none(), Some(id) => Community::read_from_apub_id(pool, id).await?.is_none(),
None => true, None => true,
@ -55,7 +55,7 @@ impl Crud for Community {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
community_id: CommunityId, community_id: CommunityId,
form: &Self::UpdateForm, form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(community::table.find(community_id)) diesel::update(community::table.find(community_id))

View File

@ -65,12 +65,12 @@ impl LocalUser {
} }
#[async_trait] #[async_trait]
impl Crud for LocalUser { impl<'a> Crud<'a> for LocalUser {
type InsertForm = LocalUserInsertForm; type InsertForm = LocalUserInsertForm;
type UpdateForm = LocalUserUpdateForm; type UpdateForm = LocalUserUpdateForm;
type IdType = LocalUserId; type IdType = LocalUserId;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
let mut form_with_encrypted_password = form.clone(); let mut form_with_encrypted_password = form.clone();
let password_hash = let password_hash =
@ -97,7 +97,7 @@ impl Crud for LocalUser {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
local_user_id: LocalUserId, local_user_id: LocalUserId,
form: &Self::UpdateForm, form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(local_user.find(local_user_id)) diesel::update(local_user.find(local_user_id))

View File

@ -38,12 +38,12 @@ use diesel::{dsl::insert_into, result::Error, QueryDsl};
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for ModRemovePost { impl<'a> Crud<'a> for ModRemovePost {
type InsertForm = ModRemovePostForm; type InsertForm = ModRemovePostForm;
type UpdateForm = ModRemovePostForm; type UpdateForm = ModRemovePostForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModRemovePostForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModRemovePostForm) -> Result<Self, Error> {
use crate::schema::mod_remove_post::dsl::mod_remove_post; use crate::schema::mod_remove_post::dsl::mod_remove_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_remove_post) insert_into(mod_remove_post)
@ -55,7 +55,7 @@ impl Crud for ModRemovePost {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModRemovePostForm, form: &'a ModRemovePostForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_remove_post::dsl::mod_remove_post; use crate::schema::mod_remove_post::dsl::mod_remove_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -67,12 +67,12 @@ impl Crud for ModRemovePost {
} }
#[async_trait] #[async_trait]
impl Crud for ModLockPost { impl<'a> Crud<'a> for ModLockPost {
type InsertForm = ModLockPostForm; type InsertForm = ModLockPostForm;
type UpdateForm = ModLockPostForm; type UpdateForm = ModLockPostForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModLockPostForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModLockPostForm) -> Result<Self, Error> {
use crate::schema::mod_lock_post::dsl::mod_lock_post; use crate::schema::mod_lock_post::dsl::mod_lock_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_lock_post) insert_into(mod_lock_post)
@ -84,7 +84,7 @@ impl Crud for ModLockPost {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModLockPostForm, form: &'a ModLockPostForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_lock_post::dsl::mod_lock_post; use crate::schema::mod_lock_post::dsl::mod_lock_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -96,12 +96,12 @@ impl Crud for ModLockPost {
} }
#[async_trait] #[async_trait]
impl Crud for ModFeaturePost { impl<'a> Crud<'a> for ModFeaturePost {
type InsertForm = ModFeaturePostForm; type InsertForm = ModFeaturePostForm;
type UpdateForm = ModFeaturePostForm; type UpdateForm = ModFeaturePostForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModFeaturePostForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModFeaturePostForm) -> Result<Self, Error> {
use crate::schema::mod_feature_post::dsl::mod_feature_post; use crate::schema::mod_feature_post::dsl::mod_feature_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_feature_post) insert_into(mod_feature_post)
@ -113,7 +113,7 @@ impl Crud for ModFeaturePost {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModFeaturePostForm, form: &'a ModFeaturePostForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_feature_post::dsl::mod_feature_post; use crate::schema::mod_feature_post::dsl::mod_feature_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -125,12 +125,12 @@ impl Crud for ModFeaturePost {
} }
#[async_trait] #[async_trait]
impl Crud for ModRemoveComment { impl<'a> Crud<'a> for ModRemoveComment {
type InsertForm = ModRemoveCommentForm; type InsertForm = ModRemoveCommentForm;
type UpdateForm = ModRemoveCommentForm; type UpdateForm = ModRemoveCommentForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModRemoveCommentForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModRemoveCommentForm) -> Result<Self, Error> {
use crate::schema::mod_remove_comment::dsl::mod_remove_comment; use crate::schema::mod_remove_comment::dsl::mod_remove_comment;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_remove_comment) insert_into(mod_remove_comment)
@ -142,7 +142,7 @@ impl Crud for ModRemoveComment {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModRemoveCommentForm, form: &'a ModRemoveCommentForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_remove_comment::dsl::mod_remove_comment; use crate::schema::mod_remove_comment::dsl::mod_remove_comment;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -154,12 +154,12 @@ impl Crud for ModRemoveComment {
} }
#[async_trait] #[async_trait]
impl Crud for ModRemoveCommunity { impl<'a> Crud<'a> for ModRemoveCommunity {
type InsertForm = ModRemoveCommunityForm; type InsertForm = ModRemoveCommunityForm;
type UpdateForm = ModRemoveCommunityForm; type UpdateForm = ModRemoveCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModRemoveCommunityForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModRemoveCommunityForm) -> Result<Self, Error> {
use crate::schema::mod_remove_community::dsl::mod_remove_community; use crate::schema::mod_remove_community::dsl::mod_remove_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_remove_community) insert_into(mod_remove_community)
@ -171,7 +171,7 @@ impl Crud for ModRemoveCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModRemoveCommunityForm, form: &'a ModRemoveCommunityForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_remove_community::dsl::mod_remove_community; use crate::schema::mod_remove_community::dsl::mod_remove_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -183,12 +183,12 @@ impl Crud for ModRemoveCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for ModBanFromCommunity { impl<'a> Crud<'a> for ModBanFromCommunity {
type InsertForm = ModBanFromCommunityForm; type InsertForm = ModBanFromCommunityForm;
type UpdateForm = ModBanFromCommunityForm; type UpdateForm = ModBanFromCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModBanFromCommunityForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModBanFromCommunityForm) -> Result<Self, Error> {
use crate::schema::mod_ban_from_community::dsl::mod_ban_from_community; use crate::schema::mod_ban_from_community::dsl::mod_ban_from_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_ban_from_community) insert_into(mod_ban_from_community)
@ -200,7 +200,7 @@ impl Crud for ModBanFromCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModBanFromCommunityForm, form: &'a ModBanFromCommunityForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_ban_from_community::dsl::mod_ban_from_community; use crate::schema::mod_ban_from_community::dsl::mod_ban_from_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -212,12 +212,12 @@ impl Crud for ModBanFromCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for ModBan { impl<'a> Crud<'a> for ModBan {
type InsertForm = ModBanForm; type InsertForm = ModBanForm;
type UpdateForm = ModBanForm; type UpdateForm = ModBanForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModBanForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModBanForm) -> Result<Self, Error> {
use crate::schema::mod_ban::dsl::mod_ban; use crate::schema::mod_ban::dsl::mod_ban;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_ban) insert_into(mod_ban)
@ -226,7 +226,11 @@ impl Crud for ModBan {
.await .await
} }
async fn update(pool: &mut DbPool<'_>, from_id: i32, form: &ModBanForm) -> Result<Self, Error> { async fn update(
pool: &mut DbPool<'_>,
from_id: i32,
form: &'a ModBanForm,
) -> Result<Self, Error> {
use crate::schema::mod_ban::dsl::mod_ban; use crate::schema::mod_ban::dsl::mod_ban;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(mod_ban.find(from_id)) diesel::update(mod_ban.find(from_id))
@ -237,12 +241,12 @@ impl Crud for ModBan {
} }
#[async_trait] #[async_trait]
impl Crud for ModHideCommunity { impl<'a> Crud<'a> for ModHideCommunity {
type InsertForm = ModHideCommunityForm; type InsertForm = ModHideCommunityForm;
type UpdateForm = ModHideCommunityForm; type UpdateForm = ModHideCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModHideCommunityForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModHideCommunityForm) -> Result<Self, Error> {
use crate::schema::mod_hide_community::dsl::mod_hide_community; use crate::schema::mod_hide_community::dsl::mod_hide_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_hide_community) insert_into(mod_hide_community)
@ -254,7 +258,7 @@ impl Crud for ModHideCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModHideCommunityForm, form: &'a ModHideCommunityForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_hide_community::dsl::mod_hide_community; use crate::schema::mod_hide_community::dsl::mod_hide_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -266,12 +270,12 @@ impl Crud for ModHideCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for ModAddCommunity { impl<'a> Crud<'a> for ModAddCommunity {
type InsertForm = ModAddCommunityForm; type InsertForm = ModAddCommunityForm;
type UpdateForm = ModAddCommunityForm; type UpdateForm = ModAddCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModAddCommunityForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModAddCommunityForm) -> Result<Self, Error> {
use crate::schema::mod_add_community::dsl::mod_add_community; use crate::schema::mod_add_community::dsl::mod_add_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_add_community) insert_into(mod_add_community)
@ -283,7 +287,7 @@ impl Crud for ModAddCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModAddCommunityForm, form: &'a ModAddCommunityForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_add_community::dsl::mod_add_community; use crate::schema::mod_add_community::dsl::mod_add_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -295,12 +299,15 @@ impl Crud for ModAddCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for ModTransferCommunity { impl<'a> Crud<'a> for ModTransferCommunity {
type InsertForm = ModTransferCommunityForm; type InsertForm = ModTransferCommunityForm;
type UpdateForm = ModTransferCommunityForm; type UpdateForm = ModTransferCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModTransferCommunityForm) -> Result<Self, Error> { async fn create(
pool: &mut DbPool<'_>,
form: &'a ModTransferCommunityForm,
) -> Result<Self, Error> {
use crate::schema::mod_transfer_community::dsl::mod_transfer_community; use crate::schema::mod_transfer_community::dsl::mod_transfer_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_transfer_community) insert_into(mod_transfer_community)
@ -312,7 +319,7 @@ impl Crud for ModTransferCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &ModTransferCommunityForm, form: &'a ModTransferCommunityForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::mod_transfer_community::dsl::mod_transfer_community; use crate::schema::mod_transfer_community::dsl::mod_transfer_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -324,12 +331,12 @@ impl Crud for ModTransferCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for ModAdd { impl<'a> Crud<'a> for ModAdd {
type InsertForm = ModAddForm; type InsertForm = ModAddForm;
type UpdateForm = ModAddForm; type UpdateForm = ModAddForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &ModAddForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a ModAddForm) -> Result<Self, Error> {
use crate::schema::mod_add::dsl::mod_add; use crate::schema::mod_add::dsl::mod_add;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(mod_add) insert_into(mod_add)
@ -338,7 +345,11 @@ impl Crud for ModAdd {
.await .await
} }
async fn update(pool: &mut DbPool<'_>, from_id: i32, form: &ModAddForm) -> Result<Self, Error> { async fn update(
pool: &mut DbPool<'_>,
from_id: i32,
form: &'a ModAddForm,
) -> Result<Self, Error> {
use crate::schema::mod_add::dsl::mod_add; use crate::schema::mod_add::dsl::mod_add;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(mod_add.find(from_id)) diesel::update(mod_add.find(from_id))
@ -349,12 +360,12 @@ impl Crud for ModAdd {
} }
#[async_trait] #[async_trait]
impl Crud for AdminPurgePerson { impl<'a> Crud<'a> for AdminPurgePerson {
type InsertForm = AdminPurgePersonForm; type InsertForm = AdminPurgePersonForm;
type UpdateForm = AdminPurgePersonForm; type UpdateForm = AdminPurgePersonForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
use crate::schema::admin_purge_person::dsl::admin_purge_person; use crate::schema::admin_purge_person::dsl::admin_purge_person;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(admin_purge_person) insert_into(admin_purge_person)
@ -366,7 +377,7 @@ impl Crud for AdminPurgePerson {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &Self::InsertForm, form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::admin_purge_person::dsl::admin_purge_person; use crate::schema::admin_purge_person::dsl::admin_purge_person;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -378,12 +389,12 @@ impl Crud for AdminPurgePerson {
} }
#[async_trait] #[async_trait]
impl Crud for AdminPurgeCommunity { impl<'a> Crud<'a> for AdminPurgeCommunity {
type InsertForm = AdminPurgeCommunityForm; type InsertForm = AdminPurgeCommunityForm;
type UpdateForm = AdminPurgeCommunityForm; type UpdateForm = AdminPurgeCommunityForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
use crate::schema::admin_purge_community::dsl::admin_purge_community; use crate::schema::admin_purge_community::dsl::admin_purge_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(admin_purge_community) insert_into(admin_purge_community)
@ -395,7 +406,7 @@ impl Crud for AdminPurgeCommunity {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &Self::InsertForm, form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::admin_purge_community::dsl::admin_purge_community; use crate::schema::admin_purge_community::dsl::admin_purge_community;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -407,12 +418,12 @@ impl Crud for AdminPurgeCommunity {
} }
#[async_trait] #[async_trait]
impl Crud for AdminPurgePost { impl<'a> Crud<'a> for AdminPurgePost {
type InsertForm = AdminPurgePostForm; type InsertForm = AdminPurgePostForm;
type UpdateForm = AdminPurgePostForm; type UpdateForm = AdminPurgePostForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
use crate::schema::admin_purge_post::dsl::admin_purge_post; use crate::schema::admin_purge_post::dsl::admin_purge_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(admin_purge_post) insert_into(admin_purge_post)
@ -424,7 +435,7 @@ impl Crud for AdminPurgePost {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &Self::InsertForm, form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::admin_purge_post::dsl::admin_purge_post; use crate::schema::admin_purge_post::dsl::admin_purge_post;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
@ -436,12 +447,12 @@ impl Crud for AdminPurgePost {
} }
#[async_trait] #[async_trait]
impl Crud for AdminPurgeComment { impl<'a> Crud<'a> for AdminPurgeComment {
type InsertForm = AdminPurgeCommentForm; type InsertForm = AdminPurgeCommentForm;
type UpdateForm = AdminPurgeCommentForm; type UpdateForm = AdminPurgeCommentForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
use crate::schema::admin_purge_comment::dsl::admin_purge_comment; use crate::schema::admin_purge_comment::dsl::admin_purge_comment;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(admin_purge_comment) insert_into(admin_purge_comment)
@ -453,7 +464,7 @@ impl Crud for AdminPurgeComment {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
from_id: i32, from_id: i32,
form: &Self::InsertForm, form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
use crate::schema::admin_purge_comment::dsl::admin_purge_comment; use crate::schema::admin_purge_comment::dsl::admin_purge_comment;
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;

View File

@ -20,12 +20,15 @@ use diesel_async::RunQueryDsl;
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
#[async_trait] #[async_trait]
impl Crud for PasswordResetRequest { impl<'a> Crud<'a> for PasswordResetRequest {
type InsertForm = PasswordResetRequestForm; type InsertForm = PasswordResetRequestForm;
type UpdateForm = PasswordResetRequestForm; type UpdateForm = PasswordResetRequestForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &PasswordResetRequestForm) -> Result<Self, Error> { async fn create(
pool: &mut DbPool<'_>,
form: &'a PasswordResetRequestForm,
) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(password_reset_request) insert_into(password_reset_request)
.values(form) .values(form)
@ -35,7 +38,7 @@ impl Crud for PasswordResetRequest {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
password_reset_request_id: i32, password_reset_request_id: i32,
form: &PasswordResetRequestForm, form: &'a PasswordResetRequestForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(password_reset_request.find(password_reset_request_id)) diesel::update(password_reset_request.find(password_reset_request_id))

View File

@ -15,7 +15,7 @@ use diesel::{dsl::insert_into, result::Error, ExpressionMethods, JoinOnDsl, Quer
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for Person { impl<'a> Crud<'a> for Person {
type InsertForm = PersonInsertForm; type InsertForm = PersonInsertForm;
type UpdateForm = PersonUpdateForm; type UpdateForm = PersonUpdateForm;
type IdType = PersonId; type IdType = PersonId;
@ -28,7 +28,7 @@ impl Crud for Person {
.await .await
} }
async fn create(pool: &mut DbPool<'_>, form: &PersonInsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a PersonInsertForm) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(person::table) insert_into(person::table)
.values(form) .values(form)
@ -38,7 +38,7 @@ impl Crud for Person {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
person_id: PersonId, person_id: PersonId,
form: &PersonUpdateForm, form: &'a PersonUpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(person::table.find(person_id)) diesel::update(person::table.find(person_id))

View File

@ -9,14 +9,14 @@ use diesel::{dsl::insert_into, result::Error, ExpressionMethods, QueryDsl};
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for PersonMention { impl<'a> Crud<'a> for PersonMention {
type InsertForm = PersonMentionInsertForm; type InsertForm = PersonMentionInsertForm;
type UpdateForm = PersonMentionUpdateForm; type UpdateForm = PersonMentionUpdateForm;
type IdType = PersonMentionId; type IdType = PersonMentionId;
async fn create( async fn create(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
person_mention_form: &Self::InsertForm, person_mention_form: &'a Self::InsertForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
// since the return here isnt utilized, we dont need to do an update // since the return here isnt utilized, we dont need to do an update
@ -33,7 +33,7 @@ impl Crud for PersonMention {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
person_mention_id: PersonMentionId, person_mention_id: PersonMentionId,
person_mention_form: &Self::UpdateForm, person_mention_form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(person_mention.find(person_mention_id)) diesel::update(person_mention.find(person_mention_id))

View File

@ -34,12 +34,12 @@ use diesel::{dsl::insert_into, result::Error, ExpressionMethods, QueryDsl, TextE
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for Post { impl<'a> Crud<'a> for Post {
type InsertForm = PostInsertForm; type InsertForm = PostInsertForm;
type UpdateForm = PostUpdateForm; type UpdateForm = PostUpdateForm;
type IdType = PostId; type IdType = PostId;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(post) insert_into(post)
.values(form) .values(form)
@ -53,7 +53,7 @@ impl Crud for Post {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
post_id: PostId, post_id: PostId,
new_post: &Self::UpdateForm, new_post: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(post.find(post_id)) diesel::update(post.find(post_id))

View File

@ -11,12 +11,12 @@ use lemmy_utils::error::LemmyError;
use url::Url; use url::Url;
#[async_trait] #[async_trait]
impl Crud for PrivateMessage { impl<'a> Crud<'a> for PrivateMessage {
type InsertForm = PrivateMessageInsertForm; type InsertForm = PrivateMessageInsertForm;
type UpdateForm = PrivateMessageUpdateForm; type UpdateForm = PrivateMessageUpdateForm;
type IdType = PrivateMessageId; type IdType = PrivateMessageId;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(private_message) insert_into(private_message)
.values(form) .values(form)
@ -30,7 +30,7 @@ impl Crud for PrivateMessage {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
private_message_id: PrivateMessageId, private_message_id: PrivateMessageId,
form: &Self::UpdateForm, form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(private_message.find(private_message_id)) diesel::update(private_message.find(private_message_id))

View File

@ -13,12 +13,12 @@ use diesel::{insert_into, result::Error, ExpressionMethods, QueryDsl};
use diesel_async::RunQueryDsl; use diesel_async::RunQueryDsl;
#[async_trait] #[async_trait]
impl Crud for RegistrationApplication { impl<'a> Crud<'a> for RegistrationApplication {
type InsertForm = RegistrationApplicationInsertForm; type InsertForm = RegistrationApplicationInsertForm;
type UpdateForm = RegistrationApplicationUpdateForm; type UpdateForm = RegistrationApplicationUpdateForm;
type IdType = i32; type IdType = i32;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
insert_into(registration_application) insert_into(registration_application)
.values(form) .values(form)
@ -29,7 +29,7 @@ impl Crud for RegistrationApplication {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
id_: Self::IdType, id_: Self::IdType,
form: &Self::UpdateForm, form: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(registration_application.find(id_)) diesel::update(registration_application.find(id_))

View File

@ -13,12 +13,12 @@ use diesel_async::RunQueryDsl;
use url::Url; use url::Url;
#[async_trait] #[async_trait]
impl Crud for Site { impl<'a> Crud<'a> for Site {
type InsertForm = SiteInsertForm; type InsertForm = SiteInsertForm;
type UpdateForm = SiteUpdateForm; type UpdateForm = SiteUpdateForm;
type IdType = SiteId; type IdType = SiteId;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error> { async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error> {
let is_new_site = match &form.actor_id { let is_new_site = match &form.actor_id {
Some(id_) => Site::read_from_apub_id(pool, id_).await?.is_none(), Some(id_) => Site::read_from_apub_id(pool, id_).await?.is_none(),
None => true, None => true,
@ -45,7 +45,7 @@ impl Crud for Site {
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
site_id: SiteId, site_id: SiteId,
new_site: &Self::UpdateForm, new_site: &'a Self::UpdateForm,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;
diesel::update(site.find(site_id)) diesel::update(site.find(site_id))

View File

@ -34,13 +34,13 @@ LimitDsl + Send + Sized + 'static,
<<Self::Table as Table>::PrimaryKey as Expression>::SqlType: SqlType, <<Self::Table as Table>::PrimaryKey as Expression>::SqlType: SqlType,
<Self::Table as Table>::PrimaryKey: ExpressionMethods + Send + Sized + 'static,*/ <Self::Table as Table>::PrimaryKey: ExpressionMethods + Send + Sized + 'static,*/
#[async_trait] #[async_trait]
pub trait Crud pub trait Crud<'a>
where where
Self: HasTable + Sized, Self: HasTable + Sized,
Self::Table: FindDsl<Self::IdType> + 'static, Self::Table: FindDsl<Self::IdType> + 'static,
dsl::Find<Self::Table, Self::IdType>: LimitDsl + Send + IntoUpdateTarget, dsl::Find<Self::Table, Self::IdType>: LimitDsl + Send + IntoUpdateTarget,
for<'a> dsl::Limit<dsl::Find<Self::Table, Self::IdType>>: for<'query> dsl::Limit<dsl::Find<Self::Table, Self::IdType>>:
Send + LoadQuery<'a, AsyncPgConnection, Self> + 'a, Send + LoadQuery<'query, AsyncPgConnection, Self> + 'query,
<<Self as HasTable>::Table as Table>::PrimaryKey: ExpressionMethods + Send, <<Self as HasTable>::Table as Table>::PrimaryKey: ExpressionMethods + Send,
<<<Self as HasTable>::Table as Table>::PrimaryKey as Expression>::SqlType: <<<Self as HasTable>::Table as Table>::PrimaryKey as Expression>::SqlType:
SqlType + TypedExpressionType, SqlType + TypedExpressionType,
@ -57,7 +57,7 @@ where
+ Sized + Sized
+ Send + Send
+ AsExpression<<<Self::Table as Table>::PrimaryKey as Expression>::SqlType>; + AsExpression<<<Self::Table as Table>::PrimaryKey as Expression>::SqlType>;
async fn create(pool: &mut DbPool<'_>, form: &Self::InsertForm) -> Result<Self, Error>; async fn create(pool: &mut DbPool<'_>, form: &'a Self::InsertForm) -> Result<Self, Error>;
/*{ /*{
let query = insert_into(Self::table()).values(form); let query = insert_into(Self::table()).values(form);
let conn = &mut *get_conn(pool).await?; let conn = &mut *get_conn(pool).await?;
@ -72,7 +72,7 @@ where
async fn update( async fn update(
pool: &mut DbPool<'_>, pool: &mut DbPool<'_>,
id: Self::IdType, id: Self::IdType,
form: &Self::UpdateForm, form: &'a Self::UpdateForm,
) -> Result<Self, Error>; ) -> Result<Self, Error>;
/*{ /*{
let conn = &mut get_conn(pool).await?; let conn = &mut get_conn(pool).await?;