From 707dcb43eb7794484f51d6a054ea9ff927945a73 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sat, 29 Sep 2018 16:38:21 +0200 Subject: [PATCH] models2: Added IsValid() method to StoryCategory --- models/story-category.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/models/story-category.go b/models/story-category.go index d72d965..6af46ae 100644 --- a/models/story-category.go +++ b/models/story-category.go @@ -21,6 +21,16 @@ const ( StoryCategoryStory StoryCategory = "Story" ) +// IsValid returns whether the category is one of the valid values. +func (e *StoryCategory) IsValid() bool { + switch *e { + case StoryCategoryInfo, StoryCategoryNews, StoryCategoryDocument, StoryCategoryBackground, StoryCategoryStory: + return true + default: + return false + } +} + // UnmarshalGQL unmarshals func (e *StoryCategory) UnmarshalGQL(v interface{}) error { str, ok := v.(string) @@ -28,13 +38,13 @@ func (e *StoryCategory) UnmarshalGQL(v interface{}) error { return fmt.Errorf("enums must be strings") } - *e = StoryCategory(str) - switch *e { - case StoryCategoryInfo, StoryCategoryNews, StoryCategoryDocument, StoryCategoryBackground, StoryCategoryStory: - return nil - default: + if !e.IsValid() { return fmt.Errorf("%s is not a valid StoryCategory", str) } + + *e = StoryCategory(str) + + return nil } // MarshalGQL turns it into a JSON string