getStatistics handler, db-interface and ts API
This commit is contained in:
parent
2d2b63938c
commit
fe9d5f74bb
8 changed files with 188 additions and 1 deletions
|
@ -2,11 +2,13 @@ package database
|
|||
|
||||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"ttime/internal/types"
|
||||
|
||||
"github.com/gofiber/fiber/v2/log"
|
||||
"github.com/jmoiron/sqlx"
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
@ -41,6 +43,7 @@ type Database interface {
|
|||
SignWeeklyReport(reportId int, projectManagerId int) error
|
||||
IsSiteAdmin(username string) (bool, error)
|
||||
IsProjectManager(username string, projectname string) (bool, error)
|
||||
ReportStatistics(username string, projectName string) (*types.Statistics, error)
|
||||
GetProjectTimes(projectName string) (map[string]int, error)
|
||||
UpdateWeeklyReport(projectName string, userName string, week int, developmentTime int, meetingTime int, adminTime int, ownWorkTime int, studyTime int, testingTime int) error
|
||||
RemoveProject(projectname string) error
|
||||
|
@ -94,6 +97,17 @@ const removeUserFromProjectQuery = `DELETE FROM user_roles
|
|||
WHERE user_id = (SELECT id FROM users WHERE username = ?)
|
||||
AND project_id = (SELECT id FROM projects WHERE name = ?)`
|
||||
|
||||
const reportStatistics = `SELECT SUM(development_time) AS total_development_time,
|
||||
SUM(meeting_time) AS total_meeting_time,
|
||||
SUM(admin_time) AS total_admin_time,
|
||||
SUM(own_work_time) AS total_own_work_time,
|
||||
SUM(study_time) AS total_study_time,
|
||||
SUM(testing_time) AS total_testing_time
|
||||
FROM weekly_reports
|
||||
WHERE user_id = (SELECT id FROM users WHERE username = ?)
|
||||
AND project_id = (SELECT id FROM projects WHERE name = ?)
|
||||
GROUP BY user_id, project_id`
|
||||
|
||||
// DbConnect connects to the database
|
||||
func DbConnect(dbpath string) Database {
|
||||
// Open the database
|
||||
|
@ -111,6 +125,24 @@ func DbConnect(dbpath string) Database {
|
|||
return &Db{db}
|
||||
}
|
||||
|
||||
func (d *Db) ReportStatistics(username string, projectName string) (*types.Statistics, error) {
|
||||
var result types.Statistics
|
||||
|
||||
err := d.Get(&result, reportStatistics, username, projectName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
serialized, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Info(string(serialized))
|
||||
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
func (d *Db) CheckUser(username string, password string) bool {
|
||||
var dbPassword string
|
||||
err := d.Get(&dbPassword, "SELECT password FROM users WHERE username = ?", username)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue