]> Untitled Git - lemmy.git/blob - crates/db_views/src/site_view.rs
Implement instance actor (#1798)
[lemmy.git] / crates / db_views / src / site_view.rs
1 use diesel::{result::Error, *};
2 use lemmy_db_schema::{
3   aggregates::site_aggregates::SiteAggregates,
4   schema::{site, site_aggregates},
5   source::site::Site,
6 };
7 use serde::{Deserialize, Serialize};
8
9 #[derive(Debug, Serialize, Deserialize, Clone)]
10 pub struct SiteView {
11   pub site: Site,
12   pub counts: SiteAggregates,
13 }
14
15 impl SiteView {
16   pub fn read(conn: &PgConnection) -> Result<Self, Error> {
17     let (mut site, counts) = site::table
18       .inner_join(site_aggregates::table)
19       .select((site::all_columns, site_aggregates::all_columns))
20       .first::<(Site, SiteAggregates)>(conn)?;
21
22     site.private_key = None;
23     Ok(SiteView { site, counts })
24   }
25 }