]> Untitled Git - lemmy.git/blob - crates/db_schema/src/impls/person_block.rs
Diesel 2.0.0 upgrade (#2452)
[lemmy.git] / crates / db_schema / src / impls / person_block.rs
1 use crate::{
2   newtypes::PersonId,
3   source::person_block::{PersonBlock, PersonBlockForm},
4   traits::Blockable,
5 };
6 use diesel::{dsl::*, result::Error, *};
7
8 impl PersonBlock {
9   pub fn read(
10     conn: &mut PgConnection,
11     for_person_id: PersonId,
12     for_recipient_id: PersonId,
13   ) -> Result<Self, Error> {
14     use crate::schema::person_block::dsl::*;
15     person_block
16       .filter(person_id.eq(for_person_id))
17       .filter(target_id.eq(for_recipient_id))
18       .first::<Self>(conn)
19   }
20 }
21
22 impl Blockable for PersonBlock {
23   type Form = PersonBlockForm;
24   fn block(conn: &mut PgConnection, person_block_form: &PersonBlockForm) -> Result<Self, Error> {
25     use crate::schema::person_block::dsl::*;
26     insert_into(person_block)
27       .values(person_block_form)
28       .on_conflict((person_id, target_id))
29       .do_update()
30       .set(person_block_form)
31       .get_result::<Self>(conn)
32   }
33   fn unblock(conn: &mut PgConnection, person_block_form: &Self::Form) -> Result<usize, Error> {
34     use crate::schema::person_block::dsl::*;
35     diesel::delete(
36       person_block
37         .filter(person_id.eq(person_block_form.person_id))
38         .filter(target_id.eq(person_block_form.target_id)),
39     )
40     .execute(conn)
41   }
42 }