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) }