This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
backend/internal/model/answer.go

51 lines
782 B
Go

package model
import (
"fmt"
"github.com/pkg/errors"
"io"
"strconv"
"strings"
)
type Answer string
const (
AnswerA Answer = "a"
AnswerB Answer = "b"
AnswerC Answer = "c"
AnswerD Answer = "d"
)
func (answer Answer) IsValid() bool {
switch answer {
case AnswerA,
AnswerB,
AnswerC,
AnswerD:
return true
}
return false
}
func (answer Answer) String() string {
return string(answer)
}
func (answer *Answer) UnmarshalGQL(v interface{}) error {
str, ok := v.(string)
if !ok {
return errors.New("enums must be strings")
}
*answer = Answer(strings.ToLower(str))
if !answer.IsValid() {
return errors.Errorf("%s is not a valid Answer", str)
}
return nil
}
func (answer Answer) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(answer.String()))
}