tâches planifiées : prompts cron persistés, outil scheduler, conversations liées aux tâches, rattrapage des exécutions manquées au redémarrage (go-cron MissedRunOnce)
This commit is contained in:
1 parent
bedb6c98e7
commit
058370830f
71 files changed
+1627
-100
No files matched your search
@@ -0,0 +1,70 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v5"
|
||||
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/task"
|
||||
)
|
||||
|
||||
type TaskHandler struct {
|
||||
taskService *task.Service
|
||||
}
|
||||
|
||||
func NewTaskGroup(prefix string, e *echo.Group, service *task.Service, middlewares ...echo.MiddlewareFunc) *echo.Group {
|
||||
taskHandler := &TaskHandler{taskService: service}
|
||||
|
||||
auth := e.Group(prefix, middlewares...)
|
||||
auth.GET("/:space", taskHandler.List)
|
||||
auth.PUT("/:space/:id", taskHandler.Update)
|
||||
auth.DELETE("/:space/:id", taskHandler.Delete)
|
||||
return auth
|
||||
}
|
||||
|
||||
func (h *TaskHandler) List(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
tasks, err := h.taskService.ListTasks(userID, teamID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error listing tasks", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error listing tasks")
|
||||
}
|
||||
// évite "null" dans la réponse quand il n'y a pas de tâche
|
||||
if tasks == nil {
|
||||
tasks = []*domain.Task{}
|
||||
}
|
||||
return c.JSON(http.StatusOK, tasks)
|
||||
}
|
||||
|
||||
func (h *TaskHandler) Update(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
taskID := c.Param("id")
|
||||
|
||||
var taskModel domain.Task
|
||||
if err := c.Bind(&taskModel); err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding request")
|
||||
}
|
||||
taskModel.ID = taskID
|
||||
|
||||
updated, err := h.taskService.UpdateTask(userID, teamID, &taskModel)
|
||||
if err != nil {
|
||||
c.Logger().Error("error updating task", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error updating task")
|
||||
}
|
||||
return c.JSON(http.StatusOK, updated)
|
||||
}
|
||||
|
||||
func (h *TaskHandler) Delete(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
taskID := c.Param("id")
|
||||
if err := h.taskService.DeleteTask(userID, teamID, taskID); err != nil {
|
||||
c.Logger().Error("error deleting task", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error deleting task")
|
||||
}
|
||||
return c.JSON(http.StatusOK, "task deleted")
|
||||
}
|
||||
Reference in new issue
Block a user