mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
entc/load: add reflect kind for default value (#1101)
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user