CreateTask creates one new task.
(c *gin.Context)
| 200 | |
| 201 | // CreateTask creates one new task. |
| 202 | func (h *BaseHandlers) CreateTask(c *gin.Context) { |
| 203 | manager, ok := h.requireTaskManager(c) |
| 204 | if !ok { |
| 205 | return |
| 206 | } |
| 207 | |
| 208 | var req contract.CreateTaskRequest |
| 209 | if err := c.ShouldBindJSON(&req); err != nil { |
| 210 | h.respondError( |
| 211 | c, |
| 212 | http.StatusBadRequest, |
| 213 | NewTaskValidationError(fmt.Errorf("%s: decode create task request: %w", h.transportName(), err)), |
| 214 | ) |
| 215 | return |
| 216 | } |
| 217 | |
| 218 | spec, err := h.createTaskSpecFromRequest(c.Request.Context(), req) |
| 219 | if err != nil { |
| 220 | h.respondError(c, StatusForTaskError(err), err) |
| 221 | return |
| 222 | } |
| 223 | actor, err := h.taskActorContextForWorkspace(c, taskActionCreate, spec.WorkspaceID) |
| 224 | if err != nil { |
| 225 | h.respondError(c, StatusForTaskError(err), err) |
| 226 | return |
| 227 | } |
| 228 | |
| 229 | record, err := manager.CreateTask(c.Request.Context(), spec, actor) |
| 230 | if err != nil { |
| 231 | h.respondError(c, StatusForTaskError(err), err) |
| 232 | return |
| 233 | } |
| 234 | |
| 235 | c.JSON(http.StatusCreated, contract.TaskResponse{Task: TaskPayloadFromTask(record)}) |
| 236 | } |
| 237 | |
| 238 | // GetTask returns one expanded task view. |
| 239 | func (h *BaseHandlers) GetTask(c *gin.Context) { |
nothing calls this directly
no test coverage detected