TODO snapshot from ALL log files, reconcile delta of staging to HOSTNAME file by TS

master
bel 2025-11-11 00:15:46 -07:00
parent c9ee9d9a27
commit 001712ed1c
1 changed files with 14 additions and 14 deletions

View File

@ -100,17 +100,23 @@ impl File {
Events::new(&self.file)
}
fn reconcile_snapshot_changes(&self) -> Result<(), String> {
let snapshot = self.events()?.snapshot()?;
let snapshot = serde_json::to_string(&snapshot).unwrap();
fn stash_staged_changes(&self, stashed: Vec<Task>) -> Result<(), String> {
let snapshot = serde_json::to_string(&stashed).unwrap();
let snapshot: serde_json::Value = serde_json::from_str(snapshot.as_str()).unwrap();
let stage = self.snapshot()?;
let stage = serde_json::to_string(&stage).unwrap();
let stage: serde_json::Value = serde_json::from_str(stage.as_str()).unwrap();
let patch = json_patch::diff(&snapshot, &stage);
panic!("not impl jsondiff snapshots: {:?}", patch)
let patches = json_patch::diff(&snapshot, &stage);
let deltas: Vec<Delta> = patches.iter()
.map(|patch| patch.clone())
.map(|patch| Delta::now(patch.clone()))
.collect();
for delta in deltas.iter() {
self.append(serde_json::to_string(delta).unwrap())?;
}
Ok(())
}
fn snapshot(&self) -> Result<Vec<Task>, String> {
@ -160,24 +166,18 @@ impl File {
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Delta{
ts: u64,
patch: json_patch::Patch,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
struct TaskTs {
task: Task,
ts: u64,
patch: json_patch::PatchOperation,
}
impl Delta {
fn new(patch: json_patch::Patch, ts: u64) -> TaskTs {
fn new(patch: json_patch::PatchOperation, ts: u64) -> Delta {
Delta{
patch: patch,
ts: ts,
}
}
fn now(patch: json_patch::Patch) -> Delta {
fn now(patch: json_patch::PatchOperation) -> Delta {
Self::new(patch, std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs().try_into().unwrap())
}
}