mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-11 14:08:52 +00:00
Add project secret & bug fix
This commit is contained in:
@@ -39,6 +39,8 @@ func (database *Database) getDB() *sql.DB {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
db.SetMaxOpenConns(50)
|
||||
|
||||
database.db = db
|
||||
} else {
|
||||
err := database.db.Ping()
|
||||
|
||||
@@ -192,3 +192,36 @@ func (database *Database) GetAssigneeStats(pid int64, count int64) *[]AssignedTa
|
||||
|
||||
return &assignees
|
||||
}
|
||||
|
||||
func (database *Database) GetSecret(pid int64, workerId int64) (secret string, err error) {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
var row *sql.Row
|
||||
if workerId == 0 {
|
||||
row = db.QueryRow(`SELECT secret FROM project WHERE id=$1`, pid)
|
||||
} else {
|
||||
row = db.QueryRow(`SELECT secret FROM project
|
||||
WHERE id =$1 AND (
|
||||
SELECT a.role_assign FROM worker_access a WHERE a.worker=$2 AND a.project=$1
|
||||
)`, pid, workerId)
|
||||
}
|
||||
|
||||
err = row.Scan(&secret)
|
||||
handleErr(err)
|
||||
return
|
||||
}
|
||||
|
||||
func (database *Database) SetSecret(pid int64, secret string) {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
res, err := db.Exec(`UPDATE project SET secret=$1 WHERE id=$2`, secret, pid)
|
||||
handleErr(err)
|
||||
|
||||
rowsAffected, _ := res.RowsAffected()
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"rowsAffected": rowsAffected,
|
||||
"project": pid,
|
||||
}).Info("Set secret")
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ func (database *Database) GetTask(worker *Worker) *Task {
|
||||
INNER JOIN project project on task.project = project.id
|
||||
LEFT JOIN worker_verifies_task wvt on task.id = wvt.task AND wvt.worker=$1
|
||||
WHERE assignee IS NULL AND task.status=1
|
||||
AND (project.public OR EXISTS (
|
||||
AND (project.public OR (
|
||||
SELECT a.role_assign FROM worker_access a WHERE a.worker=$1 AND a.project=project.id
|
||||
))
|
||||
AND wvt.task IS NULL
|
||||
@@ -144,9 +144,10 @@ func (database Database) ReleaseTask(id int64, workerId int64, result TaskResult
|
||||
|
||||
var taskUpdated bool
|
||||
if result == TR_OK {
|
||||
row := db.QueryRow(`SELECT release_task_ok($1,$2,$3)`, workerId, id, verification)
|
||||
row := db.QueryRow(fmt.Sprintf(`SELECT release_task_ok(%d,%d,%d)`, workerId, id, verification))
|
||||
|
||||
_ = row.Scan(&taskUpdated)
|
||||
err := row.Scan(&taskUpdated)
|
||||
handleErr(err)
|
||||
} else if result == TR_FAIL {
|
||||
res, err := db.Exec(`UPDATE task SET (status, assignee, retries) =
|
||||
(CASE WHEN retries+1 >= max_retries THEN 2 ELSE 1 END, NULL, retries+1)
|
||||
|
||||
Reference in New Issue
Block a user