implemented namespace creation via interface method
This commit is contained in:
parent
4734a0a6a6
commit
0aa84e653f
5 changed files with 44 additions and 3 deletions
|
@ -305,3 +305,19 @@ func IsErrUserDoesNotHaveWriteAccessToNamespace(err error) bool {
|
||||||
func (err ErrUserDoesNotHaveWriteAccessToNamespace) Error() string {
|
func (err ErrUserDoesNotHaveWriteAccessToNamespace) Error() string {
|
||||||
return fmt.Sprintf("You need to have write access to this namespace to do that [NamespaceID: %d, UserID: %d]", err.NamespaceID, err.UserID)
|
return fmt.Sprintf("You need to have write access to this namespace to do that [NamespaceID: %d, UserID: %d]", err.NamespaceID, err.UserID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ErrNamespaceNameCannotBeEmpty represents an error, where a namespace name is empty.
|
||||||
|
type ErrNamespaceNameCannotBeEmpty struct {
|
||||||
|
NamespaceID int64
|
||||||
|
UserID int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsErrNamespaceNameCannotBeEmpty checks if an error is a ErrNamespaceDoesNotExist.
|
||||||
|
func IsErrNamespaceNameCannotBeEmpty(err error) bool {
|
||||||
|
_, ok := err.(ErrNamespaceNameCannotBeEmpty)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (err ErrNamespaceNameCannotBeEmpty) Error() string {
|
||||||
|
return fmt.Sprintf("Namespace name cannot be emtpy [NamespaceID: %d, UserID: %d]", err.NamespaceID, err.UserID)
|
||||||
|
}
|
|
@ -30,3 +30,21 @@ func CreateOrUpdateNamespace(namespace *Namespace) (err error) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *Namespace) Create(doer *User, _ int64) (err error) {
|
||||||
|
// Check if we have at least a name
|
||||||
|
if n.Name == "" {
|
||||||
|
return ErrNamespaceNameCannotBeEmpty{NamespaceID:0, UserID:doer.ID}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the User exists
|
||||||
|
n.Owner, _, err = GetUserByID(doer.ID)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
n.OwnerID = n.Owner.ID
|
||||||
|
|
||||||
|
// Insert
|
||||||
|
_, err = x.Insert(n)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ func AddNamespace(c echo.Context) error {
|
||||||
// "500":
|
// "500":
|
||||||
// "$ref": "#/responses/Message"
|
// "$ref": "#/responses/Message"
|
||||||
|
|
||||||
return addOrUpdateNamespace(c)
|
return echo.NewHTTPError(http.StatusNotImplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateNamespace ...
|
// UpdateNamespace ...
|
||||||
|
@ -63,7 +63,7 @@ func UpdateNamespace(c echo.Context) error {
|
||||||
// "500":
|
// "500":
|
||||||
// "$ref": "#/responses/Message"
|
// "$ref": "#/responses/Message"
|
||||||
|
|
||||||
return addOrUpdateNamespace(c)
|
return echo.NewHTTPError(http.StatusNotImplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddOrUpdateNamespace Adds or updates a new namespace
|
// AddOrUpdateNamespace Adds or updates a new namespace
|
||||||
|
|
|
@ -44,6 +44,13 @@ func (c *WebHandler) CreateWeb(ctx echo.Context) error {
|
||||||
return echo.NewHTTPError(http.StatusForbidden, "You need to have write access on that list.")
|
return echo.NewHTTPError(http.StatusForbidden, "You need to have write access on that list.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if models.IsErrNamespaceDoesNotExist(err) {
|
||||||
|
return echo.NewHTTPError(http.StatusBadRequest, "The namespace does not exist.")
|
||||||
|
}
|
||||||
|
if models.IsErrNamespaceNameCannotBeEmpty(err) {
|
||||||
|
return echo.NewHTTPError(http.StatusNotFound, "The namespace name cannot be empty.")
|
||||||
|
}
|
||||||
|
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError)
|
return echo.NewHTTPError(http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ func RegisterRoutes(e *echo.Echo) {
|
||||||
CObject: &models.Namespace{},
|
CObject: &models.Namespace{},
|
||||||
}
|
}
|
||||||
a.GET("/namespaces", namespaceHandler.ReadAllWeb)
|
a.GET("/namespaces", namespaceHandler.ReadAllWeb)
|
||||||
a.PUT("/namespaces", apiv1.AddNamespace)
|
a.PUT("/namespaces", namespaceHandler.CreateWeb)
|
||||||
a.GET("/namespaces/:id", apiv1.ShowNamespace)
|
a.GET("/namespaces/:id", apiv1.ShowNamespace)
|
||||||
a.POST("/namespaces/:id", apiv1.UpdateNamespace)
|
a.POST("/namespaces/:id", apiv1.UpdateNamespace)
|
||||||
a.DELETE("/namespaces/:id", apiv1.DeleteNamespaceByID)
|
a.DELETE("/namespaces/:id", apiv1.DeleteNamespaceByID)
|
||||||
|
|
Loading…
Reference in a new issue