🏷️ Created ResourceType enum

This commit is contained in:
Maxim Lebedev 2023-11-10 06:14:47 +06:00
parent c20c35f625
commit 6679806534
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
1 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,50 @@
package domain
import (
"errors"
"fmt"
"strings"
)
type ResourceType struct {
resourceType string
}
var (
ResourceTypeUnd ResourceType = ResourceType{} // "und"
ResourceTypeAudio ResourceType = ResourceType{"audio"} // "audio"
ResourceTypeImage ResourceType = ResourceType{"image"} // "image"
ResourceTypePage ResourceType = ResourceType{"page"} // "page"
ResourceTypeText ResourceType = ResourceType{"text"} // "text"
ResourceTypeVideo ResourceType = ResourceType{"video"} // "video"
)
var ErrResourceType error = errors.New("unsupported ResourceType enum")
var stringsResourceTypes = map[string]ResourceType{
ResourceTypeAudio.resourceType: ResourceTypeAudio,
ResourceTypeImage.resourceType: ResourceTypeImage,
ResourceTypePage.resourceType: ResourceTypePage,
ResourceTypeText.resourceType: ResourceTypeText,
ResourceTypeVideo.resourceType: ResourceTypeVideo,
}
func ParseResourceType(raw string) (ResourceType, error) {
if rt, ok := stringsResourceTypes[strings.ToLower(raw)]; ok {
return rt, nil
}
return ResourceTypeUnd, fmt.Errorf("%w: got '%s', want %s", ErrResourceType, raw, stringsResourceTypes)
}
func (rt ResourceType) String() string {
if rt.resourceType != "" {
return rt.resourceType
}
return "und"
}
func (rt ResourceType) GoString() string {
return "domain.ResourceType(" + rt.String() + ")"
}