3 schema::person_block::dsl::{person_block, person_id, target_id},
4 source::person_block::{PersonBlock, PersonBlockForm},
6 utils::{get_conn, DbPool},
8 use diesel::{dsl::insert_into, result::Error, ExpressionMethods, QueryDsl};
9 use diesel_async::RunQueryDsl;
13 pool: &mut DbPool<'_>,
14 for_person_id: PersonId,
15 for_recipient_id: PersonId,
16 ) -> Result<Self, Error> {
17 let conn = &mut get_conn(pool).await?;
19 .filter(person_id.eq(for_person_id))
20 .filter(target_id.eq(for_recipient_id))
27 impl Blockable for PersonBlock {
28 type Form = PersonBlockForm;
30 pool: &mut DbPool<'_>,
31 person_block_form: &PersonBlockForm,
32 ) -> Result<Self, Error> {
33 let conn = &mut get_conn(pool).await?;
34 insert_into(person_block)
35 .values(person_block_form)
36 .on_conflict((person_id, target_id))
38 .set(person_block_form)
39 .get_result::<Self>(conn)
42 async fn unblock(pool: &mut DbPool<'_>, person_block_form: &Self::Form) -> Result<usize, Error> {
43 let conn = &mut get_conn(pool).await?;
46 .filter(person_id.eq(person_block_form.person_id))
47 .filter(target_id.eq(person_block_form.target_id)),