2 newtypes::{DbUrl, SiteId},
3 source::{actor_language::SiteLanguage, site::*},
6 use diesel::{dsl::*, result::Error, *};
12 fn read(conn: &mut PgConnection, _site_id: SiteId) -> Result<Self, Error> {
13 use crate::schema::site::dsl::*;
14 site.first::<Self>(conn)
17 fn create(conn: &mut PgConnection, new_site: &SiteForm) -> Result<Self, Error> {
18 use crate::schema::site::dsl::*;
19 let site_ = insert_into(site)
21 .get_result::<Self>(conn)?;
23 // initialize with all languages
24 SiteLanguage::update(conn, vec![], site_.id)?;
28 fn update(conn: &mut PgConnection, site_id: SiteId, new_site: &SiteForm) -> Result<Self, Error> {
29 use crate::schema::site::dsl::*;
30 diesel::update(site.find(site_id))
32 .get_result::<Self>(conn)
35 fn delete(conn: &mut PgConnection, site_id: SiteId) -> Result<usize, Error> {
36 use crate::schema::site::dsl::*;
37 diesel::delete(site.find(site_id)).execute(conn)
42 pub fn read_local(conn: &mut PgConnection) -> Result<Self, Error> {
43 use crate::schema::site::dsl::*;
44 site.order_by(id).first::<Self>(conn)
47 pub fn upsert(conn: &mut PgConnection, site_form: &SiteForm) -> Result<Site, Error> {
48 use crate::schema::site::dsl::*;
51 .on_conflict(actor_id)
54 .get_result::<Self>(conn)
57 pub fn read_from_apub_id(conn: &mut PgConnection, object_id: Url) -> Result<Option<Self>, Error> {
58 use crate::schema::site::dsl::*;
59 let object_id: DbUrl = object_id.into();
62 .filter(actor_id.eq(object_id))
69 pub fn read_remote_sites(conn: &mut PgConnection) -> Result<Vec<Self>, Error> {
70 use crate::schema::site::dsl::*;
71 site.order_by(id).offset(1).get_results::<Self>(conn)