schema/field: add DefaultFunc for numeric types and add support for it in entc (#1153)

* entc/load: allow defaultfuncs on numeric types

* schema/field: add DefaultFunc on numeric types

* docs: document DefaultFunc better

* chore: update generated files

* pr: address issues

* docs: updates on faq, address requested changes
This commit is contained in:
Morgan
2021-01-10 13:05:45 +01:00
committed by GitHub
parent 727e41e357
commit e4cc63c411
8 changed files with 239 additions and 13 deletions

File diff suppressed because one or more lines are too long

View File

@@ -352,7 +352,7 @@ func (f *Field) addAnnotation(an schema.Annotation) {
}
func (f *Field) defaults() error {
if !f.Default || !f.Info.Numeric() {
if !f.Default || !f.Info.Numeric() || f.DefaultKind == reflect.Func {
return nil
}
n, ok := f.DefaultValue.(float64)

View File

@@ -263,6 +263,10 @@ func (WithDefaults) Fields() []ent.Field {
Default(true),
field.Time("updated_at").
UpdateDefault(time.Now),
// see issue #1146
field.Int("int_default_func").DefaultFunc(func() int {
return 1e9
}),
}
}
@@ -290,6 +294,8 @@ func TestMarshalDefaults(t *testing.T) {
require.True(t, schema.Fields[3].Default)
require.False(t, schema.Fields[4].Default)
require.True(t, schema.Fields[4].UpdateDefault)
require.True(t, schema.Fields[5].Default)
require.Equal(t, schema.Fields[5].DefaultKind, reflect.Func)
}
type TimeMixin struct {