mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-10 21:48:52 +00:00
Added public project attribute & worker access api endpoints
This commit is contained in:
@@ -50,6 +50,9 @@ func New() *WebAPI {
|
||||
api.router.POST("/worker/create", LogRequestMiddleware(api.WorkerCreate))
|
||||
api.router.GET("/worker/get/:id", LogRequestMiddleware(api.WorkerGet))
|
||||
|
||||
api.router.POST("/access/grant", LogRequestMiddleware(api.WorkerGrantAccess))
|
||||
api.router.POST("/access/remove", LogRequestMiddleware(api.WorkerRemoveAccess))
|
||||
|
||||
api.router.POST("/project/create", LogRequestMiddleware(api.ProjectCreate))
|
||||
api.router.GET("/project/get/:id", LogRequestMiddleware(api.ProjectGet))
|
||||
api.router.GET("/project/stats/:id", LogRequestMiddleware(api.ProjectGetStats))
|
||||
|
||||
@@ -13,6 +13,7 @@ type CreateProjectRequest struct {
|
||||
Version string `json:"version"`
|
||||
Priority int64 `json:"priority"`
|
||||
Motd string `json:"motd"`
|
||||
Public bool `json:"public"`
|
||||
}
|
||||
|
||||
type CreateProjectResponse struct {
|
||||
@@ -51,6 +52,7 @@ func (api *WebAPI) ProjectCreate(r *Request) {
|
||||
GitRepo: createReq.GitRepo,
|
||||
Priority: createReq.Priority,
|
||||
Motd: createReq.Motd,
|
||||
Public: createReq.Public,
|
||||
}
|
||||
|
||||
if isValidProject(project) {
|
||||
|
||||
36
api/task.go
36
api/task.go
@@ -9,10 +9,11 @@ import (
|
||||
)
|
||||
|
||||
type CreateTaskRequest struct {
|
||||
Project int64 `json:"project"`
|
||||
MaxRetries int64 `json:"max_retries"`
|
||||
Recipe string `json:"recipe"`
|
||||
Priority int64 `json:"priority"`
|
||||
Project int64 `json:"project"`
|
||||
MaxRetries int64 `json:"max_retries"`
|
||||
Recipe string `json:"recipe"`
|
||||
Priority int64 `json:"priority"`
|
||||
MaxAssignTime int64 `json:"max_assign_time"`
|
||||
}
|
||||
|
||||
type ReleaseTaskRequest struct {
|
||||
@@ -43,9 +44,11 @@ func (api *WebAPI) TaskCreate(r *Request) {
|
||||
if r.GetJson(&createReq) {
|
||||
|
||||
task := &storage.Task{
|
||||
MaxRetries: createReq.MaxRetries,
|
||||
Recipe: createReq.Recipe,
|
||||
Priority: createReq.Priority,
|
||||
MaxRetries: createReq.MaxRetries,
|
||||
Recipe: createReq.Recipe,
|
||||
Priority: createReq.Priority,
|
||||
AssignTime: 0,
|
||||
MaxAssignTime: createReq.MaxAssignTime,
|
||||
}
|
||||
|
||||
if isTaskValid(task) {
|
||||
@@ -99,10 +102,21 @@ func (api *WebAPI) TaskGetFromProject(r *Request) {
|
||||
handleErr(err, r)
|
||||
task := api.Database.GetTaskFromProject(worker, int64(project))
|
||||
|
||||
r.OkJson(GetTaskResponse{
|
||||
Ok: true,
|
||||
Task: task,
|
||||
})
|
||||
if task == nil {
|
||||
|
||||
r.OkJson(GetTaskResponse{
|
||||
Ok: false,
|
||||
Message: "No task available",
|
||||
})
|
||||
|
||||
} else {
|
||||
|
||||
r.OkJson(GetTaskResponse{
|
||||
Ok: true,
|
||||
Task: task,
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (api *WebAPI) TaskGet(r *Request) {
|
||||
|
||||
@@ -22,6 +22,16 @@ type GetWorkerResponse struct {
|
||||
Worker *storage.Worker `json:"worker,omitempty"`
|
||||
}
|
||||
|
||||
type WorkerAccessRequest struct {
|
||||
WorkerId *uuid.UUID `json:"worker_id"`
|
||||
ProjectId int64 `json:"project_id"`
|
||||
}
|
||||
|
||||
type WorkerAccessResponse struct {
|
||||
Ok bool `json:"ok"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func (api *WebAPI) WorkerCreate(r *Request) {
|
||||
|
||||
workerReq := &CreateWorkerRequest{}
|
||||
@@ -86,6 +96,46 @@ func (api *WebAPI) WorkerGet(r *Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func (api *WebAPI) WorkerGrantAccess(r *Request) {
|
||||
|
||||
req := &WorkerAccessRequest{}
|
||||
if r.GetJson(req) {
|
||||
|
||||
ok := api.Database.GrantAccess(req.WorkerId, req.ProjectId)
|
||||
|
||||
if ok {
|
||||
r.OkJson(WorkerAccessResponse{
|
||||
Ok: true,
|
||||
})
|
||||
} else {
|
||||
r.OkJson(WorkerAccessResponse{
|
||||
Ok: false,
|
||||
Message: "Worker already has access to this project",
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (api *WebAPI) WorkerRemoveAccess(r *Request) {
|
||||
|
||||
req := &WorkerAccessRequest{}
|
||||
if r.GetJson(req) {
|
||||
|
||||
ok := api.Database.RemoveAccess(req.WorkerId, req.ProjectId)
|
||||
|
||||
if ok {
|
||||
r.OkJson(WorkerAccessResponse{
|
||||
Ok: true,
|
||||
})
|
||||
} else {
|
||||
r.OkJson(WorkerAccessResponse{
|
||||
Ok: false,
|
||||
Message: "Worker did not have access to this project",
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (api *WebAPI) workerCreate(request *CreateWorkerRequest, identity *storage.Identity) (uuid.UUID, error) {
|
||||
|
||||
worker := storage.Worker{
|
||||
|
||||
Reference in New Issue
Block a user