/
foult080
/
hackaton-app
Обзор
Документация
Войти
/
foult080
/
hackaton-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
internal/handler/hackaton_handler.go
102 строки
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 HackatonHandler struct { svc *service.HackatonService } func NewHackatonHandler(svc *service.HackatonService) *HackatonHandler { return &HackatonHandler{svc: svc} } func (h *HackatonHandler) GetAll(w http.ResponseWriter, r *http.Request) { hacks, err := h.svc.GetAll(r.Context()) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, hacks) } func (h *HackatonHandler) GetCurrent(w http.ResponseWriter, r *http.Request) { hack, err := h.svc.GetCurrent(r.Context()) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, hack) } func (h *HackatonHandler) GetByID(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") hack, err := h.svc.GetByID(r.Context(), id) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, hack) } func (h *HackatonHandler) Create(w http.ResponseWriter, r *http.Request) { var req dto.CreateHackatonRequest 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 } hack, err := h.svc.Create(r.Context(), &req) if err != nil { Error(w, err) return } JSON(w, http.StatusCreated, hack) } func (h *HackatonHandler) Update(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") var req dto.CreateHackatonRequest 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 } hack, err := h.svc.Update(r.Context(), id, &req) if err != nil { Error(w, err) return } JSON(w, http.StatusOK, hack) } func (h *HackatonHandler) Close(w http.ResponseWriter, r *http.Request) { id := chi.URLParam(r, "id") if err := h.svc.Close(r.Context(), id); err != nil { Error(w, err) return } JSON(w, http.StatusOK, map[string]string{"message": "Hackathon closed"}) }