Spiegel von
https://github.com/dani-garcia/vaultwarden.git
synchronisiert 2024-11-26 05:50:29 +01:00
Merge pull request #218 from janost/refactor-folder-save
Folder::save() should return QueryResult instead of bool
Dieser Commit ist enthalten in:
Commit
02fd68d63b
3 geänderte Dateien mit 18 neuen und 14 gelöschten Zeilen
|
@ -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<()> {
|
||||||
|
|
Laden …
In neuem Issue referenzieren