From 80aef61aed29d25099835ee4769bb8e1e363eb47 Mon Sep 17 00:00:00 2001 From: nutomic Date: Fri, 10 Jul 2020 18:15:41 +0000 Subject: Split code into cargo workspaces (#67) More fixes - fixed docker builds - fixed mentions regex test - fixed DATABASE_URL stuff - change schema path in diesel.toml Address review comments - add jsonb column back into activity table - remove authors field from cargo.toml - adjust LEMMY_DATABASE_URL env var usage - rename all occurences of LEMMY_DATABASE_URL to DATABASE_URL Decouple utils and db Split code into cargo workspaces Co-authored-by: Felix Ableitner Reviewed-on: https://yerbamate.dev/LemmyNet/lemmy/pulls/67 --- server/lemmy_db/src/site.rs | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 server/lemmy_db/src/site.rs (limited to 'server/lemmy_db/src/site.rs') diff --git a/server/lemmy_db/src/site.rs b/server/lemmy_db/src/site.rs new file mode 100644 index 00000000..066ae0b1 --- /dev/null +++ b/server/lemmy_db/src/site.rs @@ -0,0 +1,53 @@ +use crate::{schema::site, Crud}; +use diesel::{dsl::*, result::Error, *}; +use serde::{Deserialize, Serialize}; + +#[derive(Queryable, Identifiable, PartialEq, Debug, Serialize, Deserialize)] +#[table_name = "site"] +pub struct Site { + pub id: i32, + pub name: String, + pub description: Option, + pub creator_id: i32, + pub published: chrono::NaiveDateTime, + pub updated: Option, + pub enable_downvotes: bool, + pub open_registration: bool, + pub enable_nsfw: bool, +} + +#[derive(Insertable, AsChangeset, Clone, Serialize, Deserialize)] +#[table_name = "site"] +pub struct SiteForm { + pub name: String, + pub description: Option, + pub creator_id: i32, + pub updated: Option, + pub enable_downvotes: bool, + pub open_registration: bool, + pub enable_nsfw: bool, +} + +impl Crud for Site { + fn read(conn: &PgConnection, _site_id: i32) -> Result { + use crate::schema::site::dsl::*; + site.first::(conn) + } + + fn delete(conn: &PgConnection, site_id: i32) -> Result { + use crate::schema::site::dsl::*; + diesel::delete(site.find(site_id)).execute(conn) + } + + fn create(conn: &PgConnection, new_site: &SiteForm) -> Result { + use crate::schema::site::dsl::*; + insert_into(site).values(new_site).get_result::(conn) + } + + fn update(conn: &PgConnection, site_id: i32, new_site: &SiteForm) -> Result { + use crate::schema::site::dsl::*; + diesel::update(site.find(site_id)) + .set(new_site) + .get_result::(conn) + } +} -- cgit v1.2.3