File size: 617 Bytes
6380833 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package ref
import (
"fmt"
"github.com/oklog/ulid/v2"
)
type IDOrKey struct {
ID string `json:"id"`
Key string `json:"key"`
}
func (i IDOrKey) GetIDs() []string {
if i.ID == "" {
return nil
}
return []string{i.ID}
}
func (i IDOrKey) GetKeys() []string {
if i.Key == "" {
return nil
}
return []string{i.Key}
}
func (i IDOrKey) Validate() error {
if i.ID == "" && i.Key == "" {
return fmt.Errorf("either id or key is required")
}
return nil
}
func ParseIDOrKey(s string) IDOrKey {
n := IDOrKey{}
_, err := ulid.Parse(s)
if err != nil {
n.Key = s
} else {
n.ID = s
}
return n
}
|