Add support for database enum types.

This commit is contained in:
zer0sub 2019-04-03 19:21:46 +02:00
parent 273bf1ed4c
commit 2c7a9f5058
9 changed files with 202 additions and 22 deletions

View file

@ -61,3 +61,34 @@ type {{.ToGoModelStructName}} struct {
{{- end}}
}
`
var EnumModelTemplate = `package model
import "errors"
type {{.Name}} string
const (
{{- range $index, $element := .Values}}
{{camelize $.Name}}_{{camelize $element}} {{$.Name}} = "{{$element}}"
{{- end}}
)
func (e *{{$.Name}}) Scan(value interface{}) error {
if v, ok := value.(string); !ok {
return errors.New("Invalid data for {{$.Name}} enum")
} else {
switch string(v) {
{{- range $index, $element := .Values}}
case "{{$element}}":
*e = {{camelize $.Name}}_{{camelize $element}}
{{- end}}
default:
return errors.New("Inavlid data " + string(v) + "for {{$.Name}} enum")
}
return nil
}
}
`