feat: custom content type icons, built-in types, user lookup
This commit is contained in:
1 parent
e6e088c963
commit
73a75d5cb9
31 files changed
+1611
-36
No files matched your search
@@ -10,6 +10,7 @@ var (
|
||||
ErrKeyTaken = errors.New("a content type with that key already exists")
|
||||
ErrInvalidName = errors.New("invalid content type name")
|
||||
ErrInvalidKey = errors.New("invalid content type key")
|
||||
ErrInvalidIcon = errors.New("invalid content type icon")
|
||||
ErrInvalidField = errors.New("invalid field")
|
||||
ErrHasEntries = errors.New("the content type still has entries")
|
||||
ErrSchemaIncompatible = errors.New("the schema is incompatible with the stored entries")
|
||||
@@ -58,6 +59,7 @@ type ContentType struct {
|
||||
ID uint32 `json:"id"`
|
||||
Key string `json:"key"`
|
||||
Name string `json:"name"`
|
||||
Icon *string `json:"icon"`
|
||||
Fields []Field `json:"fields"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
|
||||
@@ -7,6 +7,8 @@ import (
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
var iconPattern = regexp.MustCompile(`^[a-z][a-z0-9-]{0,39}$`)
|
||||
|
||||
var fieldKeyPattern = regexp.MustCompile(`^[a-z][a-z0-9_]{0,39}$`)
|
||||
|
||||
func ValidateKey(key string) error {
|
||||
@@ -24,6 +26,16 @@ func ValidateName(name string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func ValidateIcon(icon *string) (*string, error) {
|
||||
if icon == nil || *icon == "" {
|
||||
return nil, nil
|
||||
}
|
||||
if !iconPattern.MatchString(*icon) {
|
||||
return nil, ErrInvalidIcon
|
||||
}
|
||||
return icon, nil
|
||||
}
|
||||
|
||||
func ValidateFields(fields []Field) ([]Field, error) {
|
||||
if len(fields) < MinFields || len(fields) > MaxFields {
|
||||
return nil, ErrInvalidField
|
||||
|
||||
Reference in new issue
Block a user