Files

32 lines
952 B
Go
Raw Permalink Normal View History

package handler
import (
"net/http"
"code.nochebuena.dev/go/httputil"
"code.nochebuena.dev/go/valid"
"code.nochebuena.dev/go/todo-api/internal/domain"
"code.nochebuena.dev/go/todo-api/internal/service"
)
// UserHandler wires HTTP requests to UserService.
type UserHandler struct {
svc service.UserService
v valid.Validator
}
// NewUserHandler returns a UserHandler.
func NewUserHandler(svc service.UserService, v valid.Validator) *UserHandler {
return &UserHandler{svc: svc, v: v}
}
// FindAll handles GET /users — returns all users as JSON.
func (h *UserHandler) FindAll(w http.ResponseWriter, r *http.Request) {
httputil.HandleNoBody[[]domain.User](h.svc.FindAll).ServeHTTP(w, r)
}
// Create handles POST /users — creates a new user with optional permission bits.
func (h *UserHandler) Create(w http.ResponseWriter, r *http.Request) {
httputil.Handle[service.CreateUserRequest, domain.User](h.v, h.svc.Create).ServeHTTP(w, r)
}