diff --git a/crates/pile-dataset/src/serve/extract.rs b/crates/pile-dataset/src/serve/extract.rs index 82615c9..6d909a6 100644 --- a/crates/pile-dataset/src/serve/extract.rs +++ b/crates/pile-dataset/src/serve/extract.rs @@ -101,17 +101,24 @@ pub async fn get_extract( let mut value = None; for path in &paths { match item.query(&extract_state, path).await { - Ok(Some(PileValue::Null)) | Ok(None) => continue, + Ok(None) => continue, + + Ok(Some(PileValue::Null)) => { + value = Some(PileValue::Null); + continue; + } + Ok(Some(v)) => { value = Some(v); break; } + Err(e) => return (StatusCode::INTERNAL_SERVER_ERROR, format!("{e:?}")).into_response(), } } let Some(value) = value else { - return StatusCode::NOT_FOUND.into_response(); + return (StatusCode::BAD_REQUEST, "no value").into_response(); }; debug!( @@ -177,6 +184,7 @@ pub async fn get_extract( Json(json), ) .into_response(), + Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("{e:?}")).into_response(), }, } diff --git a/crates/pile-dataset/src/serve/schema_field.rs b/crates/pile-dataset/src/serve/schema_field.rs index 14255da..65cb042 100644 --- a/crates/pile-dataset/src/serve/schema_field.rs +++ b/crates/pile-dataset/src/serve/schema_field.rs @@ -84,17 +84,24 @@ pub async fn schema_field( let mut value = None; for path in paths { match item.query(&extract_state, path).await { - Ok(Some(PileValue::Null)) | Ok(None) => continue, + Ok(None) => continue, + + Ok(Some(PileValue::Null)) => { + value = Some(PileValue::Null); + continue; + } + Ok(Some(v)) => { value = Some(v); break; } + Err(e) => return (StatusCode::INTERNAL_SERVER_ERROR, format!("{e:?}")).into_response(), } } let Some(value) = value else { - return StatusCode::NOT_FOUND.into_response(); + return (StatusCode::BAD_REQUEST, "no value").into_response(); }; debug!(