mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-11 14:08:52 +00:00
More work on UI
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"github.com/Sirupsen/logrus"
|
||||
"src/task_tracker/config"
|
||||
@@ -44,12 +43,6 @@ func (database *Database) SetupLoggerHook() {
|
||||
func (database *Database) GetLogs(since int64, level logrus.Level) *[]LogEntry {
|
||||
|
||||
db := database.getDB()
|
||||
logs := getLogs(since, level, db)
|
||||
|
||||
return logs
|
||||
}
|
||||
|
||||
func getLogs(since int64, level logrus.Level, db *sql.DB) *[]LogEntry {
|
||||
|
||||
var logs []LogEntry
|
||||
|
||||
|
||||
@@ -102,12 +102,6 @@ func scanProject(row *sql.Row) (*Project, error) {
|
||||
func (database *Database) GetProjectWithRepoName(repoName string) *Project {
|
||||
|
||||
db := database.getDB()
|
||||
project := getProjectWithRepoName(repoName, db)
|
||||
return project
|
||||
}
|
||||
|
||||
func getProjectWithRepoName(repoName string, db *sql.DB) *Project {
|
||||
|
||||
row := db.QueryRow(`SELECT * FROM project WHERE LOWER(git_repo)=$1`, strings.ToLower(repoName))
|
||||
|
||||
project, err := scanProject(row)
|
||||
@@ -124,10 +118,6 @@ func getProjectWithRepoName(repoName string, db *sql.DB) *Project {
|
||||
func (database *Database) UpdateProject(project *Project) {
|
||||
|
||||
db := database.getDB()
|
||||
updateProject(project, db)
|
||||
}
|
||||
|
||||
func updateProject(project *Project, db *sql.DB) {
|
||||
|
||||
res, err := db.Exec(`UPDATE project
|
||||
SET (priority, name, clone_url, git_repo, version, motd) = ($1,$2,$3,$4,$5,$6) WHERE id=$7`,
|
||||
@@ -147,13 +137,6 @@ func updateProject(project *Project, db *sql.DB) {
|
||||
func (database *Database) GetProjectStats(id int64) *ProjectStats {
|
||||
|
||||
db := database.getDB()
|
||||
stats := getProjectStats(id, db)
|
||||
|
||||
return stats
|
||||
}
|
||||
|
||||
func getProjectStats(id int64, db *sql.DB) *ProjectStats {
|
||||
|
||||
stats := ProjectStats{}
|
||||
|
||||
stats.Project = getProject(id, db)
|
||||
@@ -169,7 +152,7 @@ func getProjectStats(id int64, db *sql.DB) *ProjectStats {
|
||||
if err != nil {
|
||||
logrus.WithError(err).WithFields(logrus.Fields{
|
||||
"id": id,
|
||||
}).Warn("???") //todo
|
||||
}).Trace("Get project stats: No task for this project")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -187,3 +170,36 @@ func getProjectStats(id int64, db *sql.DB) *ProjectStats {
|
||||
|
||||
return &stats
|
||||
}
|
||||
|
||||
func (database Database) GetAllProjectsStats() *[]ProjectStats {
|
||||
var statsList []ProjectStats
|
||||
|
||||
db := database.getDB()
|
||||
rows, err := db.Query(`SELECT
|
||||
SUM(CASE WHEN status='new' THEN 1 ELSE 0 END) newCount,
|
||||
SUM(CASE WHEN status='failed' THEN 1 ELSE 0 END) failedCount,
|
||||
SUM(CASE WHEN status='closed' THEN 1 ELSE 0 END) closedCount,
|
||||
p.*
|
||||
FROM task INNER JOIN project p on task.project = p.id
|
||||
GROUP BY p.id`)
|
||||
handleErr(err)
|
||||
|
||||
for rows.Next() {
|
||||
|
||||
stats := ProjectStats{}
|
||||
p := &Project{}
|
||||
err := rows.Scan(&stats.NewTaskCount, &stats.FailedTaskCount, &stats.ClosedTaskCount,
|
||||
&p.Id, &p.Priority, &p.Motd, &p.Name, &p.CloneUrl, &p.GitRepo, &p.Version)
|
||||
handleErr(err)
|
||||
|
||||
stats.Project = p
|
||||
|
||||
statsList = append(statsList, stats)
|
||||
}
|
||||
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"statsList": statsList,
|
||||
}).Trace("Get all projects stats")
|
||||
|
||||
return &statsList
|
||||
}
|
||||
|
||||
@@ -20,12 +20,6 @@ type Task struct {
|
||||
func (database *Database) SaveTask(task *Task, project int64) error {
|
||||
|
||||
db := database.getDB()
|
||||
taskErr := saveTask(task, project, db)
|
||||
|
||||
return taskErr
|
||||
}
|
||||
|
||||
func saveTask(task *Task, project int64, db *sql.DB) error {
|
||||
|
||||
res, err := db.Exec(`
|
||||
INSERT INTO task (project, max_retries, recipe, priority)
|
||||
@@ -52,12 +46,6 @@ func saveTask(task *Task, project int64, db *sql.DB) error {
|
||||
func (database *Database) GetTask(worker *Worker) *Task {
|
||||
|
||||
db := database.getDB()
|
||||
task := getTask(worker, db)
|
||||
|
||||
return task
|
||||
}
|
||||
|
||||
func getTask(worker *Worker, db *sql.DB) *Task {
|
||||
|
||||
row := db.QueryRow(`
|
||||
UPDATE task
|
||||
@@ -111,12 +99,6 @@ func getTaskById(id int64, db *sql.DB) *Task {
|
||||
func (database Database) ReleaseTask(id int64, workerId *uuid.UUID, success bool) bool {
|
||||
|
||||
db := database.getDB()
|
||||
res := releaseTask(workerId, id, success, db)
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func releaseTask(workerId *uuid.UUID, id int64, success bool, db *sql.DB) bool {
|
||||
|
||||
var res sql.Result
|
||||
var err error
|
||||
@@ -139,15 +121,9 @@ func releaseTask(workerId *uuid.UUID, id int64, success bool, db *sql.DB) bool {
|
||||
return rowsAffected == 1
|
||||
}
|
||||
|
||||
func (database *Database) GetTaskFromProject(worker *Worker, project int64) *Task {
|
||||
func (database *Database) GetTaskFromProject(worker *Worker, projectId int64) *Task {
|
||||
|
||||
db := database.getDB()
|
||||
task := getTaskFromProject(worker, project, db)
|
||||
|
||||
return task
|
||||
}
|
||||
|
||||
func getTaskFromProject(worker *Worker, projectId int64, db *sql.DB) *Task {
|
||||
|
||||
row := db.QueryRow(`
|
||||
UPDATE task
|
||||
@@ -158,7 +134,7 @@ func getTaskFromProject(worker *Worker, projectId int64, db *sql.DB) *Task {
|
||||
FROM task
|
||||
INNER JOIN project p on task.project = p.id
|
||||
WHERE assignee IS NULL AND p.id=$2
|
||||
ORDER BY p.priority DESC, task.priority DESC
|
||||
ORDER BY task.priority DESC
|
||||
LIMIT 1
|
||||
)
|
||||
RETURNING id`, worker.Id, projectId)
|
||||
|
||||
@@ -21,17 +21,6 @@ type Worker struct {
|
||||
func (database *Database) SaveWorker(worker *Worker) {
|
||||
|
||||
db := database.getDB()
|
||||
saveWorker(worker, db)
|
||||
}
|
||||
|
||||
func (database *Database) GetWorker(id uuid.UUID) *Worker {
|
||||
|
||||
db := database.getDB()
|
||||
worker := getWorker(id, db)
|
||||
return worker
|
||||
}
|
||||
|
||||
func saveWorker(worker *Worker, db *sql.DB) {
|
||||
|
||||
identityId := getOrCreateIdentity(worker.Identity, db)
|
||||
|
||||
@@ -45,7 +34,9 @@ func saveWorker(worker *Worker, db *sql.DB) {
|
||||
}).Trace("Database.saveWorker INSERT worker")
|
||||
}
|
||||
|
||||
func getWorker(id uuid.UUID, db *sql.DB) *Worker {
|
||||
func (database *Database) GetWorker(id uuid.UUID) *Worker {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
worker := &Worker{}
|
||||
var identityId int64
|
||||
|
||||
Reference in New Issue
Block a user