57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
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
|
|
}
|