add w schedule via ts after now

master
Bel LaPointe 2025-12-02 17:03:06 -07:00
parent fe8a55b4c1
commit a5553d75f4
1 changed files with 13 additions and 8 deletions

View File

@ -20,12 +20,15 @@ fn main() {
Some(add_schedule) => {
let mut m = serde_yaml::Mapping::new();
m.insert("schedule".into(), add_schedule.into());
m.insert("todo".into(), add.into());
m.insert("do".into(), add.into());
Task(serde_yaml::Value::Mapping(m))
}
};
files.files[0]
.append(Delta::add(task))
.append(match task.next_due(Delta::now_time()) {
None => Delta::add(task),
Some(due) => Delta::add_at(task, due),
})
.expect("failed to add");
files.files[0]
.stage_persisted()
@ -198,7 +201,7 @@ impl File {
let now = Delta::now_time();
if let Some(due) = before.next_due(now.clone()) {
if due >= now {
self.append(Delta::add_at(before.clone(), now))?;
self.append(Delta::add_at(before.clone(), due))?;
}
}
}
@ -414,7 +417,9 @@ mod test_file {
{{"ts":2, "op":"Add", "task": "old"}}
{{"ts":2, "op":"Snapshot", "task": null, "tasks": ["removed", "old"]}}
{{"ts":{}, "op":"Add", "task": "persisted but not snapshotted"}}
{{"ts":{}, "op":"Add", "task": "doesnt exist yet"}}
"#,
Delta::now_time() - 50,
Delta::now_time() + 50,
)
.as_str(),
@ -422,14 +427,14 @@ mod test_file {
let f = File::new(&d.path().join("plain").to_str().unwrap().to_string());
assert_eq!(4, f.events().unwrap().0.len());
assert_eq!(5, f.events().unwrap().0.len());
assert_eq!(2, f.stage().unwrap().len());
tests::file_contains(&d, "plain", "old");
tests::file_contains(&d, "plain", "new");
f.persist_stage().unwrap();
assert_eq!(
6,
7,
f.events().unwrap().0.len(),
"events: {:?}",
f.events().unwrap()
@ -439,7 +444,7 @@ mod test_file {
f.stage_persisted().unwrap();
assert_eq!(
7,
8,
f.events().unwrap().0.len(),
"{:?}",
f.events().unwrap().0
@ -502,7 +507,7 @@ mod test_file {
{{"ts":1, "op":"Add", "task": "stage"}}
{{"ts":2, "op":"Snapshot", "task": null, "tasks": ["removed", "old"]}}
"#,
Delta::now_time() + 50,
//Delta::now_time() + 50,
)
.as_str(),
);
@ -877,7 +882,7 @@ impl Events {
fn snapshot(&self) -> Result<Vec<Task>, String> {
let mut result = vec![];
for event in self.0.iter() {
for event in self.0.iter().filter(|t| t.ts <= Delta::now_time()) {
match &event.op {
Op::Add => match event.task.next_due(event.ts) {
Some(next_due) => match next_due <= Delta::now_time() {