entc/gen: unique field can not have default value

Reviewed By: alexsn

Differential Revision: D16827420

fbshipit-source-id: 9a9896980203ba1ca2c53412071423847d18d8cb
This commit is contained in:
Ariel Mashraki
2019-08-15 04:38:50 -07:00
committed by Facebook Github Bot
parent c16d3c8e25
commit ec302a47e2
2 changed files with 13 additions and 3 deletions

View File

@@ -125,11 +125,13 @@ func NewType(c Config, schema *load.Schema) (*Type, error) {
fields: make(map[string]*Field, len(schema.Fields)), fields: make(map[string]*Field, len(schema.Fields)),
} }
for i, f := range schema.Fields { for i, f := range schema.Fields {
if !f.Type.Valid() { switch {
case !f.Type.Valid():
return nil, fmt.Errorf("invalid type for field %s", f.Name) return nil, fmt.Errorf("invalid type for field %s", f.Name)
} case f.Nillable && !f.Optional:
if f.Nillable && !f.Optional {
return nil, fmt.Errorf("nillable field %q must be optional", f.Name) return nil, fmt.Errorf("nillable field %q must be optional", f.Name)
case f.Unique && f.Default:
return nil, fmt.Errorf("unique field %q can not have default value", f.Name)
} }
typ.Fields[i] = &Field{ typ.Fields[i] = &Field{
def: f, def: f,

View File

@@ -20,6 +20,14 @@ func TestType(t *testing.T) {
require.Equal("t1", typ.Label()) require.Equal("t1", typ.Label())
require.Equal("t1", typ.Package()) require.Equal("t1", typ.Package())
require.Equal("t", typ.Receiver()) require.Equal("t", typ.Receiver())
typ, err = NewType(Config{Package: "entc/gen"}, &load.Schema{
Fields: []*load.Field{
{Unique: true, Default: true, Type: field.TypeInt},
},
})
require.Error(err, "unique field can not have default")
require.Nil(typ)
} }
func TestType_Label(t *testing.T) { func TestType_Label(t *testing.T) {