package auth import ( "encoding/json" "io" "net/http" "gitea.konchin.com/ytshih/inp2025/game/backend/middlewares" "gitea.konchin.com/ytshih/inp2025/game/models" "gitea.konchin.com/ytshih/inp2025/game/types" "gitea.konchin.com/ytshih/inp2025/game/utils" "github.com/uptrace/bunrouter" ) // PostRegister // // @Accept json // @Param request body models.User true "query params" // @Success 200 // @Failure 400 // @Router /auth/register [post] func (self *Handlers) PostRegister( w http.ResponseWriter, req bunrouter.Request, ) error { ctx := req.Context() b, err := io.ReadAll(req.Body) if err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to read body payload", OriginError: err, } } var user models.User if err := json.Unmarshal(b, &user); err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to unmarshal json into user", OriginError: err, } } if err := self.db.InsertUser(ctx, user); err != nil { if err == types.UsernameConflictError { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "username already exist", OriginError: err, } } return middlewares.HTTPError{ StatusCode: http.StatusInternalServerError, Message: "failed to insert user", OriginError: err, } } return utils.Success(w) }