- .inner_join(person_alias_1::table.on(private_message::recipient_id.eq(person_alias_1::id)))
- .order_by(private_message::published.desc())
- .select((
- private_message::all_columns,
- Person::safe_columns_tuple(),
- PersonAlias1::safe_columns_tuple(),
- ))
- .first::<PrivateMessageViewTuple>(conn)?;
-
- Ok(PrivateMessageView {
- private_message,
- creator,
- recipient,
- })
- }
-
- /// Gets the number of unread messages
- pub fn get_unread_messages(conn: &PgConnection, my_person_id: PersonId) -> Result<i64, Error> {
- use diesel::dsl::*;
- private_message::table
- .filter(private_message::read.eq(false))
- .filter(private_message::recipient_id.eq(my_person_id))
- .filter(private_message::deleted.eq(false))
- .select(count(private_message::id))
- .first::<i64>(conn)
- }
-}
-
-pub struct PrivateMessageQueryBuilder<'a> {
- conn: &'a PgConnection,
- recipient_id: PersonId,
- unread_only: Option<bool>,
- page: Option<i64>,
- limit: Option<i64>,
-}
-
-impl<'a> PrivateMessageQueryBuilder<'a> {
- pub fn create(conn: &'a PgConnection, recipient_id: PersonId) -> Self {
- PrivateMessageQueryBuilder {
- conn,
- recipient_id,
- unread_only: None,
- page: None,
- limit: None,
- }
- }