func (s *ProjectService) update(req *restful.Request, resp *restful.Response, p *project.Project) { raw := &ProjectEntity{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } user := filters.GetUser(req) if p.Owner != user.Id { resp.WriteServiceError(http.StatusForbidden, services.AuthForbidErr) return } mgr := s.Manager() defer mgr.Close() if raw.Name != "" { p.Name = raw.Name } if err := mgr.Projects.Update(p); err != nil { if mgr.IsDup(err) { resp.WriteServiceError( http.StatusConflict, services.NewError(services.CodeDuplicate, "project with this name and owner is existed")) return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteEntity(p) }