TODO snapshot from ALL log files, reconcile delta of staging to HOSTNAME file by TS
parent
c9ee9d9a27
commit
001712ed1c
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue