mirror of
https://github.com/ent/ent.git
synced 2026-05-28 09:49:08 +03:00
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:
File diff suppressed because one or more lines are too long
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user