vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 02fd68d63b0d1d82665b187098feb6d25caeb471
parent 235bce1ecb5968195a6916a0d35555ecd77e67ff
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sun, 14 Oct 2018 20:07:27 +0200

Merge pull request #218 from janost/refactor-folder-save

Folder::save() should return QueryResult instead of bool
Diffstat:
Msrc/api/core/ciphers.rs | 14+++++++++-----
Msrc/api/core/folders.rs | 8++++++--
Msrc/db/models/folder.rs | 10+++-------
3 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/api/core/ciphers.rs b/src/api/core/ciphers.rs @@ -229,11 +229,15 @@ fn post_ciphers_import(data: JsonUpcase<ImportData>, headers: Headers, conn: DbC let data: ImportData = data.into_inner().data; // Read and create the folders - let folders: Vec<_> = data.Folders.into_iter().map(|folder| { - let mut folder = Folder::new(headers.user.uuid.clone(), folder.Name); - folder.save(&conn); - folder - }).collect(); + let mut folders: Vec<_> = Vec::new(); + for folder in data.Folders.into_iter() { + let mut new_folder = Folder::new(headers.user.uuid.clone(), folder.Name); + if new_folder.save(&conn).is_err() { + err!("Failed importing folders") + } else { + folders.push(new_folder); + } + } // Read the relations between folders and ciphers use std::collections::HashMap; diff --git a/src/api/core/folders.rs b/src/api/core/folders.rs @@ -47,7 +47,9 @@ fn post_folders(data: JsonUpcase<FolderData>, headers: Headers, conn: DbConn, ws let mut folder = Folder::new(headers.user.uuid.clone(), data.Name); - folder.save(&conn); + if folder.save(&conn).is_err() { + err!("Failed to save folder") + } ws.send_folder_update(UpdateType::SyncFolderCreate, &folder); Ok(Json(folder.to_json())) @@ -73,7 +75,9 @@ fn put_folder(uuid: String, data: JsonUpcase<FolderData>, headers: Headers, conn folder.name = data.Name; - folder.save(&conn); + if folder.save(&conn).is_err() { + err!("Failed to save folder") + } ws.send_folder_update(UpdateType::SyncFolderUpdate, &folder); Ok(Json(folder.to_json())) diff --git a/src/db/models/folder.rs b/src/db/models/folder.rs @@ -70,16 +70,12 @@ use db::schema::{folders, folders_ciphers}; /// Database methods impl Folder { - pub fn save(&mut self, conn: &DbConn) -> bool { + pub fn save(&mut self, conn: &DbConn) -> QueryResult<()> { User::update_uuid_revision(&self.user_uuid, conn); self.updated_at = Utc::now().naive_utc(); - match diesel::replace_into(folders::table) - .values(&*self) - .execute(&**conn) { - Ok(1) => true, // One row inserted - _ => false, - } + diesel::replace_into(folders::table) + .values(&*self).execute(&**conn).and(Ok(())) } pub fn delete(&self, conn: &DbConn) -> QueryResult<()> {