queryer merger test progress

This commit is contained in:
2026-03-11 05:18:01 -04:00
parent 1c08a8f2b8
commit 44be75f5d4
104 changed files with 22563 additions and 18859 deletions

View File

@ -21,8 +21,21 @@ impl Merger {
}
}
pub fn merge(&self, data: Value) -> crate::drop::Drop {
match self.merge_internal(data) {
Ok(val) => crate::drop::Drop::success_with_val(val),
Err(msg) => crate::drop::Drop::with_errors(vec![crate::drop::Error {
code: "MERGE_FAILED".to_string(),
message: msg,
details: crate::drop::ErrorDetails {
path: "".to_string(),
},
}]),
}
}
/// Primary recursive entrypoint that separates Array lists from Object branches
pub fn merge(&self, data: Value) -> Result<Value, String> {
pub(crate) fn merge_internal(&self, data: Value) -> Result<Value, String> {
let result = match data {
Value::Array(items) => self.merge_array(items)?,
Value::Object(map) => self.merge_object(map)?,
@ -62,7 +75,7 @@ impl Merger {
let mut resolved_items = Vec::new();
for item in items {
// Recursively evaluate each object in the array
let resolved = self.merge(item)?;
let resolved = self.merge_internal(item)?;
resolved_items.push(resolved);
}
Ok(Value::Array(resolved_items))
@ -178,7 +191,7 @@ impl Merger {
}
// RECURSE: Merge the modified children
let merged_val = self.merge(child_val)?;
let merged_val = self.merge_internal(child_val)?;
// Post-Process: Apply relations upwards if parent owns the FK
if let Some((relation, parent_is_source, _child_is_source)) = relation_info {
@ -653,6 +666,8 @@ impl Merger {
}
}
my_changes.sort();
if is_update {
if my_changes.is_empty() {
continue;