diff --git a/http/transaction.go b/http/transaction.go index 301acf1..01417c0 100644 --- a/http/transaction.go +++ b/http/transaction.go @@ -7,57 +7,8 @@ import ( "git.javil.eu/jacob1123/budgeteer/postgres" "github.com/gin-gonic/gin" - "github.com/google/uuid" ) -func getUUID(c *gin.Context, name string) (uuid.UUID, error) { - value, succ := c.GetPostForm(name) - if !succ { - return uuid.UUID{}, fmt.Errorf("not set") - } - - id, err := uuid.Parse(value) - if err != nil { - return uuid.UUID{}, fmt.Errorf("not a valid uuid: %w", err) - } - - return id, nil -} - -func getNullUUIDFromParam(c *gin.Context, name string) (uuid.NullUUID, error) { - value := c.Param(name) - if value == "" { - return uuid.NullUUID{}, nil - } - - id, err := uuid.Parse(value) - if err != nil { - return uuid.NullUUID{}, fmt.Errorf("not a valid uuid: %w", err) - } - - return uuid.NullUUID{ - UUID: id, - Valid: true, - }, nil -} - -func getNullUUIDFromForm(c *gin.Context, name string) (uuid.NullUUID, error) { - value, succ := c.GetPostForm(name) - if !succ || value == "" { - return uuid.NullUUID{}, nil - } - - id, err := uuid.Parse(value) - if err != nil { - return uuid.NullUUID{}, fmt.Errorf("not a valid uuid: %w", err) - } - - return uuid.NullUUID{ - UUID: id, - Valid: true, - }, nil -} - func (h *Handler) newTransaction(c *gin.Context) { transactionMemo, _ := c.GetPostForm("memo") transactionAccountID, err := getUUID(c, "account_id") diff --git a/http/util.go b/http/util.go new file mode 100644 index 0000000..7c2031e --- /dev/null +++ b/http/util.go @@ -0,0 +1,56 @@ +package http + +import ( + "fmt" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +func getUUID(c *gin.Context, name string) (uuid.UUID, error) { + value, succ := c.GetPostForm(name) + if !succ { + return uuid.UUID{}, fmt.Errorf("not set") + } + + id, err := uuid.Parse(value) + if err != nil { + return uuid.UUID{}, fmt.Errorf("not a valid uuid: %w", err) + } + + return id, nil +} + +func getNullUUIDFromParam(c *gin.Context, name string) (uuid.NullUUID, error) { + value := c.Param(name) + if value == "" { + return uuid.NullUUID{}, nil + } + + id, err := uuid.Parse(value) + if err != nil { + return uuid.NullUUID{}, fmt.Errorf("not a valid uuid: %w", err) + } + + return uuid.NullUUID{ + UUID: id, + Valid: true, + }, nil +} + +func getNullUUIDFromForm(c *gin.Context, name string) (uuid.NullUUID, error) { + value, succ := c.GetPostForm(name) + if !succ || value == "" { + return uuid.NullUUID{}, nil + } + + id, err := uuid.Parse(value) + if err != nil { + return uuid.NullUUID{}, fmt.Errorf("not a valid uuid: %w", err) + } + + return uuid.NullUUID{ + UUID: id, + Valid: true, + }, nil +}