From 6f4125dbfb212fa12ff85bce12523a2c3d08e67d Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sun, 2 Jun 2019 09:34:45 -0700 Subject: [PATCH] Creating the default community and signing people up for it if it doesnt exist. --- server/src/api/user.rs | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/server/src/api/user.rs b/server/src/api/user.rs index 5d957120b..d6d5962eb 100644 --- a/server/src/api/user.rs +++ b/server/src/api/user.rs @@ -161,6 +161,53 @@ impl Perform for Oper { } }; + // Create the main community if it doesn't exist + let main_community: Community = match Community::read_from_name(&conn, "main".to_string()) { + Ok(c) => c, + Err(_e) => { + let community_form = CommunityForm { + name: "main".to_string(), + title: "The Default Community".to_string(), + description: Some("The Default Community".to_string()), + category_id: 1, + creator_id: inserted_user.id, + removed: None, + deleted: None, + updated: None, + }; + Community::create(&conn, &community_form).unwrap() + } + }; + + // Sign them up for main community no matter what + let community_follower_form = CommunityFollowerForm { + community_id: main_community.id, + user_id: inserted_user.id, + }; + + let _inserted_community_follower = match CommunityFollower::follow(&conn, &community_follower_form) { + Ok(user) => user, + Err(_e) => { + return Err(APIError::err(&self.op, "Community follower already exists."))? + } + }; + + // If its an admin, add them as a mod and follower to main + if data.admin { + let community_moderator_form = CommunityModeratorForm { + community_id: main_community.id, + user_id: inserted_user.id, + }; + + let _inserted_community_moderator = match CommunityModerator::join(&conn, &community_moderator_form) { + Ok(user) => user, + Err(_e) => { + return Err(APIError::err(&self.op, "Community moderator already exists."))? + } + }; + + } + // Return the jwt Ok( LoginResponse {