stillbox/internal/jsontypes/uuid.go

36 lines
567 B
Go
Raw Normal View History

2024-12-29 12:51:49 -05:00
package jsontypes
import (
"github.com/google/uuid"
)
type UUID uuid.UUID
type UUIDs []UUID
func (u *UUIDs) UUIDs() []uuid.UUID {
r := make([]uuid.UUID, 0, len(*u))
for _, v := range *u {
r = append(r, v.UUID())
}
return r
}
func (u UUID) UUID() uuid.UUID {
return uuid.UUID(u)
}
func (u *UUID) MarshalJSON() ([]byte, error) {
return []byte(`"` + u.UUID().String() + `"`), nil
}
func (u *UUID) UnmarshalJSON(b []byte) error {
id, err := uuid.Parse(string(b[:]))
if err != nil {
return err
}
*u = UUID(id)
return nil
}