Fixed a bug where a struct would have old values in it
This commit is contained in:
parent
a5552b8f9d
commit
bcbd415529
4 changed files with 8 additions and 20 deletions
|
@ -7,8 +7,4 @@ type CRUDable interface {
|
||||||
ReadAll(*User) (interface{}, error)
|
ReadAll(*User) (interface{}, error)
|
||||||
Update(int64) error
|
Update(int64) error
|
||||||
Delete(int64) error
|
Delete(int64) error
|
||||||
|
|
||||||
// This method is needed, because old values would otherwise remain in the struct.
|
|
||||||
// TODO find a way of not needing an extra function
|
|
||||||
Empty()
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,15 +84,3 @@ func GetAllTeamsByNamespaceID(id int64) (teams []*Team, err error) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty empties a struct. Because we heavily use pointers, the old values remain in the struct.
|
|
||||||
// If you then update by not providing evrything, you have i.e. the old description still in the
|
|
||||||
// newly created team, but you didn't provided one.
|
|
||||||
func (t *Team) Empty() {
|
|
||||||
t.ID = 0
|
|
||||||
t.CreatedByID = 0
|
|
||||||
t.CreatedBy = &User{}
|
|
||||||
t.Name = ""
|
|
||||||
t.Description = ""
|
|
||||||
t.Members = []*User{}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
package crud
|
package crud
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"git.kolaente.de/konrad/list/models"
|
"git.kolaente.de/konrad/list/models"
|
||||||
"github.com/labstack/echo"
|
"github.com/labstack/echo"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateWeb is the handler to create an object
|
// CreateWeb is the handler to create an object
|
||||||
func (c *WebHandler) CreateWeb(ctx echo.Context) error {
|
func (c *WebHandler) CreateWeb(ctx echo.Context) error {
|
||||||
// Re-initialize our model
|
// Re-initialize our model
|
||||||
c.CObject.Empty()
|
p := reflect.ValueOf(c.CObject).Elem()
|
||||||
|
p.Set(reflect.Zero(p.Type()))
|
||||||
|
|
||||||
// Get the object
|
// Get the object
|
||||||
if err := ctx.Bind(&c.CObject); err != nil {
|
if err := ctx.Bind(&c.CObject); err != nil {
|
||||||
|
@ -57,8 +58,6 @@ func (c *WebHandler) CreateWeb(ctx echo.Context) error {
|
||||||
return echo.NewHTTPError(http.StatusNotFound, "The namespace name cannot be empty.")
|
return echo.NewHTTPError(http.StatusNotFound, "The namespace name cannot be empty.")
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(err)
|
|
||||||
|
|
||||||
return echo.NewHTTPError(http.StatusInternalServerError)
|
return echo.NewHTTPError(http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,15 @@ import (
|
||||||
"git.kolaente.de/konrad/list/models"
|
"git.kolaente.de/konrad/list/models"
|
||||||
"github.com/labstack/echo"
|
"github.com/labstack/echo"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UpdateWeb is the webhandler to update an object
|
// UpdateWeb is the webhandler to update an object
|
||||||
func (c *WebHandler) UpdateWeb(ctx echo.Context) error {
|
func (c *WebHandler) UpdateWeb(ctx echo.Context) error {
|
||||||
|
// Re-initialize our model
|
||||||
|
p := reflect.ValueOf(c.CObject).Elem()
|
||||||
|
p.Set(reflect.Zero(p.Type()))
|
||||||
|
|
||||||
// Get the object
|
// Get the object
|
||||||
if err := ctx.Bind(&c.CObject); err != nil {
|
if err := ctx.Bind(&c.CObject); err != nil {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "No or invalid model provided.")
|
return echo.NewHTTPError(http.StatusBadRequest, "No or invalid model provided.")
|
||||||
|
|
Loading…
Reference in a new issue