]> Untitled Git - lemmy.git/blob - crates/db_schema/src/aggregates/person_post_aggregates.rs
Showing # of unread comments for posts. Fixes #2134 (#2393)
[lemmy.git] / crates / db_schema / src / aggregates / person_post_aggregates.rs
1 use crate::{
2   aggregates::structs::{PersonPostAggregates, PersonPostAggregatesForm},
3   newtypes::{PersonId, PostId},
4 };
5 use diesel::{result::Error, *};
6
7 impl PersonPostAggregates {
8   pub fn upsert(conn: &mut PgConnection, form: &PersonPostAggregatesForm) -> Result<Self, Error> {
9     use crate::schema::person_post_aggregates::dsl::*;
10     insert_into(person_post_aggregates)
11       .values(form)
12       .on_conflict((person_id, post_id))
13       .do_update()
14       .set(form)
15       .get_result::<Self>(conn)
16   }
17   pub fn read(
18     conn: &mut PgConnection,
19     person_id_: PersonId,
20     post_id_: PostId,
21   ) -> Result<Self, Error> {
22     use crate::schema::person_post_aggregates::dsl::*;
23     person_post_aggregates
24       .filter(post_id.eq(post_id_).and(person_id.eq(person_id_)))
25       .first::<Self>(conn)
26   }
27 }