feoxdb/utils/
json_patch.rs1use crate::error::{FeoxError, Result};
2use json_patch::Patch;
3use serde_json::Value;
4
5pub fn apply_json_patch(document: &[u8], patch: &[u8]) -> Result<Vec<u8>> {
6 let mut doc: Value = serde_json::from_slice(document)
7 .map_err(|e| FeoxError::JsonPatchError(format!("Invalid JSON document: {}", e)))?;
8
9 let patch: Patch = serde_json::from_slice(patch)
10 .map_err(|e| FeoxError::JsonPatchError(format!("Invalid patch: {}", e)))?;
11
12 json_patch::patch(&mut doc, &patch)
13 .map_err(|e| FeoxError::JsonPatchError(format!("Patch failed: {}", e)))?;
14
15 serde_json::to_vec(&doc)
16 .map_err(|e| FeoxError::JsonPatchError(format!("Serialization failed: {}", e)))
17}