Browse Source
Merge pull request #218 from janost/refactor-folder-save
Folder::save() should return QueryResult instead of bool
pull/221/head
Daniel García
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
18 additions and
14 deletions
-
src/api/core/ciphers.rs
-
src/api/core/folders.rs
-
src/db/models/folder.rs
|
@ -229,11 +229,15 @@ fn post_ciphers_import(data: JsonUpcase<ImportData>, headers: Headers, conn: DbC |
|
|
let data: ImportData = data.into_inner().data; |
|
|
let data: ImportData = data.into_inner().data; |
|
|
|
|
|
|
|
|
// Read and create the folders
|
|
|
// Read and create the folders
|
|
|
let folders: Vec<_> = data.Folders.into_iter().map(|folder| { |
|
|
let mut folders: Vec<_> = Vec::new(); |
|
|
let mut folder = Folder::new(headers.user.uuid.clone(), folder.Name); |
|
|
for folder in data.Folders.into_iter() { |
|
|
folder.save(&conn); |
|
|
let mut new_folder = Folder::new(headers.user.uuid.clone(), folder.Name); |
|
|
folder |
|
|
if new_folder.save(&conn).is_err() { |
|
|
}).collect(); |
|
|
err!("Failed importing folders") |
|
|
|
|
|
} else { |
|
|
|
|
|
folders.push(new_folder); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// Read the relations between folders and ciphers
|
|
|
// Read the relations between folders and ciphers
|
|
|
use std::collections::HashMap; |
|
|
use std::collections::HashMap; |
|
|
|
@ -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); |
|
|
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); |
|
|
ws.send_folder_update(UpdateType::SyncFolderCreate, &folder); |
|
|
|
|
|
|
|
|
Ok(Json(folder.to_json())) |
|
|
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.name = data.Name; |
|
|
|
|
|
|
|
|
folder.save(&conn); |
|
|
if folder.save(&conn).is_err() { |
|
|
|
|
|
err!("Failed to save folder") |
|
|
|
|
|
} |
|
|
ws.send_folder_update(UpdateType::SyncFolderUpdate, &folder); |
|
|
ws.send_folder_update(UpdateType::SyncFolderUpdate, &folder); |
|
|
|
|
|
|
|
|
Ok(Json(folder.to_json())) |
|
|
Ok(Json(folder.to_json())) |
|
|
|
@ -70,16 +70,12 @@ use db::schema::{folders, folders_ciphers}; |
|
|
|
|
|
|
|
|
/// Database methods
|
|
|
/// Database methods
|
|
|
impl Folder { |
|
|
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); |
|
|
User::update_uuid_revision(&self.user_uuid, conn); |
|
|
self.updated_at = Utc::now().naive_utc(); |
|
|
self.updated_at = Utc::now().naive_utc(); |
|
|
|
|
|
|
|
|
match diesel::replace_into(folders::table) |
|
|
diesel::replace_into(folders::table) |
|
|
.values(&*self) |
|
|
.values(&*self).execute(&**conn).and(Ok(())) |
|
|
.execute(&**conn) { |
|
|
|
|
|
Ok(1) => true, // One row inserted
|
|
|
|
|
|
_ => false, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
pub fn delete(&self, conn: &DbConn) -> QueryResult<()> { |
|
|
pub fn delete(&self, conn: &DbConn) -> QueryResult<()> { |
|
|