every -loop duration, look for completed tasks with loop set and incomplete them

This commit is contained in:
Bel LaPointe
2021-07-17 11:04:52 -06:00
parent 81c8743de7
commit b8f0efc01c
3 changed files with 44 additions and 0 deletions

View File

@@ -3,8 +3,11 @@ package ajax
import (
"local/storage"
"local/todo-server/config"
"local/todo-server/server/ajax/task"
"log"
"net/http"
"net/url"
"time"
)
type Ajax struct {
@@ -82,3 +85,39 @@ func has(params url.Values, k string) bool {
_, ok := params[k]
return ok
}
func (a *Ajax) Async() {
c := time.NewTicker(config.Loop)
for range c.C {
log.Println("loop tasks")
if err := a.loopTasks(); err != nil {
log.Println("failed to loop tasks", err)
}
}
}
func (a *Ajax) loopTasks() error {
lists, err := a.storageListLists()
if err != nil {
return err
}
for _, list := range lists {
tasks, err := a.storageListTasks(list.UUID, func(t *task.Task) bool {
return t.Complete
})
if err != nil {
return err
}
for _, task := range tasks {
if !task.Complete || task.Loop == 0 || time.Since(task.Completed) < task.Loop {
continue
}
task.Complete = false
task.Completed = time.Time{}
if err := a.storageSetTask(list.UUID, task); err != nil {
return err
}
}
}
return nil
}