From 064a747bb48b9ab6a1816a55bc8d660e6760ae5c Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sat, 14 Jan 2023 23:55:10 -0700 Subject: [PATCH] server/upload_path: Expose the final file size in the response --- attic/src/api/v1/upload_path.rs | 4 ++++ server/src/api/v1/upload_path.rs | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/attic/src/api/v1/upload_path.rs b/attic/src/api/v1/upload_path.rs index 10f7bcc..fbe23d0 100644 --- a/attic/src/api/v1/upload_path.rs +++ b/attic/src/api/v1/upload_path.rs @@ -57,6 +57,10 @@ pub struct UploadPathNarInfo { pub struct UploadPathResult { #[serde_as(deserialize_as = "DefaultOnError")] pub kind: UploadPathResultKind, + + /// The compressed size of the NAR, in bytes. + #[serde(skip_serializing_if = "Option::is_none")] + pub file_size: Option, } #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] diff --git a/server/src/api/v1/upload_path.rs b/server/src/api/v1/upload_path.rs index b01a1e0..73dfecb 100644 --- a/server/src/api/v1/upload_path.rs +++ b/server/src/api/v1/upload_path.rs @@ -188,11 +188,16 @@ async fn upload_path_dedup( txn.commit().await.map_err(ServerError::database_error)?; + let file_size = existing_nar.file_size + .map(|dbs| dbs.try_into().map_err(ServerError::database_error)) + .transpose()?; + // Ensure it's not unlocked earlier drop(existing_nar); Ok(Json(UploadPathResult { kind: UploadPathResultKind::Deduplicated, + file_size, })) } @@ -339,6 +344,7 @@ async fn upload_path_new( Ok(Json(UploadPathResult { kind: UploadPathResultKind::Uploaded, + file_size: Some(*file_size), })) }