Add project secret & bug fix

This commit is contained in:
simon987
2019-02-19 19:38:54 -05:00
parent 94c3ce3267
commit f235bfb588
27 changed files with 443 additions and 54 deletions

View File

@@ -39,6 +39,8 @@ func (database *Database) getDB() *sql.DB {
logrus.Fatal(err)
}
db.SetMaxOpenConns(50)
database.db = db
} else {
err := database.db.Ping()

View File

@@ -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")
}

View File

@@ -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)