ent: add support for enum types

Summary: Pull Request resolved: https://github.com/facebookincubator/ent/pull/45

Reviewed By: alexsn

Differential Revision: D17715085

fbshipit-source-id: 7472e1bd9cf7a8a5bd98f96e6e884c0e27f36803
This commit is contained in:
Ariel Mashraki
2019-10-02 12:54:06 -07:00
committed by Facebook Github Bot
parent 55fefbfbec
commit 1ebfa489c5
61 changed files with 4269 additions and 3312 deletions

File diff suppressed because one or more lines are too long

View File

@@ -38,6 +38,7 @@ type Field struct {
Info *field.TypeInfo `json:"type,omitempty"`
Tag string `json:"tag,omitempty"`
Size *int `json:"size,omitempty"`
Enums []string `json:"enums,omitempty"`
Unique bool `json:"unique,omitempty"`
Nillable bool `json:"nillable,omitempty"`
Optional bool `json:"optional,omitempty"`
@@ -101,6 +102,7 @@ func NewField(fd *field.Descriptor) (*Field, error) {
Name: fd.Name,
Info: fd.Info,
Tag: fd.Tag,
Enums: fd.Enums,
Unique: fd.Unique,
Nillable: fd.Nillable,
Optional: fd.Optional,

View File

@@ -30,6 +30,9 @@ func (User) Fields() []ent.Field {
Nillable(),
field.String("optional").
Optional(),
field.Enum("state").
Values("on", "off").
Optional(),
}
}
@@ -72,7 +75,7 @@ func TestMarshalSchema(t *testing.T) {
schema := &Schema{}
require.NoError(t, json.Unmarshal(buf, schema))
require.Equal(t, "User", schema.Name)
require.Len(t, schema.Fields, 4)
require.Len(t, schema.Fields, 5)
require.Equal(t, "age", schema.Fields[0].Name)
require.Equal(t, field.TypeInt, schema.Fields[0].Info.Type)
@@ -89,6 +92,10 @@ func TestMarshalSchema(t *testing.T) {
require.False(t, schema.Fields[3].Nillable)
require.True(t, schema.Fields[3].Optional)
require.Equal(t, "state", schema.Fields[4].Name)
require.Equal(t, field.TypeEnum, schema.Fields[4].Info.Type)
require.Equal(t, []string{"on", "off"}, schema.Fields[4].Enums)
require.Len(t, schema.Edges, 2)
require.Equal(t, "groups", schema.Edges[0].Name)
require.Equal(t, "Group", schema.Edges[0].Type)