mirror of
https://github.com/simon987/task_tracker.git
synced 2025-04-10 14:06:43 +00:00
74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package storage
|
|
|
|
import (
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func (database *Database) ResetFailedTasks(pid int64) int64 {
|
|
|
|
db := database.getDB()
|
|
|
|
res, err := db.Exec(`UPDATE task SET status=1, retries=0, assign_time=NULL, assignee=NULL
|
|
WHERE project=$1 AND status=2`, pid)
|
|
handleErr(err)
|
|
|
|
rowsAffected, _ := res.RowsAffected()
|
|
return rowsAffected
|
|
}
|
|
|
|
func (database *Database) ResetTimedOutTasks() {
|
|
|
|
db := database.getDB()
|
|
|
|
res, err := db.Exec(`
|
|
UPDATE task SET assignee=NULL, assign_time=NULL
|
|
WHERE status=1 AND assignee IS NOT NULL
|
|
AND extract(epoch from now() at time zone 'utc') > (assign_time + max_assign_time);`)
|
|
handleErr(err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
rowsAffected, _ := res.RowsAffected()
|
|
|
|
logrus.WithFields(logrus.Fields{
|
|
"rowsAffected": rowsAffected,
|
|
}).Info("Reset timed out tasks")
|
|
}
|
|
|
|
func (database Database) HardReset(pid int64) int64 {
|
|
|
|
db := database.getDB()
|
|
|
|
_, err := db.Exec(`UPDATE task SET assignee=NULL WHERE project=$1`, pid)
|
|
handleErr(err)
|
|
res, err := db.Exec(`DELETE FROM task WHERE project=$1`, pid)
|
|
|
|
rowsAffected, _ := res.RowsAffected()
|
|
|
|
logrus.WithFields(logrus.Fields{
|
|
"rowsAffected": rowsAffected,
|
|
"project": pid,
|
|
}).Info("Hard reset")
|
|
|
|
return rowsAffected
|
|
}
|
|
|
|
func (database Database) ReclaimAssignedTasks(pid int64) int64 {
|
|
|
|
db := database.getDB()
|
|
|
|
res, err := db.Exec(`UPDATE task SET assignee=NULL, assign_time=NULL
|
|
WHERE project=$1 AND status=1`, pid)
|
|
handleErr(err)
|
|
|
|
rowsAffected, _ := res.RowsAffected()
|
|
|
|
logrus.WithFields(logrus.Fields{
|
|
"rowsAffected": rowsAffected,
|
|
"project": pid,
|
|
}).Info("Reclaim assigned tasks")
|
|
|
|
return rowsAffected
|
|
}
|