entc/integration: add tests for mixim fields (#270)

This commit is contained in:
Ariel Mashraki
2020-01-05 17:29:06 +02:00
committed by GitHub
parent fc6a9b1a9b
commit 13ae2fcea1
16 changed files with 760 additions and 209 deletions

View File

@@ -202,6 +202,7 @@ func ExampleGroup() {
log.Println("file created:", f0)
u1 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -404,6 +405,7 @@ func ExampleUser() {
log.Println("group created:", gr3)
u4 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -414,6 +416,7 @@ func ExampleUser() {
log.Println("user created:", u4)
u6 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -429,6 +432,7 @@ func ExampleUser() {
log.Println("pet created:", pe7)
u8 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -439,6 +443,7 @@ func ExampleUser() {
log.Println("user created:", u8)
u10 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -451,6 +456,7 @@ func ExampleUser() {
// create user vertex with its edges.
u := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").

View File

@@ -271,6 +271,7 @@ var (
// UsersColumns holds the columns for the "users" table.
UsersColumns = []*schema.Column{
{Name: "id", Type: field.TypeInt, Increment: true},
{Name: "optional_int", Type: field.TypeInt, Nullable: true},
{Name: "age", Type: field.TypeInt},
{Name: "name", Type: field.TypeString},
{Name: "last", Type: field.TypeString, Default: user.DefaultLast},
@@ -289,21 +290,21 @@ var (
ForeignKeys: []*schema.ForeignKey{
{
Symbol: "users_groups_blocked",
Columns: []*schema.Column{UsersColumns[7]},
Columns: []*schema.Column{UsersColumns[8]},
RefColumns: []*schema.Column{GroupsColumns[0]},
OnDelete: schema.SetNull,
},
{
Symbol: "users_users_spouse",
Columns: []*schema.Column{UsersColumns[8]},
Columns: []*schema.Column{UsersColumns[9]},
RefColumns: []*schema.Column{UsersColumns[0]},
OnDelete: schema.SetNull,
},
{
Symbol: "users_users_parent",
Columns: []*schema.Column{UsersColumns[9]},
Columns: []*schema.Column{UsersColumns[10]},
RefColumns: []*schema.Column{UsersColumns[0]},
OnDelete: schema.SetNull,

View File

@@ -15,6 +15,12 @@ type User struct {
ent.Schema
}
func (User) Mixin() []ent.Mixin {
return []ent.Mixin{
UserMixin{},
}
}
// Fields of the user.
func (User) Fields() []ent.Field {
return []ent.Field{
@@ -50,3 +56,15 @@ func (User) Edges() []ent.Edge {
edge.To("parent", User.Type).Unique().From("children"),
}
}
// UserMixin composes create/update time mixin.
type UserMixin struct{}
// Fields of the time mixin.
func (UserMixin) Fields() []ent.Field {
return []ent.Field{
field.Int("optional_int").
Optional().
Positive(),
}
}

View File

@@ -20,6 +20,8 @@ type User struct {
config `graphql:"-" json:"-"`
// ID of the ent.
ID string `json:"id,omitempty"`
// OptionalInt holds the value of the "optional_int" field.
OptionalInt int `json:"optional_int,omitempty"`
// Age holds the value of the "age" field.
Age int `json:"age,omitempty"`
// Name holds the value of the "name" field.
@@ -37,6 +39,7 @@ type User struct {
// scanValues returns the types for scanning values from sql.Rows.
func (*User) scanValues() []interface{} {
return []interface{}{
&sql.NullInt64{},
&sql.NullInt64{},
&sql.NullInt64{},
&sql.NullString{},
@@ -60,32 +63,37 @@ func (u *User) assignValues(values ...interface{}) error {
u.ID = strconv.FormatInt(value.Int64, 10)
values = values[1:]
if value, ok := values[0].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field age", values[0])
return fmt.Errorf("unexpected type %T for field optional_int", values[0])
} else if value.Valid {
u.OptionalInt = int(value.Int64)
}
if value, ok := values[1].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field age", values[1])
} else if value.Valid {
u.Age = int(value.Int64)
}
if value, ok := values[1].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field name", values[1])
if value, ok := values[2].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field name", values[2])
} else if value.Valid {
u.Name = value.String
}
if value, ok := values[2].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field last", values[2])
if value, ok := values[3].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field last", values[3])
} else if value.Valid {
u.Last = value.String
}
if value, ok := values[3].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field nickname", values[3])
if value, ok := values[4].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field nickname", values[4])
} else if value.Valid {
u.Nickname = value.String
}
if value, ok := values[4].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field phone", values[4])
if value, ok := values[5].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field phone", values[5])
} else if value.Valid {
u.Phone = value.String
}
if value, ok := values[5].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field password", values[5])
if value, ok := values[6].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field password", values[6])
} else if value.Valid {
u.Password = value.String
}
@@ -170,6 +178,8 @@ func (u *User) String() string {
var builder strings.Builder
builder.WriteString("User(")
builder.WriteString(fmt.Sprintf("id=%v", u.ID))
builder.WriteString(", optional_int=")
builder.WriteString(fmt.Sprintf("%v", u.OptionalInt))
builder.WriteString(", age=")
builder.WriteString(fmt.Sprintf("%v", u.Age))
builder.WriteString(", name=")

View File

@@ -7,6 +7,7 @@
package user
import (
"github.com/facebookincubator/ent"
"github.com/facebookincubator/ent/entc/integration/ent/schema"
)
@@ -15,6 +16,8 @@ const (
Label = "user"
// FieldID holds the string denoting the id field in the database.
FieldID = "id"
// FieldOptionalInt holds the string denoting the optional_int vertex property in the database.
FieldOptionalInt = "optional_int"
// FieldAge holds the string denoting the age vertex property in the database.
FieldAge = "age"
// FieldName holds the string denoting the name vertex property in the database.
@@ -86,6 +89,7 @@ const (
// Columns holds all SQL columns are user fields.
var Columns = []string{
FieldID,
FieldOptionalInt,
FieldAge,
FieldName,
FieldLast,
@@ -110,8 +114,17 @@ var (
)
var (
mixin = schema.User{}.Mixin()
mixinFields = [...][]ent.Field{
mixin[0].Fields(),
}
fields = schema.User{}.Fields()
// descOptionalInt is the schema descriptor for optional_int field.
descOptionalInt = mixinFields[0][0].Descriptor()
// OptionalIntValidator is a validator for the "optional_int" field. It is called by the builders before save.
OptionalIntValidator = descOptionalInt.Validators[0].(func(int) error)
// descLast is the schema descriptor for last field.
descLast = fields[2].Descriptor()
// DefaultLast holds the default value on creation for the last field.

View File

@@ -114,6 +114,14 @@ func IDLTE(id string) predicate.User {
)
}
// OptionalInt applies equality check predicate on the "optional_int" field. It's identical to OptionalIntEQ.
func OptionalInt(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.EQ(s.C(FieldOptionalInt), v))
},
)
}
// Age applies equality check predicate on the "age" field. It's identical to AgeEQ.
func Age(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
@@ -162,6 +170,106 @@ func Password(v string) predicate.User {
)
}
// OptionalIntEQ applies the EQ predicate on the "optional_int" field.
func OptionalIntEQ(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.EQ(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntNEQ applies the NEQ predicate on the "optional_int" field.
func OptionalIntNEQ(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.NEQ(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntIn applies the In predicate on the "optional_int" field.
func OptionalIntIn(vs ...int) predicate.User {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.User(func(s *sql.Selector) {
// if not arguments were provided, append the FALSE constants,
// since we can't apply "IN ()". This will make this predicate falsy.
if len(vs) == 0 {
s.Where(sql.False())
return
}
s.Where(sql.In(s.C(FieldOptionalInt), v...))
},
)
}
// OptionalIntNotIn applies the NotIn predicate on the "optional_int" field.
func OptionalIntNotIn(vs ...int) predicate.User {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.User(func(s *sql.Selector) {
// if not arguments were provided, append the FALSE constants,
// since we can't apply "IN ()". This will make this predicate falsy.
if len(vs) == 0 {
s.Where(sql.False())
return
}
s.Where(sql.NotIn(s.C(FieldOptionalInt), v...))
},
)
}
// OptionalIntGT applies the GT predicate on the "optional_int" field.
func OptionalIntGT(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.GT(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntGTE applies the GTE predicate on the "optional_int" field.
func OptionalIntGTE(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.GTE(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntLT applies the LT predicate on the "optional_int" field.
func OptionalIntLT(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.LT(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntLTE applies the LTE predicate on the "optional_int" field.
func OptionalIntLTE(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.LTE(s.C(FieldOptionalInt), v))
},
)
}
// OptionalIntIsNil applies the IsNil predicate on the "optional_int" field.
func OptionalIntIsNil() predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.IsNull(s.C(FieldOptionalInt)))
},
)
}
// OptionalIntNotNil applies the NotNil predicate on the "optional_int" field.
func OptionalIntNotNil() predicate.User {
return predicate.User(func(s *sql.Selector) {
s.Where(sql.NotNull(s.C(FieldOptionalInt)))
},
)
}
// AgeEQ applies the EQ predicate on the "age" field.
func AgeEQ(v int) predicate.User {
return predicate.User(func(s *sql.Selector) {

View File

@@ -9,6 +9,7 @@ package ent
import (
"context"
"errors"
"fmt"
"strconv"
"github.com/facebookincubator/ent/dialect/sql/sqlgraph"
@@ -23,23 +24,38 @@ import (
// UserCreate is the builder for creating a User entity.
type UserCreate struct {
config
age *int
name *string
last *string
nickname *string
phone *string
password *string
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
optional_int *int
age *int
name *string
last *string
nickname *string
phone *string
password *string
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
}
// SetOptionalInt sets the optional_int field.
func (uc *UserCreate) SetOptionalInt(i int) *UserCreate {
uc.optional_int = &i
return uc
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uc *UserCreate) SetNillableOptionalInt(i *int) *UserCreate {
if i != nil {
uc.SetOptionalInt(*i)
}
return uc
}
// SetAge sets the age field.
@@ -340,6 +356,11 @@ func (uc *UserCreate) SetParent(u *User) *UserCreate {
// Save creates the User in the database.
func (uc *UserCreate) Save(ctx context.Context) (*User, error) {
if uc.optional_int != nil {
if err := user.OptionalIntValidator(*uc.optional_int); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if uc.age == nil {
return nil, errors.New("ent: missing required field \"age\"")
}
@@ -385,6 +406,14 @@ func (uc *UserCreate) sqlSave(ctx context.Context) (*User, error) {
},
}
)
if value := uc.optional_int; value != nil {
spec.Fields = append(spec.Fields, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Value: *value,
Column: user.FieldOptionalInt,
})
u.OptionalInt = *value
}
if value := uc.age; value != nil {
spec.Fields = append(spec.Fields, &sqlgraph.FieldSpec{
Type: field.TypeInt,

View File

@@ -366,12 +366,12 @@ func (uq *UserQuery) Clone() *UserQuery {
// Example:
//
// var v []struct {
// Age int `json:"age,omitempty"`
// OptionalInt int `json:"optional_int,omitempty"`
// Count int `json:"count,omitempty"`
// }
//
// client.User.Query().
// GroupBy(user.FieldAge).
// GroupBy(user.FieldOptionalInt).
// Aggregate(ent.Count()).
// Scan(ctx, &v)
//
@@ -387,11 +387,11 @@ func (uq *UserQuery) GroupBy(field string, fields ...string) *UserGroupBy {
// Example:
//
// var v []struct {
// Age int `json:"age,omitempty"`
// OptionalInt int `json:"optional_int,omitempty"`
// }
//
// client.User.Query().
// Select(user.FieldAge).
// Select(user.FieldOptionalInt).
// Scan(ctx, &v)
//
func (uq *UserQuery) Select(field string, fields ...string) *UserSelect {

View File

@@ -9,6 +9,7 @@ package ent
import (
"context"
"errors"
"fmt"
"strconv"
"github.com/facebookincubator/ent/dialect/sql"
@@ -25,39 +26,42 @@ import (
// UserUpdate is the builder for updating User entities.
type UserUpdate struct {
config
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
predicates []predicate.User
optional_int *int
addoptional_int *int
clearoptional_int bool
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
predicates []predicate.User
}
// Where adds a new predicate for the builder.
@@ -66,6 +70,38 @@ func (uu *UserUpdate) Where(ps ...predicate.User) *UserUpdate {
return uu
}
// SetOptionalInt sets the optional_int field.
func (uu *UserUpdate) SetOptionalInt(i int) *UserUpdate {
uu.optional_int = &i
uu.addoptional_int = nil
return uu
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uu *UserUpdate) SetNillableOptionalInt(i *int) *UserUpdate {
if i != nil {
uu.SetOptionalInt(*i)
}
return uu
}
// AddOptionalInt adds i to optional_int.
func (uu *UserUpdate) AddOptionalInt(i int) *UserUpdate {
if uu.addoptional_int == nil {
uu.addoptional_int = &i
} else {
*uu.addoptional_int += i
}
return uu
}
// ClearOptionalInt clears the value of optional_int.
func (uu *UserUpdate) ClearOptionalInt() *UserUpdate {
uu.optional_int = nil
uu.clearoptional_int = true
return uu
}
// SetAge sets the age field.
func (uu *UserUpdate) SetAge(i int) *UserUpdate {
uu.age = &i
@@ -560,6 +596,11 @@ func (uu *UserUpdate) ClearParent() *UserUpdate {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (uu *UserUpdate) Save(ctx context.Context) (int, error) {
if uu.optional_int != nil {
if err := user.OptionalIntValidator(*uu.optional_int); err != nil {
return 0, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if len(uu.card) > 1 {
return 0, errors.New("ent: multiple assignments on a unique edge \"card\"")
}
@@ -615,6 +656,26 @@ func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) {
}
}
}
if value := uu.optional_int; value != nil {
spec.Fields.Set = append(spec.Fields.Set, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Value: *value,
Column: user.FieldOptionalInt,
})
}
if value := uu.addoptional_int; value != nil {
spec.Fields.Add = append(spec.Fields.Add, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Value: *value,
Column: user.FieldOptionalInt,
})
}
if uu.clearoptional_int {
spec.Fields.Clear = append(spec.Fields.Clear, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Column: user.FieldOptionalInt,
})
}
if value := uu.age; value != nil {
spec.Fields.Set = append(spec.Fields.Set, &sqlgraph.FieldSpec{
Type: field.TypeInt,
@@ -1172,39 +1233,74 @@ func (uu *UserUpdate) sqlSave(ctx context.Context) (n int, err error) {
// UserUpdateOne is the builder for updating a single User entity.
type UserUpdateOne struct {
config
id string
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
id string
optional_int *int
addoptional_int *int
clearoptional_int bool
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
}
// SetOptionalInt sets the optional_int field.
func (uuo *UserUpdateOne) SetOptionalInt(i int) *UserUpdateOne {
uuo.optional_int = &i
uuo.addoptional_int = nil
return uuo
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uuo *UserUpdateOne) SetNillableOptionalInt(i *int) *UserUpdateOne {
if i != nil {
uuo.SetOptionalInt(*i)
}
return uuo
}
// AddOptionalInt adds i to optional_int.
func (uuo *UserUpdateOne) AddOptionalInt(i int) *UserUpdateOne {
if uuo.addoptional_int == nil {
uuo.addoptional_int = &i
} else {
*uuo.addoptional_int += i
}
return uuo
}
// ClearOptionalInt clears the value of optional_int.
func (uuo *UserUpdateOne) ClearOptionalInt() *UserUpdateOne {
uuo.optional_int = nil
uuo.clearoptional_int = true
return uuo
}
// SetAge sets the age field.
@@ -1701,6 +1797,11 @@ func (uuo *UserUpdateOne) ClearParent() *UserUpdateOne {
// Save executes the query and returns the updated entity.
func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) {
if uuo.optional_int != nil {
if err := user.OptionalIntValidator(*uuo.optional_int); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if len(uuo.card) > 1 {
return nil, errors.New("ent: multiple assignments on a unique edge \"card\"")
}
@@ -1750,6 +1851,26 @@ func (uuo *UserUpdateOne) sqlSave(ctx context.Context) (u *User, err error) {
},
},
}
if value := uuo.optional_int; value != nil {
spec.Fields.Set = append(spec.Fields.Set, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Value: *value,
Column: user.FieldOptionalInt,
})
}
if value := uuo.addoptional_int; value != nil {
spec.Fields.Add = append(spec.Fields.Add, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Value: *value,
Column: user.FieldOptionalInt,
})
}
if uuo.clearoptional_int {
spec.Fields.Clear = append(spec.Fields.Clear, &sqlgraph.FieldSpec{
Type: field.TypeInt,
Column: user.FieldOptionalInt,
})
}
if value := uuo.age; value != nil {
spec.Fields.Set = append(spec.Fields.Set, &sqlgraph.FieldSpec{
Type: field.TypeInt,

View File

@@ -202,6 +202,7 @@ func ExampleGroup() {
log.Println("file created:", f0)
u1 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -404,6 +405,7 @@ func ExampleUser() {
log.Println("group created:", gr3)
u4 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -414,6 +416,7 @@ func ExampleUser() {
log.Println("user created:", u4)
u6 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -429,6 +432,7 @@ func ExampleUser() {
log.Println("pet created:", pe7)
u8 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -439,6 +443,7 @@ func ExampleUser() {
log.Println("user created:", u8)
u10 := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").
@@ -451,6 +456,7 @@ func ExampleUser() {
// create user vertex with its edges.
u := client.User.
Create().
SetOptionalInt(1).
SetAge(1).
SetName("string").
SetLast("string").

View File

@@ -19,6 +19,8 @@ type User struct {
config `graphql:"-" json:"-"`
// ID of the ent.
ID string `json:"id,omitempty"`
// OptionalInt holds the value of the "optional_int" field.
OptionalInt int `json:"optional_int,omitempty"`
// Age holds the value of the "age" field.
Age int `json:"age,omitempty"`
// Name holds the value of the "name" field.
@@ -40,18 +42,20 @@ func (u *User) FromResponse(res *gremlin.Response) error {
return err
}
var scanu struct {
ID string `json:"id,omitempty"`
Age int `json:"age,omitempty"`
Name string `json:"name,omitempty"`
Last string `json:"last,omitempty"`
Nickname string `json:"nickname,omitempty"`
Phone string `json:"phone,omitempty"`
Password string `json:"password,omitempty"`
ID string `json:"id,omitempty"`
OptionalInt int `json:"optional_int,omitempty"`
Age int `json:"age,omitempty"`
Name string `json:"name,omitempty"`
Last string `json:"last,omitempty"`
Nickname string `json:"nickname,omitempty"`
Phone string `json:"phone,omitempty"`
Password string `json:"password,omitempty"`
}
if err := vmap.Decode(&scanu); err != nil {
return err
}
u.ID = scanu.ID
u.OptionalInt = scanu.OptionalInt
u.Age = scanu.Age
u.Name = scanu.Name
u.Last = scanu.Last
@@ -139,6 +143,8 @@ func (u *User) String() string {
var builder strings.Builder
builder.WriteString("User(")
builder.WriteString(fmt.Sprintf("id=%v", u.ID))
builder.WriteString(", optional_int=")
builder.WriteString(fmt.Sprintf("%v", u.OptionalInt))
builder.WriteString(", age=")
builder.WriteString(fmt.Sprintf("%v", u.Age))
builder.WriteString(", name=")
@@ -170,26 +176,28 @@ func (u *Users) FromResponse(res *gremlin.Response) error {
return err
}
var scanu []struct {
ID string `json:"id,omitempty"`
Age int `json:"age,omitempty"`
Name string `json:"name,omitempty"`
Last string `json:"last,omitempty"`
Nickname string `json:"nickname,omitempty"`
Phone string `json:"phone,omitempty"`
Password string `json:"password,omitempty"`
ID string `json:"id,omitempty"`
OptionalInt int `json:"optional_int,omitempty"`
Age int `json:"age,omitempty"`
Name string `json:"name,omitempty"`
Last string `json:"last,omitempty"`
Nickname string `json:"nickname,omitempty"`
Phone string `json:"phone,omitempty"`
Password string `json:"password,omitempty"`
}
if err := vmap.Decode(&scanu); err != nil {
return err
}
for _, v := range scanu {
*u = append(*u, &User{
ID: v.ID,
Age: v.Age,
Name: v.Name,
Last: v.Last,
Nickname: v.Nickname,
Phone: v.Phone,
Password: v.Password,
ID: v.ID,
OptionalInt: v.OptionalInt,
Age: v.Age,
Name: v.Name,
Last: v.Last,
Nickname: v.Nickname,
Phone: v.Phone,
Password: v.Password,
})
}
return nil

View File

@@ -7,6 +7,7 @@
package user
import (
"github.com/facebookincubator/ent"
"github.com/facebookincubator/ent/entc/integration/ent/schema"
)
@@ -15,6 +16,8 @@ const (
Label = "user"
// FieldID holds the string denoting the id field in the database.
FieldID = "id"
// FieldOptionalInt holds the string denoting the optional_int vertex property in the database.
FieldOptionalInt = "optional_int"
// FieldAge holds the string denoting the age vertex property in the database.
FieldAge = "age"
// FieldName holds the string denoting the name vertex property in the database.
@@ -53,8 +56,17 @@ const (
)
var (
mixin = schema.User{}.Mixin()
mixinFields = [...][]ent.Field{
mixin[0].Fields(),
}
fields = schema.User{}.Fields()
// descOptionalInt is the schema descriptor for optional_int field.
descOptionalInt = mixinFields[0][0].Descriptor()
// OptionalIntValidator is a validator for the "optional_int" field. It is called by the builders before save.
OptionalIntValidator = descOptionalInt.Validators[0].(func(int) error)
// descLast is the schema descriptor for last field.
descLast = fields[2].Descriptor()
// DefaultLast holds the default value on creation for the last field.

View File

@@ -94,6 +94,14 @@ func IDLTE(id string) predicate.User {
)
}
// OptionalInt applies equality check predicate on the "optional_int" field. It's identical to OptionalIntEQ.
func OptionalInt(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.EQ(v))
},
)
}
// Age applies equality check predicate on the "age" field. It's identical to AgeEQ.
func Age(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
@@ -142,6 +150,94 @@ func Password(v string) predicate.User {
)
}
// OptionalIntEQ applies the EQ predicate on the "optional_int" field.
func OptionalIntEQ(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.EQ(v))
},
)
}
// OptionalIntNEQ applies the NEQ predicate on the "optional_int" field.
func OptionalIntNEQ(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.NEQ(v))
},
)
}
// OptionalIntIn applies the In predicate on the "optional_int" field.
func OptionalIntIn(vs ...int) predicate.User {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.Within(v...))
},
)
}
// OptionalIntNotIn applies the NotIn predicate on the "optional_int" field.
func OptionalIntNotIn(vs ...int) predicate.User {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.Without(v...))
},
)
}
// OptionalIntGT applies the GT predicate on the "optional_int" field.
func OptionalIntGT(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.GT(v))
},
)
}
// OptionalIntGTE applies the GTE predicate on the "optional_int" field.
func OptionalIntGTE(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.GTE(v))
},
)
}
// OptionalIntLT applies the LT predicate on the "optional_int" field.
func OptionalIntLT(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.LT(v))
},
)
}
// OptionalIntLTE applies the LTE predicate on the "optional_int" field.
func OptionalIntLTE(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.Has(Label, FieldOptionalInt, p.LTE(v))
},
)
}
// OptionalIntIsNil applies the IsNil predicate on the "optional_int" field.
func OptionalIntIsNil() predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.HasLabel(Label).HasNot(FieldOptionalInt)
},
)
}
// OptionalIntNotNil applies the NotNil predicate on the "optional_int" field.
func OptionalIntNotNil() predicate.User {
return predicate.User(func(t *dsl.Traversal) {
t.HasLabel(Label).Has(FieldOptionalInt)
},
)
}
// AgeEQ applies the EQ predicate on the "age" field.
func AgeEQ(v int) predicate.User {
return predicate.User(func(t *dsl.Traversal) {

View File

@@ -9,6 +9,7 @@ package ent
import (
"context"
"errors"
"fmt"
"github.com/facebookincubator/ent/dialect/gremlin"
"github.com/facebookincubator/ent/dialect/gremlin/graph/dsl"
@@ -21,23 +22,38 @@ import (
// UserCreate is the builder for creating a User entity.
type UserCreate struct {
config
age *int
name *string
last *string
nickname *string
phone *string
password *string
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
optional_int *int
age *int
name *string
last *string
nickname *string
phone *string
password *string
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
}
// SetOptionalInt sets the optional_int field.
func (uc *UserCreate) SetOptionalInt(i int) *UserCreate {
uc.optional_int = &i
return uc
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uc *UserCreate) SetNillableOptionalInt(i *int) *UserCreate {
if i != nil {
uc.SetOptionalInt(*i)
}
return uc
}
// SetAge sets the age field.
@@ -338,6 +354,11 @@ func (uc *UserCreate) SetParent(u *User) *UserCreate {
// Save creates the User in the database.
func (uc *UserCreate) Save(ctx context.Context) (*User, error) {
if uc.optional_int != nil {
if err := user.OptionalIntValidator(*uc.optional_int); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if uc.age == nil {
return nil, errors.New("ent: missing required field \"age\"")
}
@@ -395,6 +416,9 @@ func (uc *UserCreate) gremlin() *dsl.Traversal {
}
constraints := make([]*constraint, 0, 8)
v := g.AddV(user.Label)
if uc.optional_int != nil {
v.Property(dsl.Single, user.FieldOptionalInt, *uc.optional_int)
}
if uc.age != nil {
v.Property(dsl.Single, user.FieldAge, *uc.age)
}

View File

@@ -318,12 +318,12 @@ func (uq *UserQuery) Clone() *UserQuery {
// Example:
//
// var v []struct {
// Age int `json:"age,omitempty"`
// OptionalInt int `json:"optional_int,omitempty"`
// Count int `json:"count,omitempty"`
// }
//
// client.User.Query().
// GroupBy(user.FieldAge).
// GroupBy(user.FieldOptionalInt).
// Aggregate(ent.Count()).
// Scan(ctx, &v)
//
@@ -339,11 +339,11 @@ func (uq *UserQuery) GroupBy(field string, fields ...string) *UserGroupBy {
// Example:
//
// var v []struct {
// Age int `json:"age,omitempty"`
// OptionalInt int `json:"optional_int,omitempty"`
// }
//
// client.User.Query().
// Select(user.FieldAge).
// Select(user.FieldOptionalInt).
// Scan(ctx, &v)
//
func (uq *UserQuery) Select(field string, fields ...string) *UserSelect {

View File

@@ -9,6 +9,7 @@ package ent
import (
"context"
"errors"
"fmt"
"github.com/facebookincubator/ent/dialect/gremlin"
"github.com/facebookincubator/ent/dialect/gremlin/graph/dsl"
@@ -22,39 +23,42 @@ import (
// UserUpdate is the builder for updating User entities.
type UserUpdate struct {
config
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
predicates []predicate.User
optional_int *int
addoptional_int *int
clearoptional_int bool
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
predicates []predicate.User
}
// Where adds a new predicate for the builder.
@@ -63,6 +67,38 @@ func (uu *UserUpdate) Where(ps ...predicate.User) *UserUpdate {
return uu
}
// SetOptionalInt sets the optional_int field.
func (uu *UserUpdate) SetOptionalInt(i int) *UserUpdate {
uu.optional_int = &i
uu.addoptional_int = nil
return uu
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uu *UserUpdate) SetNillableOptionalInt(i *int) *UserUpdate {
if i != nil {
uu.SetOptionalInt(*i)
}
return uu
}
// AddOptionalInt adds i to optional_int.
func (uu *UserUpdate) AddOptionalInt(i int) *UserUpdate {
if uu.addoptional_int == nil {
uu.addoptional_int = &i
} else {
*uu.addoptional_int += i
}
return uu
}
// ClearOptionalInt clears the value of optional_int.
func (uu *UserUpdate) ClearOptionalInt() *UserUpdate {
uu.optional_int = nil
uu.clearoptional_int = true
return uu
}
// SetAge sets the age field.
func (uu *UserUpdate) SetAge(i int) *UserUpdate {
uu.age = &i
@@ -557,6 +593,11 @@ func (uu *UserUpdate) ClearParent() *UserUpdate {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (uu *UserUpdate) Save(ctx context.Context) (int, error) {
if uu.optional_int != nil {
if err := user.OptionalIntValidator(*uu.optional_int); err != nil {
return 0, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if len(uu.card) > 1 {
return 0, errors.New("ent: multiple assignments on a unique edge \"card\"")
}
@@ -622,6 +663,12 @@ func (uu *UserUpdate) gremlin() *dsl.Traversal {
trs []*dsl.Traversal
)
if value := uu.optional_int; value != nil {
v.Property(dsl.Single, user.FieldOptionalInt, *value)
}
if value := uu.addoptional_int; value != nil {
v.Property(dsl.Single, user.FieldOptionalInt, __.Union(__.Values(user.FieldOptionalInt), __.Constant(*value)).Sum())
}
if value := uu.age; value != nil {
v.Property(dsl.Single, user.FieldAge, *value)
}
@@ -652,6 +699,9 @@ func (uu *UserUpdate) gremlin() *dsl.Traversal {
v.Property(dsl.Single, user.FieldPassword, *value)
}
var properties []interface{}
if uu.clearoptional_int {
properties = append(properties, user.FieldOptionalInt)
}
if uu.clearnickname {
properties = append(properties, user.FieldNickname)
}
@@ -787,39 +837,74 @@ func (uu *UserUpdate) gremlin() *dsl.Traversal {
// UserUpdateOne is the builder for updating a single User entity.
type UserUpdateOne struct {
config
id string
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
id string
optional_int *int
addoptional_int *int
clearoptional_int bool
age *int
addage *int
name *string
last *string
nickname *string
clearnickname bool
phone *string
clearphone bool
password *string
clearpassword bool
card map[string]struct{}
pets map[string]struct{}
files map[string]struct{}
groups map[string]struct{}
friends map[string]struct{}
followers map[string]struct{}
following map[string]struct{}
team map[string]struct{}
spouse map[string]struct{}
children map[string]struct{}
parent map[string]struct{}
clearedCard bool
removedPets map[string]struct{}
removedFiles map[string]struct{}
removedGroups map[string]struct{}
removedFriends map[string]struct{}
removedFollowers map[string]struct{}
removedFollowing map[string]struct{}
clearedTeam bool
clearedSpouse bool
removedChildren map[string]struct{}
clearedParent bool
}
// SetOptionalInt sets the optional_int field.
func (uuo *UserUpdateOne) SetOptionalInt(i int) *UserUpdateOne {
uuo.optional_int = &i
uuo.addoptional_int = nil
return uuo
}
// SetNillableOptionalInt sets the optional_int field if the given value is not nil.
func (uuo *UserUpdateOne) SetNillableOptionalInt(i *int) *UserUpdateOne {
if i != nil {
uuo.SetOptionalInt(*i)
}
return uuo
}
// AddOptionalInt adds i to optional_int.
func (uuo *UserUpdateOne) AddOptionalInt(i int) *UserUpdateOne {
if uuo.addoptional_int == nil {
uuo.addoptional_int = &i
} else {
*uuo.addoptional_int += i
}
return uuo
}
// ClearOptionalInt clears the value of optional_int.
func (uuo *UserUpdateOne) ClearOptionalInt() *UserUpdateOne {
uuo.optional_int = nil
uuo.clearoptional_int = true
return uuo
}
// SetAge sets the age field.
@@ -1316,6 +1401,11 @@ func (uuo *UserUpdateOne) ClearParent() *UserUpdateOne {
// Save executes the query and returns the updated entity.
func (uuo *UserUpdateOne) Save(ctx context.Context) (*User, error) {
if uuo.optional_int != nil {
if err := user.OptionalIntValidator(*uuo.optional_int); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"optional_int\": %v", err)
}
}
if len(uuo.card) > 1 {
return nil, errors.New("ent: multiple assignments on a unique edge \"card\"")
}
@@ -1382,6 +1472,12 @@ func (uuo *UserUpdateOne) gremlin(id string) *dsl.Traversal {
trs []*dsl.Traversal
)
if value := uuo.optional_int; value != nil {
v.Property(dsl.Single, user.FieldOptionalInt, *value)
}
if value := uuo.addoptional_int; value != nil {
v.Property(dsl.Single, user.FieldOptionalInt, __.Union(__.Values(user.FieldOptionalInt), __.Constant(*value)).Sum())
}
if value := uuo.age; value != nil {
v.Property(dsl.Single, user.FieldAge, *value)
}
@@ -1412,6 +1508,9 @@ func (uuo *UserUpdateOne) gremlin(id string) *dsl.Traversal {
v.Property(dsl.Single, user.FieldPassword, *value)
}
var properties []interface{}
if uuo.clearoptional_int {
properties = append(properties, user.FieldOptionalInt)
}
if uuo.clearnickname {
properties = append(properties, user.FieldNickname)
}