From a50fa70d45f8b5af68d23d60c3bac2af4ecceb58 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Sun, 8 Nov 2020 15:04:30 +0100 Subject: Refactor error management in API part --- src/api/s3_copy.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/api/s3_copy.rs') diff --git a/src/api/s3_copy.rs b/src/api/s3_copy.rs index db790d95..4280f4bf 100644 --- a/src/api/s3_copy.rs +++ b/src/api/s3_copy.rs @@ -6,13 +6,14 @@ use hyper::{Body, Response}; use garage_table::*; use garage_util::data::*; -use garage_util::error::Error; use garage_model::block_ref_table::*; use garage_model::garage::Garage; use garage_model::object_table::*; use garage_model::version_table::*; +use crate::error::*; + pub async fn handle_copy( garage: Arc, dest_bucket: &str, -- cgit v1.2.3 From 5a5592c176c7a17f143d0f221b6495808b7f4054 Mon Sep 17 00:00:00 2001 From: Quentin Date: Wed, 11 Nov 2020 16:12:42 +0100 Subject: Replace with option syntaxic sugar --- src/api/s3_copy.rs | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) (limited to 'src/api/s3_copy.rs') diff --git a/src/api/s3_copy.rs b/src/api/s3_copy.rs index 4280f4bf..5997e4fe 100644 --- a/src/api/s3_copy.rs +++ b/src/api/s3_copy.rs @@ -21,25 +21,20 @@ pub async fn handle_copy( source_bucket: &str, source_key: &str, ) -> Result, Error> { - let source_object = match garage + let source_object = garage .object_table .get(&source_bucket.to_string(), &source_key.to_string()) .await? - { - None => return Err(Error::NotFound), - Some(o) => o, - }; + .ok_or(Error::NotFound)?; - let source_last_v = match source_object + let source_last_v = source_object .versions() .iter() .rev() .filter(|v| v.is_complete()) .next() - { - Some(v) => v, - None => return Err(Error::NotFound), - }; + .ok_or(Error::NotFound)?; + let source_last_state = match &source_last_v.state { ObjectVersionState::Complete(x) => x, _ => unreachable!(), @@ -69,10 +64,7 @@ pub async fn handle_copy( .version_table .get(&source_last_v.uuid, &EmptyKey) .await?; - let source_version = match source_version { - Some(v) => v, - None => return Err(Error::NotFound), - }; + let source_version = source_version.ok_or(Error::NotFound)?; let dest_version = Version::new( new_uuid, -- cgit v1.2.3