some bug fixes, some optimizations

This commit is contained in:
simon987
2019-02-11 20:10:33 -05:00
parent 51eb9ae6da
commit 4edf354f8d
13 changed files with 141 additions and 61 deletions

View File

@@ -104,8 +104,8 @@ func (database *Database) UpdateManager(manager *Manager) {
func (database *Database) UpdateManagerPassword(manager *Manager, newPassword []byte) {
hash := crypto.SHA512.New()
hash.Write([]byte(manager.Username))
hash.Write(newPassword)
hash.Write([]byte(manager.Username))
hashedPassword := hash.Sum(nil)
db := database.getDB()

View File

@@ -131,14 +131,27 @@ func (database *Database) UpdateProject(project *Project) error {
return nil
}
func (database Database) GetAllProjects() *[]Project {
func (database Database) GetAllProjects(workerId int64) *[]Project {
projects := make([]Project, 0)
db := database.getDB()
rows, err := db.Query(`SELECT
var rows *sql.Rows
var err error
if workerId == 0 {
rows, err = db.Query(`SELECT
Id, priority, name, clone_url, git_repo, version, motd, public
FROM project
LEFT JOIN worker_has_access_to_project whatp ON whatp.project = id
WHERE public
ORDER BY name`)
} else {
rows, err = db.Query(`SELECT
Id, priority, name, clone_url, git_repo, version, motd, public
FROM project
LEFT JOIN worker_has_access_to_project whatp ON whatp.project = id
WHERE public OR whatp.worker = $1
ORDER BY name`, workerId)
}
handleErr(err)
for rows.Next() {

View File

@@ -134,52 +134,34 @@ func (database Database) ReleaseTask(id int64, workerId int64, result TaskResult
db := database.getDB()
var rowsAffected int64
var taskUpdated bool
if result == TR_OK {
var pid int64
//If no verification is required
row := db.QueryRow(`DELETE FROM task WHERE id=$1 AND assignee=$2 AND verification_count < 2
RETURNING project`, id, workerId)
err := row.Scan(&pid)
if err == nil {
rowsAffected = 1
} else {
//If verification is required
_, err = db.Exec(`INSERT INTO worker_verifies_task (worker, verification_hash, task)
SELECT $1,$2,task.id FROM task WHERE assignee=$1`, workerId, verification)
handleErr(err)
res, _ := db.Exec(`DELETE FROM task WHERE id=$1 AND assignee=$2 AND
(SELECT COUNT(*) as vcnt FROM worker_verifies_task wvt WHERE task=$1
GROUP BY wvt.verification_hash ORDER BY vcnt DESC LIMIT 1) >= task.verification_count`,
id, workerId)
rowsAffected, _ = res.RowsAffected()
_, _ = db.Exec(`UPDATE task SET assignee=NULL WHERE id=$1 AND assignee=$2`, id, workerId)
}
row := db.QueryRow(`SELECT release_task_ok($1,$2,$3)`, workerId, id, verification)
_ = row.Scan(&taskUpdated)
} 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)
WHERE id=$1 AND assignee=$2`, id, workerId)
handleErr(err)
rowsAffected, _ = res.RowsAffected()
rowsAffected, _ := res.RowsAffected()
taskUpdated = rowsAffected == 1
} else if result == TR_SKIP {
res, err := db.Exec(`UPDATE task SET (status, assignee) = (1, NULL)
WHERE id=$1 AND assignee=$2`, id, workerId)
handleErr(err)
rowsAffected, _ = res.RowsAffected()
rowsAffected, _ := res.RowsAffected()
taskUpdated = rowsAffected == 1
}
logrus.WithFields(logrus.Fields{
"rowsAffected": rowsAffected,
"taskUpdated": taskUpdated,
"taskId": id,
"workerId": workerId,
"verification": verification,
}).Trace("Database.ReleaseTask")
return rowsAffected == 1
return taskUpdated
}
func (database *Database) GetTaskFromProject(worker *Worker, projectId int64) *Task {