ChangeProjectName Handler + API
This commit is contained in:
parent
6c4fe7bda3
commit
47d4bda99b
7 changed files with 166 additions and 2 deletions
|
@ -47,6 +47,7 @@ type Database interface {
|
|||
GetUserName(id int) (string, error)
|
||||
UnsignWeeklyReport(reportId int, projectManagerId int) error
|
||||
DeleteReport(reportID int) error
|
||||
ChangeProjectName(projectName string, newProjectName string) error
|
||||
}
|
||||
|
||||
// This struct is a wrapper type that holds the database connection
|
||||
|
@ -670,3 +671,9 @@ func (d *Db) DeleteReport(reportID int) error {
|
|||
_, err := d.Exec("DELETE FROM weekly_reports WHERE report_id = ?", reportID)
|
||||
return err
|
||||
}
|
||||
|
||||
// ChangeProjectName is a handler that changes the name of a project
|
||||
func (d *Db) ChangeProjectName(projectName string, newProjectName string) error {
|
||||
_, err := d.Exec("UPDATE projects SET name = ? WHERE name = ?", newProjectName, projectName)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -1092,3 +1092,31 @@ func TestDeleteReport(t *testing.T) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
func TestChangeProjectName(t *testing.T) {
|
||||
db, err := setupAdvancedState()
|
||||
if err != nil {
|
||||
t.Error("setupState failed:", err)
|
||||
}
|
||||
|
||||
// Promote user to Admin
|
||||
err = db.PromoteToAdmin("demouser")
|
||||
if err != nil {
|
||||
t.Error("PromoteToAdmin failed:", err)
|
||||
}
|
||||
|
||||
// Change project name
|
||||
err = db.ChangeProjectName("projecttest", "newprojectname")
|
||||
if err != nil {
|
||||
t.Error("ChangeProjectName failed:", err)
|
||||
}
|
||||
|
||||
// Check if the project name was changed
|
||||
projects, err := db.GetAllProjects()
|
||||
if err != nil {
|
||||
t.Error("GetAllProjects failed:", err)
|
||||
}
|
||||
if projects[0].Name != "newprojectname" {
|
||||
t.Error("ChangeProjectName failed: expected newprojectname, got", projects[0].Name)
|
||||
}
|
||||
}
|
||||
|
|
42
backend/internal/handlers/projects/ChangeProjectName.go
Normal file
42
backend/internal/handlers/projects/ChangeProjectName.go
Normal file
|
@ -0,0 +1,42 @@
|
|||
package projects
|
||||
|
||||
import (
|
||||
db "ttime/internal/database"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/log"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
)
|
||||
|
||||
// ChangeProjectName is a handler that changes the name of a project
|
||||
func ChangeProjectName(c *fiber.Ctx) error {
|
||||
|
||||
//check token and get username of current user
|
||||
user := c.Locals("user").(*jwt.Token)
|
||||
claims := user.Claims.(jwt.MapClaims)
|
||||
username := claims["name"].(string)
|
||||
|
||||
// Extract the necessary parameters from the request
|
||||
projectName := c.Params("projectName")
|
||||
newProjectName := c.Query("newProjectName")
|
||||
|
||||
// Check if user is project manager
|
||||
ismanager, err := db.GetDb(c).IsProjectManager(username, projectName)
|
||||
if err != nil {
|
||||
log.Warn("Error checking if projectmanager:", err)
|
||||
return c.Status(500).SendString(err.Error())
|
||||
} else if !ismanager {
|
||||
log.Warn("User is not projectmanager")
|
||||
return c.Status(401).SendString("User is not projectmanager")
|
||||
}
|
||||
|
||||
// Perform the project name change
|
||||
err = db.GetDb(c).ChangeProjectName(projectName, newProjectName)
|
||||
if err != nil {
|
||||
log.Warn("Error changing project name:", err)
|
||||
return c.Status(500).SendString(err.Error())
|
||||
}
|
||||
|
||||
// Return a success message
|
||||
return c.Status(200).SendString("Project name changed successfully")
|
||||
}
|
|
@ -125,6 +125,7 @@ func main() {
|
|||
api.Delete("/removeUserFromProject/:projectName", projects.RemoveUserFromProject)
|
||||
api.Delete("/removeProject/:projectName", projects.RemoveProject)
|
||||
api.Delete("/project/:projectID", projects.DeleteProject)
|
||||
api.Put("/ChangeProjectName/:projectName", projects.ChangeProjectName)
|
||||
|
||||
// All report related routes
|
||||
// reportGroup := api.Group("/report") // Not currently in use
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue