use super::super::compare_task_fields;
use crate::contracts::Task;
use anyhow::Result;
pub(super) fn log_task_update_changes(
before_json: &str,
task_id: &str,
location: &str,
after_task: Option<&Task>,
) -> Result<()> {
let Some(after_task) = after_task else {
log::warn!(
"Task {} was removed during update and not found in done.jsonc.",
task_id
);
return Ok(());
};
let after_json = serde_json::to_string(after_task)?;
if before_json == after_json {
log::info!("Task {} {}. No changes detected.", task_id, location);
return Ok(());
}
let changed_fields = compare_task_fields(before_json, &after_json)?;
log::info!(
"Task {} {}. Changed fields: {}",
task_id,
location,
changed_fields.join(", ")
);
Ok(())
}