commit 22304f49257986fee6ad823a1f8b812fe00ee63f
parent e0614620efdd170a0e9b406695314fb005298597
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Sun, 14 Oct 2018 17:35:30 +0200
Merge pull request #219 from janost/refactor-organization-save
Organization::save() and UserOrganization::save() should return QueryResult instead of bool
Diffstat:
3 files changed, 33 insertions(+), 28 deletions(-)
diff --git a/src/api/core/accounts.rs b/src/api/core/accounts.rs
@@ -39,7 +39,9 @@ fn register(data: JsonUpcase<RegisterData>, conn: DbConn) -> EmptyResult {
if Invitation::take(&data.Email, &conn) {
for mut user_org in UserOrganization::find_invited_by_user(&user.uuid, &conn).iter_mut() {
user_org.status = UserOrgStatus::Accepted as i32;
- user_org.save(&conn);
+ if user_org.save(&conn).is_err() {
+ err!("Failed to accept user to organization")
+ }
};
user
} else if CONFIG.signups_allowed {
diff --git a/src/api/core/organizations.rs b/src/api/core/organizations.rs
@@ -49,8 +49,13 @@ fn create_organization(headers: Headers, data: JsonUpcase<OrgData>, conn: DbConn
user_org.type_ = UserOrgType::Owner as i32;
user_org.status = UserOrgStatus::Confirmed as i32;
- org.save(&conn);
- user_org.save(&conn);
+ if org.save(&conn).is_err() {
+ err!("Failed creating organization")
+ }
+ if user_org.save(&conn).is_err() {
+ err!("Failed to add user to organization")
+ }
+
if collection.save(&conn).is_err() {
err!("Failed creating Collection");
}
@@ -128,9 +133,11 @@ fn post_organization(org_id: String, _headers: OwnerHeaders, data: JsonUpcase<Or
org.name = data.Name;
org.billing_email = data.BillingEmail;
- org.save(&conn);
- Ok(Json(org.to_json()))
+ match org.save(&conn) {
+ Ok(()) => Ok(Json(org.to_json())),
+ Err(_) => err!("Failed to modify organization")
+ }
}
// GET /api/collections?writeOnly=false
@@ -427,7 +434,9 @@ fn send_invite(org_id: String, data: JsonUpcase<InviteData>, headers: AdminHeade
}
}
- new_user.save(&conn);
+ if new_user.save(&conn).is_err() {
+ err!("Failed to add user to organization")
+ }
}
}
@@ -458,9 +467,10 @@ fn confirm_invite(org_id: String, org_user_id: String, data: JsonUpcase<Value>,
None => err!("Invalid key provided")
};
- user_to_confirm.save(&conn);
-
- Ok(())
+ match user_to_confirm.save(&conn) {
+ Ok(()) => Ok(()),
+ Err(_) => err!("Failed to add user to organization")
+ }
}
#[get("/organizations/<org_id>/users/<org_user_id>")]
@@ -551,9 +561,10 @@ fn edit_user(org_id: String, org_user_id: String, data: JsonUpcase<EditUserData>
}
}
- user_to_edit.save(&conn);
-
- Ok(())
+ match user_to_edit.save(&conn) {
+ Ok(()) => Ok(()),
+ Err(_) => err!("Failed to save user data")
+ }
}
#[delete("/organizations/<org_id>/users/<org_user_id>")]
diff --git a/src/db/models/organization.rs b/src/db/models/organization.rs
@@ -137,9 +137,9 @@ use db::schema::{organizations, users_organizations, users_collections, ciphers_
/// Database methods
impl Organization {
- pub fn save(&mut self, conn: &DbConn) -> bool {
+ pub fn save(&mut self, conn: &DbConn) -> QueryResult<()> {
if self.uuid == Organization::VIRTUAL_ID {
- return false
+ return Err(diesel::result::Error::NotFound)
}
UserOrganization::find_by_org(&self.uuid, conn)
@@ -148,12 +148,8 @@ impl Organization {
User::update_uuid_revision(&user_org.user_uuid, conn);
});
- match diesel::replace_into(organizations::table)
- .values(&*self)
- .execute(&**conn) {
- Ok(1) => true, // One row inserted
- _ => false,
- }
+ diesel::replace_into(organizations::table)
+ .values(&*self).execute(&**conn).and(Ok(()))
}
pub fn delete(self, conn: &DbConn) -> QueryResult<()> {
@@ -266,18 +262,14 @@ impl UserOrganization {
})
}
- pub fn save(&mut self, conn: &DbConn) -> bool {
+ pub fn save(&mut self, conn: &DbConn) -> QueryResult<()> {
if self.org_uuid == Organization::VIRTUAL_ID {
- return false
+ return Err(diesel::result::Error::NotFound)
}
User::update_uuid_revision(&self.user_uuid, conn);
- match diesel::replace_into(users_organizations::table)
- .values(&*self)
- .execute(&**conn) {
- Ok(1) => true, // One row inserted
- _ => false,
- }
+ diesel::replace_into(users_organizations::table)
+ .values(&*self).execute(&**conn).and(Ok(()))
}
pub fn delete(self, conn: &DbConn) -> QueryResult<()> {