/
foult080
/
hackaton-app
Обзор
Документация
Войти
/
foult080
/
hackaton-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
internal/handler/task_handler.go
88 строк
2 KB
Foult080
refactor(): big refactor from kimi
07 июл 2026, 14:03
07 июл 2026, 14:03
2665fdb
Код
Авторство
О чём код?
package handler import ( "encoding/json" "net/http" "github.com/go-chi/chi/v5" "github.com/kkrit/hackaton/internal/dto" "github.com/kkrit/hackaton/internal/service" "github.com/kkrit/hackaton/pkg/apperror" ) type TaskHandler struct { svc *service.TaskService } func NewTaskHandler(svc *service.TaskService) *TaskHandler { return &TaskHandler{svc: svc} } func (h *TaskHandler) GetAll(w http.ResponseWriter, r *http.Request) { tasks, err := h.svc.GetAll(r.Context()) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, tasks) } func (h *TaskHandler) GetByID(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") task, err := h.svc.GetByID(r.Context(), id) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, task) } func (h *TaskHandler) Create(w http.ResponseWriter, r *http.Request) { var req dto.CreateTaskRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { Error(w, apperror.BadRequest("Invalid request body")) return } if err := ValidateRequest(&req); err != nil { Error(w, err) return } task, err := h.svc.Create(r.Context(), &req) if err != nil { Error(w, err) return } JSON(w, http.StatusCreated, task) } func (h *TaskHandler) Update(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") var req dto.UpdateTaskRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { Error(w, apperror.BadRequest("Invalid request body")) return } task, err := h.svc.Update(r.Context(), id, &req) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, task) } func (h *TaskHandler) Delete(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") if err := h.svc.Delete(r.Context(), id); err != nil { Error(w, err) return } JSON(w, http.StatusOK, map[string]string{"message": "Task deleted"}) }