From 868b93dbbc6810a0fa6cbc1b52cd29e20ee63c9b Mon Sep 17 00:00:00 2001 From: konrad Date: Thu, 12 Jul 2018 11:54:55 +0200 Subject: [PATCH] implemented get one namespace via interface mthod --- models/namespaces.go | 19 +++++++++++++++++++ routes/crud/read_one.go | 8 ++++++++ routes/routes.go | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/models/namespaces.go b/models/namespaces.go index 4707f3709..94c17c80d 100644 --- a/models/namespaces.go +++ b/models/namespaces.go @@ -21,6 +21,11 @@ func (Namespace) TableName() string { return "namespaces" } +// AfterLoad gets the owner +func (n *Namespace) AfterLoad() { + n.Owner, _, _ = GetUserByID(n.OwnerID) +} + // NamespaceRight defines the rights teams can have for namespaces type NamespaceRight int @@ -108,6 +113,20 @@ func GetNamespaceByID(id int64) (namespace Namespace, err error) { return namespace, err } +// ReadOne gets one namespace +func (n *Namespace) ReadOne(id int64) (err error) { + exists, err := x.ID(id).Get(n) + if err != nil { + return + } + + if !exists { + return ErrNamespaceDoesNotExist{ID: id} + } + + return +} + // ReadAll gets all namespaces a user has access to func (n *Namespace) ReadAll(doer *User) (interface{}, error) { diff --git a/routes/crud/read_one.go b/routes/crud/read_one.go index d1a77f84b..189c56c2f 100644 --- a/routes/crud/read_one.go +++ b/routes/crud/read_one.go @@ -4,6 +4,7 @@ import ( "git.kolaente.de/konrad/list/models" "github.com/labstack/echo" "net/http" + "fmt" ) // ReadOneWeb is the webhandler to get one object @@ -16,6 +17,7 @@ func (c *WebHandler) ReadOneWeb(ctx echo.Context) error { } // TODO check rights + //c.CObject.CanRead(doer) // Get our object err = c.CObject.ReadOne(id) @@ -24,6 +26,12 @@ func (c *WebHandler) ReadOneWeb(ctx echo.Context) error { return echo.NewHTTPError(http.StatusNotFound) } + if models.IsErrNamespaceDoesNotExist(err) { + return echo.NewHTTPError(http.StatusNotFound) + } + + fmt.Println(err) + return echo.NewHTTPError(http.StatusInternalServerError, "An error occured.") } diff --git a/routes/routes.go b/routes/routes.go index c3550b75b..b619ec00e 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -108,7 +108,7 @@ func RegisterRoutes(e *echo.Echo) { } a.GET("/namespaces", namespaceHandler.ReadAllWeb) a.PUT("/namespaces", namespaceHandler.CreateWeb) - a.GET("/namespaces/:id", apiv1.ShowNamespace) + a.GET("/namespaces/:id", namespaceHandler.ReadOneWeb) a.POST("/namespaces/:id", namespaceHandler.UpdateWeb) a.DELETE("/namespaces/:id", apiv1.DeleteNamespaceByID) a.GET("/namespaces/:id/lists", apiv1.GetListsByNamespaceID)