entc/load: add reflect kind for default value (#1101)

This commit is contained in:
Ariel Mashraki
2020-12-29 10:21:55 +02:00
committed by GitHub
parent 3f163923b0
commit d4e04cd08f
7 changed files with 13 additions and 6 deletions

File diff suppressed because one or more lines are too long

View File

@@ -47,6 +47,7 @@ type Field struct {
Optional bool `json:"optional,omitempty"`
Default bool `json:"default,omitempty"`
DefaultValue interface{} `json:"default_value,omitempty"`
DefaultKind reflect.Kind `json:"default_kind,omitempty"`
UpdateDefault bool `json:"update_default,omitempty"`
Immutable bool `json:"immutable,omitempty"`
Validators int `json:"validators,omitempty"`
@@ -133,6 +134,9 @@ func NewField(fd *field.Descriptor) (*Field, error) {
if size := int64(fd.Size); size != 0 {
sf.Size = &size
}
if sf.Default {
sf.DefaultKind = reflect.TypeOf(fd.Default).Kind()
}
// If the default value can be encoded to the generator.
// For example, not a function like time.Now.
if _, err := json.Marshal(fd.Default); err == nil {

View File

@@ -8,6 +8,7 @@ import (
"context"
"encoding/json"
"math"
"reflect"
"testing"
"time"
@@ -170,10 +171,12 @@ func TestMarshalSchema(t *testing.T) {
require.Equal(t, "sensitive", schema.Fields[5].Name)
require.Equal(t, field.TypeString, schema.Fields[5].Info.Type)
require.True(t, schema.Fields[5].Sensitive)
require.Equal(t, reflect.Invalid, schema.Fields[5].DefaultKind)
require.Equal(t, "creation_time", schema.Fields[6].Name)
require.Equal(t, field.TypeTime, schema.Fields[6].Info.Type)
require.Nil(t, schema.Fields[6].DefaultValue)
require.Equal(t, reflect.Func, schema.Fields[6].DefaultKind)
require.Equal(t, "uuid", schema.Fields[7].Name)
require.Equal(t, field.TypeUUID, schema.Fields[7].Info.Type)