package handlers import ( "encoding/json" "go-backend/internal/database/sqlc" "net/http" ) type SignUpRequest struct { Username string `json:"username"` Password string `json:"password"` Email string `json:"email"` } func (h *Handler) SignUpHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req SignUpRequest decoder := json.NewDecoder(r.Body) err := decoder.Decode(&req) if err != nil { http.Error(w, "Invalid request body", http.StatusBadRequest) return } if req.Username == "" || req.Password == "" || req.Email == "" { http.Error(w, "Invalid request body", http.StatusBadRequest) return } user, err := h.users.FindByUsername(r.Context(), req.Username) if err != nil { http.Error(w, "Internal server error", http.StatusInternalServerError) } if user != nil { http.Error(w, "Username already taken", http.StatusBadRequest) } user, err = h.users.CreateUser(r.Context(), sqlc.InsertUserParams{Username: req.Username, Email: req.Email, PasswordHash: req.Password}) }