package handlers import ( "context" "encoding/json" "net/http" "portfolio/api/service/bcrypt" "portfolio/api/service/validate" "portfolio/api/types" "portfolio/database/query" "strconv" ) func CreateUserHandler(w http.ResponseWriter, r *http.Request) { var u *types.RegisterUser isHtmx := r.Header.Get("HX-Request") if isHtmx == "true" { u = &types.RegisterUser{ Name: r.PostFormValue("name"), //Role: user.Role(r.PostFormValue("role")), } } else { if err := json.NewDecoder(r.Body).Decode(&u); err != nil { InternalServerErrorHandler(w, err) return } } u.Password = "123" if !validate.UserIsValid(u) { BadRequestHandler(w) return } //hash password u.Password, _ = bcrypt.HashPassword(u.Password) if err := query.CreateUser(context.Background(), *u); err != nil { UnprocessableEntityHandler(w, err) return } w.WriteHeader(http.StatusCreated) w.Write([]byte("user created")) } func GetUserHandler(w http.ResponseWriter, r *http.Request) { userID, err := strconv.Atoi(r.PathValue("id")) if err != nil { BadRequestHandler(w) } User, err := query.GetUser(context.Background(), userID) if err != nil { UnprocessableEntityHandler(w, err) return } w.Header().Set("Content-Type", "application/json") if err = json.NewEncoder(w).Encode(User); err != nil { InternalServerErrorHandler(w, err) return } }