diff --git a/internal/api/problem/update.go b/internal/api/problem/update.go index 1070023..a45e9d4 100644 --- a/internal/api/problem/update.go +++ b/internal/api/problem/update.go @@ -10,8 +10,8 @@ import ( type updateRequest struct { Pid uint `form:"pid" json:"pid"` - Title string `form:"title" json:"title" binding:"required"` - Statement string `form:"statement" json:"statement" binding:"required"` + Title string `form:"title" json:"title"` + Statement string `form:"statement" json:"statement"` IsEnabled bool `form:"is_enabled" json:"is_enabled"` } @@ -22,8 +22,8 @@ type updateRequest struct { // @Accept application/x-www-form-urlencoded // @Produce json // @Param pid formData int false "problem id, 0 for create" -// @Param title formData string true "title" -// @Param statement formData string true "statement" +// @Param title formData string false "title" +// @Param statement formData string false "statement" // @Param is_enabled formData bool false "is enabled" // @Response 200 {object} e.Response[model.Problem] "problem info without provider information" // @Security Authentication @@ -50,8 +50,13 @@ func (h *handler) Update(c *gin.Context) { return } - if req.Pid == 0 { - // create problem + if req.Pid == 0 { // create problem + // Title and Statement are required + if req.Title == "" || req.Statement == "" { + e.Pong[any](c, e.InvalidParameter, nil) + return + } + createData := &problem.CreateData{ Title: req.Title, Statement: req.Statement, @@ -61,9 +66,7 @@ func (h *handler) Update(c *gin.Context) { p, status := h.problemService.Create(createData) e.Pong(c, status, p) return - } else { - // update problem - + } else { // update problem // check if problem exists p, status := h.problemService.Query(req.Pid, true, false) if status != e.Success {