From c4d415417511004fa3e111cb3fad34c81d35c8ad Mon Sep 17 00:00:00 2001 From: Dustin Pianalto Date: Fri, 31 Jul 2020 02:33:00 -0800 Subject: [PATCH] Check if task is processing before processing it --- djpianalto.com/goff/utils/tasks.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/djpianalto.com/goff/utils/tasks.go b/djpianalto.com/goff/utils/tasks.go index 6eb6bf2..ea5b5cd 100644 --- a/djpianalto.com/goff/utils/tasks.go +++ b/djpianalto.com/goff/utils/tasks.go @@ -19,10 +19,25 @@ type Task struct { } func processTask(task *Task, s *discordgo.Session) { + query := "SELECT completed, processing from tasks where id = $1" + res, err := Database.Query(query, task.ID) + if err != nil { + log.Println(err) + } + var completed bool + var processing bool + err = res.Scan(&completed, &processing) + if err != nil { + log.Println(err) + return + } + if completed || processing { + return + } closeQuery := "Update tasks set completed = true where id = $1" processQuery := "UPDATE tasks SET processing = true WHERE id = $1" defer Database.Exec(closeQuery, task.ID) - _, err := Database.Exec(processQuery, task.ID) + _, err = Database.Exec(processQuery, task.ID) if err != nil { log.Println(err) return @@ -67,6 +82,12 @@ func processTask(task *Task, s *discordgo.Session) { log.Println(err) } } + processQuery = "UPDATE tasks SET processing = false WHERE id = $1" + _, err = Database.Exec(processQuery, task.ID) + if err != nil { + log.Println(err) + } + } func getTasksToRun() []Task {