pub async fn object_set_metadata(
profile_id: ProfileId,
bucket: BucketId,
key: String,
metadata: HashMap<String, String>,
if_match_etag: Option<String>,
store: State<'_, ProfileStoreHandle>,
pool: State<'_, S3ClientPoolHandle>,
locks: State<'_, LockRegistryHandle>,
cache: State<'_, CacheHandle>,
channel: AppHandle,
) -> Result<PutResult, AppError>Expand description
Replace user-defined metadata on bucket/key.
Uses a server-side CopyObject self-overwrite with MetadataDirective::Replace
so the object body is preserved without re-uploading.
When if_match_etag is supplied the backend enforces an ETag precondition.
A mismatch returns AppError::Conflict.