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;
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;
29 async fn block(pool: &DbPool, person_block_form: &PersonBlockForm) -> Result<Self, Error> {
30 let conn = &mut get_conn(pool).await?;
31 insert_into(person_block)
32 .values(person_block_form)
33 .on_conflict((person_id, target_id))
35 .set(person_block_form)
36 .get_result::<Self>(conn)
39 async fn unblock(pool: &DbPool, person_block_form: &Self::Form) -> Result<usize, Error> {
40 let conn = &mut get_conn(pool).await?;
43 .filter(person_id.eq(person_block_form.person_id))
44 .filter(target_id.eq(person_block_form.target_id)),