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)),
}
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)
}
if f.Nillable && !f.Optional {
case f.Nillable && !f.Optional:
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{
def: f,

View File

@@ -20,6 +20,14 @@ func TestType(t *testing.T) {
require.Equal("t1", typ.Label())
require.Equal("t1", typ.Package())
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) {