This commit is contained in:
+60
@@ -92,6 +92,15 @@ func Task(g *gin.RouterGroup, db database.Database) {
|
||||
return nil, slerrors.NotFound("Destination project")
|
||||
}
|
||||
|
||||
// Delete any links that would have been ran over.
|
||||
err = db.Tasks().DeleteLink(c.Request.Context(), models.TaskLink{
|
||||
TaskID: task.ID,
|
||||
ProjectID: project.ID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, slerrors.BadRequest(err.Error())
|
||||
}
|
||||
|
||||
task.ProjectID = project.ID
|
||||
}
|
||||
|
||||
@@ -111,6 +120,57 @@ func Task(g *gin.RouterGroup, db database.Database) {
|
||||
return task, nil
|
||||
}))
|
||||
|
||||
g.PUT("/:id/link/:project_id", handler("taskLink", func(c *gin.Context) (interface{}, error) {
|
||||
task, err := l.FindTask(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
project, err := l.FindProject(c.Request.Context(), c.Param("project_id"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if task.ProjectID == project.ID {
|
||||
return nil, slerrors.BadRequest("You cannot link a task within its own project")
|
||||
}
|
||||
|
||||
err = db.Tasks().CreateLink(c.Request.Context(), models.TaskLink{
|
||||
TaskID: task.ID,
|
||||
ProjectID: project.ID,
|
||||
})
|
||||
|
||||
return &models.TaskLink{
|
||||
TaskID: task.ID,
|
||||
ProjectID: project.ID,
|
||||
}, nil
|
||||
}))
|
||||
|
||||
g.DELETE("/:id/link/:project_id", handler("taskLink", func(c *gin.Context) (interface{}, error) {
|
||||
task, err := l.FindTask(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
project, err := l.FindProject(c.Request.Context(), c.Param("project_id"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = db.Tasks().DeleteLink(c.Request.Context(), models.TaskLink{
|
||||
TaskID: task.ID,
|
||||
ProjectID: project.ID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &models.TaskLink{
|
||||
TaskID: task.ID,
|
||||
ProjectID: project.ID,
|
||||
}, nil
|
||||
}))
|
||||
|
||||
g.DELETE("/:id", handler("task", func(c *gin.Context) (interface{}, error) {
|
||||
task, err := l.FindTask(c.Request.Context(), c.Param("id"))
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user