Merge branch 'borean-dev' into dev
This commit is contained in:
commit
0b23c5f8f1
4 changed files with 210 additions and 1 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
@ -15,12 +16,16 @@ type Database interface {
|
|||
AddUser(username string, password string) error
|
||||
RemoveUser(username string) error
|
||||
PromoteToAdmin(username string) error
|
||||
PromoteToAdmin(username string) error
|
||||
GetUserId(username string) (int, error)
|
||||
AddProject(name string, description string, username string) error
|
||||
Migrate(dirname string) error
|
||||
// AddTimeReport(projectname string, start time.Time, end time.Time) error
|
||||
// AddUserToProject(username string, projectname string) error
|
||||
// ChangeUserRole(username string, projectname string, role string) error
|
||||
// AddTimeReport(projectname string, start time.Time, end time.Time) error
|
||||
// AddUserToProject(username string, projectname string) error
|
||||
// ChangeUserRole(username string, projectname string, role string) error
|
||||
}
|
||||
|
||||
// This struct is a wrapper type that holds the database connection
|
||||
|
@ -39,6 +44,10 @@ const promoteToAdmin = "INSERT INTO site_admin (admin_id) SELECT id FROM users W
|
|||
// const addTimeReport = ""
|
||||
// const addUserToProject = ""
|
||||
// const changeUserRole = ""
|
||||
const promoteToAdmin = "INSERT INTO site_admin (admin_id) SELECT id FROM users WHERE username = ?"
|
||||
const addTimeReport = "INSERT INTO activity (report_id, activity_nbr, start_time, end_time, break, comment) VALUES (?, ?, ?, ?, ?, ?)" // WIP
|
||||
const addUserToProject = "INSERT INTO project_member (project_id, user_id, role) VALUES (?, ?, ?)" // WIP
|
||||
// const changeUserRole = ""
|
||||
|
||||
// DbConnect connects to the database
|
||||
func DbConnect(dbpath string) Database {
|
||||
|
@ -69,6 +78,32 @@ func DbConnect(dbpath string) Database {
|
|||
|
||||
// }
|
||||
|
||||
func (d *Db) AddTimeReport(projectname string, start time.Time, end time.Time, breakTime uint32) error { // WIP
|
||||
_, err := d.Exec(addTimeReport, projectname, 0, start, end, breakTime, false)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Db) AddUserToProject(username string, projectname string, role string) error { // WIP
|
||||
var userid int
|
||||
userid, err := d.GetUserId(username)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
var projectid int
|
||||
projectid, err2 := d.GetProjectId(projectname)
|
||||
if err2 != nil {
|
||||
panic(err2)
|
||||
}
|
||||
|
||||
_, err3 := d.Exec(addUserToProject, projectid, userid, role)
|
||||
return err3
|
||||
}
|
||||
|
||||
// func (d *Db) ChangeUserRole(username string, projectname string, role string) error {
|
||||
|
||||
// }
|
||||
|
||||
// AddUser adds a user to the database
|
||||
func (d *Db) AddUser(username string, password string) error {
|
||||
_, err := d.Exec(userInsert, username, password)
|
||||
|
@ -86,9 +121,20 @@ func (d *Db) PromoteToAdmin(username string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (d *Db) PromoteToAdmin(username string) error {
|
||||
_, err := d.Exec(promoteToAdmin, username)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Db) GetUserId(username string) (int, error) {
|
||||
var id int
|
||||
err := d.Get(&id, "SELECT id FROM users WHERE username = ?", username)
|
||||
err := d.Get(&id, "SELECT id FROM users WHERE username = ?", username) // Borde det inte vara "user" i singular
|
||||
return id, err
|
||||
}
|
||||
|
||||
func (d *Db) GetProjectId(projectname string) (int, error) { // WIP, denna kan vara goof
|
||||
var id int
|
||||
err := d.Get(&id, "SELECT id FROM project WHERE project_name = ?", projectname)
|
||||
return id, err
|
||||
}
|
||||
|
||||
|
|
19
backend/internal/model/timereport.go
Normal file
19
backend/internal/model/timereport.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package model
|
||||
|
||||
type TimeReport struct {
|
||||
reportId string
|
||||
projectName string
|
||||
userName string
|
||||
userRole string
|
||||
reportDate string
|
||||
timeWorked uint64
|
||||
isSigned bool
|
||||
reportStatus string // Example "draft", "signed", "unsigned"
|
||||
}
|
||||
|
||||
type Project struct {
|
||||
timeReports []TimeReport
|
||||
projectName string
|
||||
projectmembers map[string]User
|
||||
projectRoles map[string]User
|
||||
}
|
139
backend/internal/model/user.go
Normal file
139
backend/internal/model/user.go
Normal file
|
@ -0,0 +1,139 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
type Account struct {
|
||||
fullName string
|
||||
userName string
|
||||
}
|
||||
|
||||
type Administrator struct {
|
||||
projects map[string]Project
|
||||
Account
|
||||
ProjectMember // comp
|
||||
}
|
||||
|
||||
// Administrator reciever functions
|
||||
func (administrator Administrator) addUser(project *Project, user *User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (administrator Administrator) removerUser(project *Project, user *User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (administrator Administrator) deleteProject(project *Project) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (administrator Administrator) changeUserRole(project *Project, user *User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (administrator *Administrator) login() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (administrator *Administrator) logout() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
type ProjectManager struct {
|
||||
managedProjects map[string]Project // projekt som förvaltas av projektledaren
|
||||
totalTime uint64 // total totalt tid arbetat av projektledaren
|
||||
Account
|
||||
ProjectMember // comp
|
||||
}
|
||||
|
||||
// ProjectManager reciever functions
|
||||
func (projectManager ProjectManager) signReport(timeReport *TimeReport, user User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager ProjectManager) unsignReport(timeReport *TimeReport, user User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager ProjectManager) getAllReports(project *Project) ([]TimeReport, error) {
|
||||
// WIP
|
||||
return project.timeReports, errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager ProjectManager) assignRole(user *User, project *Project, newRole string) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager ProjectManager) removeMember(project *Project, user *User) error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager ProjectManager) getTotalTime(project *Project) (uint64, error) {
|
||||
// WIP
|
||||
return 0, errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager *ProjectManager) login() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectManager *ProjectManager) logout() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
type ProjectMember struct {
|
||||
timereports []TimeReport
|
||||
role string // ?????
|
||||
Account // comp
|
||||
}
|
||||
|
||||
// User reciever functions
|
||||
|
||||
// function used to create a time report, returning a *TimeReport is questionable
|
||||
func (ProjectMember *ProjectMember) createTimeReport(Project *Project) (*TimeReport, error) {
|
||||
// WIP
|
||||
return &TimeReport{}, errors.New("WIP")
|
||||
}
|
||||
|
||||
func (ProjectMember ProjectMember) getTimeReport(timereports *[]TimeReport) (*TimeReport, error) {
|
||||
// WIP
|
||||
return &TimeReport{}, errors.New("WIP")
|
||||
}
|
||||
|
||||
func (ProjectMember *ProjectMember) editTimeReport(timereport *TimeReport) {
|
||||
// timereport.editReport()
|
||||
// WIP
|
||||
}
|
||||
|
||||
func (projectUser ProjectMember) deleteTimeReport(timeReport *TimeReport) error { // Ska bara project manager kunna göra detta? fråga ledarna!
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectUser *ProjectMember) login() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
func (projectUser *ProjectMember) logout() error {
|
||||
// WIP
|
||||
return errors.New("WIP")
|
||||
}
|
||||
|
||||
type User interface {
|
||||
login()
|
||||
logout()
|
||||
}
|
5
go.work.sum
Normal file
5
go.work.sum
Normal file
|
@ -0,0 +1,5 @@
|
|||
github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
|
||||
github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw=
|
||||
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
|
||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
Loading…
Reference in a new issue