示例#1
0
func (s *IssueService) update(req *restful.Request, resp *restful.Response, issueObj *issue.TargetIssue) {
	// TODO (m0sth8): Check permissions

	raw := &TargetIssueEntity{}

	if err := req.ReadEntity(raw); err != nil {
		logrus.Error(stackerr.Wrap(err))
		resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr)
		return
	}
	mgr := s.Manager()
	defer mgr.Close()

	if raw.Confirmed != nil {
		issueObj.Confirmed = *raw.Confirmed
	}
	if raw.False != nil {
		issueObj.False = *raw.False
	}
	if raw.Resolved != nil {
		issueObj.Resolved = *raw.Resolved
	}
	if raw.Muted != nil {
		issueObj.Muted = *raw.Muted
	}

	if err := mgr.Issues.Update(issueObj); err != nil {
		if mgr.IsNotFound(err) {
			resp.WriteErrorString(http.StatusNotFound, "Not found")
			return
		}
		if mgr.IsDup(err) {
			resp.WriteServiceError(
				http.StatusConflict,
				services.DuplicateErr)
			return
		}
		logrus.Error(stackerr.Wrap(err))
		resp.WriteServiceError(http.StatusInternalServerError, services.DbErr)
		return
	}

	resp.WriteHeader(http.StatusOK)
	resp.WriteEntity(issueObj)
}