entc: add codegen support for mixin

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

Reviewed By: alexsn

Differential Revision: D17600868

fbshipit-source-id: 39a242a541fa2a2dd2db1c9919fecf192ff098bf
This commit is contained in:
Ariel Mashraki
2019-09-26 07:39:46 -07:00
committed by Facebook Github Bot
parent df37dcc1a9
commit 4dbebe68ff
22 changed files with 511 additions and 310 deletions

View File

@@ -22,12 +22,12 @@ type Card struct {
config `json:"-"`
// ID of the ent.
ID string `json:"id,omitempty"`
// Number holds the value of the "number" field.
Number string `json:"number,omitempty"`
// CreatedAt holds the value of the "created_at" field.
CreatedAt time.Time `json:"created_at,omitempty"`
// UpdatedAt holds the value of the "updated_at" field.
UpdatedAt time.Time `json:"updated_at,omitempty"`
// Number holds the value of the "number" field.
Number string `json:"number,omitempty"`
// additional struct fields defined in the schema.
RequestID string // RequestID.
Logger *log.Logger // Logger.
@@ -37,23 +37,23 @@ type Card struct {
func (c *Card) FromRows(rows *sql.Rows) error {
var vc struct {
ID int
Number sql.NullString
CreatedAt sql.NullTime
UpdatedAt sql.NullTime
Number sql.NullString
}
// the order here should be the same as in the `card.Columns`.
if err := rows.Scan(
&vc.ID,
&vc.Number,
&vc.CreatedAt,
&vc.UpdatedAt,
&vc.Number,
); err != nil {
return err
}
c.ID = strconv.Itoa(vc.ID)
c.Number = vc.Number.String
c.CreatedAt = vc.CreatedAt.Time
c.UpdatedAt = vc.UpdatedAt.Time
c.Number = vc.Number.String
return nil
}
@@ -65,17 +65,17 @@ func (c *Card) FromResponse(res *gremlin.Response) error {
}
var vc struct {
ID string `json:"id,omitempty"`
Number string `json:"number,omitempty"`
CreatedAt int64 `json:"created_at,omitempty"`
UpdatedAt int64 `json:"updated_at,omitempty"`
Number string `json:"number,omitempty"`
}
if err := vmap.Decode(&vc); err != nil {
return err
}
c.ID = vc.ID
c.Number = vc.Number
c.CreatedAt = time.Unix(0, vc.CreatedAt)
c.UpdatedAt = time.Unix(0, vc.UpdatedAt)
c.Number = vc.Number
return nil
}
@@ -107,9 +107,9 @@ func (c *Card) String() string {
buf := bytes.NewBuffer(nil)
buf.WriteString("Card(")
buf.WriteString(fmt.Sprintf("id=%v", c.ID))
buf.WriteString(fmt.Sprintf(", number=%v", c.Number))
buf.WriteString(fmt.Sprintf(", created_at=%v", c.CreatedAt))
buf.WriteString(fmt.Sprintf(", updated_at=%v", c.UpdatedAt))
buf.WriteString(fmt.Sprintf(", number=%v", c.Number))
buf.WriteString(")")
return buf.String()
}
@@ -143,9 +143,9 @@ func (c *Cards) FromResponse(res *gremlin.Response) error {
}
var vc []struct {
ID string `json:"id,omitempty"`
Number string `json:"number,omitempty"`
CreatedAt int64 `json:"created_at,omitempty"`
UpdatedAt int64 `json:"updated_at,omitempty"`
Number string `json:"number,omitempty"`
}
if err := vmap.Decode(&vc); err != nil {
return err
@@ -153,9 +153,9 @@ func (c *Cards) FromResponse(res *gremlin.Response) error {
for _, v := range vc {
*c = append(*c, &Card{
ID: v.ID,
Number: v.Number,
CreatedAt: time.Unix(0, v.CreatedAt),
UpdatedAt: time.Unix(0, v.UpdatedAt),
Number: v.Number,
})
}
return nil

View File

@@ -9,6 +9,7 @@ package card
import (
"time"
"github.com/facebookincubator/ent"
"github.com/facebookincubator/ent/entc/integration/ent/schema"
)
@@ -17,12 +18,12 @@ const (
Label = "card"
// FieldID holds the string denoting the id field in the database.
FieldID = "id"
// FieldNumber holds the string denoting the number vertex property in the database.
FieldNumber = "number"
// FieldCreatedAt holds the string denoting the created_at vertex property in the database.
FieldCreatedAt = "created_at"
// FieldUpdatedAt holds the string denoting the updated_at vertex property in the database.
FieldUpdatedAt = "updated_at"
// FieldNumber holds the string denoting the number vertex property in the database.
FieldNumber = "number"
// Table holds the table name of the card in the database.
Table = "cards"
@@ -41,25 +42,32 @@ const (
// Columns holds all SQL columns are card fields.
var Columns = []string{
FieldID,
FieldNumber,
FieldCreatedAt,
FieldUpdatedAt,
FieldNumber,
}
var (
mixin = schema.Card{}.Mixin()
mixinFields = [...][]ent.Field{
mixin[0].Fields(),
}
fields = schema.Card{}.Fields()
// descNumber is the schema descriptor for number field.
descNumber = fields[0].Descriptor()
// NumberValidator is a validator for the "number" field. It is called by the builders before save.
NumberValidator = descNumber.Validators[0].(func(string) error)
// descCreatedAt is the schema descriptor for created_at field.
descCreatedAt = fields[1].Descriptor()
descCreatedAt = mixinFields[0][0].Descriptor()
// DefaultCreatedAt holds the default value on creation for the created_at field.
DefaultCreatedAt = descCreatedAt.Default.(func() time.Time)
// descUpdatedAt is the schema descriptor for updated_at field.
descUpdatedAt = fields[2].Descriptor()
descUpdatedAt = mixinFields[0][1].Descriptor()
// DefaultUpdatedAt holds the default value on creation for the updated_at field.
DefaultUpdatedAt = descUpdatedAt.Default.(func() time.Time)
// UpdateDefaultUpdatedAt holds the default value on update for the updated_at field.
UpdateDefaultUpdatedAt = descUpdatedAt.UpdateDefault.(func() time.Time)
// descNumber is the schema descriptor for number field.
descNumber = fields[0].Descriptor()
// NumberValidator is a validator for the "number" field. It is called by the builders before save.
NumberValidator = descNumber.Validators[0].(func(string) error)
)

View File

@@ -160,18 +160,6 @@ func IDNotIn(ids ...string) predicate.Card {
)
}
// Number applies equality check predicate on the "number" field. It's identical to NumberEQ.
func Number(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.EQ(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.EQ(v))
},
)
}
// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ.
func CreatedAt(v time.Time) predicate.Card {
return predicate.CardPerDialect(
@@ -196,8 +184,8 @@ func UpdatedAt(v time.Time) predicate.Card {
)
}
// NumberEQ applies the EQ predicate on the "number" field.
func NumberEQ(v string) predicate.Card {
// Number applies equality check predicate on the "number" field. It's identical to NumberEQ.
func Number(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.EQ(s.C(FieldNumber), v))
@@ -208,146 +196,6 @@ func NumberEQ(v string) predicate.Card {
)
}
// NumberNEQ applies the NEQ predicate on the "number" field.
func NumberNEQ(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.NEQ(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.NEQ(v))
},
)
}
// NumberGT applies the GT predicate on the "number" field.
func NumberGT(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.GT(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.GT(v))
},
)
}
// NumberGTE applies the GTE predicate on the "number" field.
func NumberGTE(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.GTE(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.GTE(v))
},
)
}
// NumberLT applies the LT predicate on the "number" field.
func NumberLT(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.LT(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.LT(v))
},
)
}
// NumberLTE applies the LTE predicate on the "number" field.
func NumberLTE(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.LTE(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.LTE(v))
},
)
}
// NumberIn applies the In predicate on the "number" field.
func NumberIn(vs ...string) predicate.Card {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.CardPerDialect(
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(FieldNumber), v...))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Within(v...))
},
)
}
// NumberNotIn applies the NotIn predicate on the "number" field.
func NumberNotIn(vs ...string) predicate.Card {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.CardPerDialect(
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(FieldNumber), v...))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Without(v...))
},
)
}
// NumberContains applies the Contains predicate on the "number" field.
func NumberContains(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.Contains(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Containing(v))
},
)
}
// NumberHasPrefix applies the HasPrefix predicate on the "number" field.
func NumberHasPrefix(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.HasPrefix(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.StartingWith(v))
},
)
}
// NumberHasSuffix applies the HasSuffix predicate on the "number" field.
func NumberHasSuffix(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.HasSuffix(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.EndingWith(v))
},
)
}
// CreatedAtEQ applies the EQ predicate on the "created_at" field.
func CreatedAtEQ(v time.Time) predicate.Card {
return predicate.CardPerDialect(
@@ -580,6 +428,158 @@ func UpdatedAtNotIn(vs ...time.Time) predicate.Card {
)
}
// NumberEQ applies the EQ predicate on the "number" field.
func NumberEQ(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.EQ(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.EQ(v))
},
)
}
// NumberNEQ applies the NEQ predicate on the "number" field.
func NumberNEQ(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.NEQ(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.NEQ(v))
},
)
}
// NumberGT applies the GT predicate on the "number" field.
func NumberGT(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.GT(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.GT(v))
},
)
}
// NumberGTE applies the GTE predicate on the "number" field.
func NumberGTE(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.GTE(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.GTE(v))
},
)
}
// NumberLT applies the LT predicate on the "number" field.
func NumberLT(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.LT(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.LT(v))
},
)
}
// NumberLTE applies the LTE predicate on the "number" field.
func NumberLTE(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.LTE(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.LTE(v))
},
)
}
// NumberIn applies the In predicate on the "number" field.
func NumberIn(vs ...string) predicate.Card {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.CardPerDialect(
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(FieldNumber), v...))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Within(v...))
},
)
}
// NumberNotIn applies the NotIn predicate on the "number" field.
func NumberNotIn(vs ...string) predicate.Card {
v := make([]interface{}, len(vs))
for i := range v {
v[i] = vs[i]
}
return predicate.CardPerDialect(
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(FieldNumber), v...))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Without(v...))
},
)
}
// NumberContains applies the Contains predicate on the "number" field.
func NumberContains(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.Contains(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.Containing(v))
},
)
}
// NumberHasPrefix applies the HasPrefix predicate on the "number" field.
func NumberHasPrefix(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.HasPrefix(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.StartingWith(v))
},
)
}
// NumberHasSuffix applies the HasSuffix predicate on the "number" field.
func NumberHasSuffix(v string) predicate.Card {
return predicate.CardPerDialect(
func(s *sql.Selector) {
s.Where(sql.HasSuffix(s.C(FieldNumber), v))
},
func(t *dsl.Traversal) {
t.Has(Label, FieldNumber, p.EndingWith(v))
},
)
}
// HasOwner applies the HasEdge predicate on the "owner" edge.
func HasOwner() predicate.Card {
return predicate.CardPerDialect(

View File

@@ -27,18 +27,12 @@ import (
// CardCreate is the builder for creating a Card entity.
type CardCreate struct {
config
number *string
created_at *time.Time
updated_at *time.Time
number *string
owner map[string]struct{}
}
// SetNumber sets the number field.
func (cc *CardCreate) SetNumber(s string) *CardCreate {
cc.number = &s
return cc
}
// SetCreatedAt sets the created_at field.
func (cc *CardCreate) SetCreatedAt(t time.Time) *CardCreate {
cc.created_at = &t
@@ -67,6 +61,12 @@ func (cc *CardCreate) SetNillableUpdatedAt(t *time.Time) *CardCreate {
return cc
}
// SetNumber sets the number field.
func (cc *CardCreate) SetNumber(s string) *CardCreate {
cc.number = &s
return cc
}
// SetOwnerID sets the owner edge to User by id.
func (cc *CardCreate) SetOwnerID(id string) *CardCreate {
if cc.owner == nil {
@@ -91,12 +91,6 @@ func (cc *CardCreate) SetOwner(u *User) *CardCreate {
// Save creates the Card in the database.
func (cc *CardCreate) Save(ctx context.Context) (*Card, error) {
if cc.number == nil {
return nil, errors.New("ent: missing required field \"number\"")
}
if err := card.NumberValidator(*cc.number); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"number\": %v", err)
}
if cc.created_at == nil {
v := card.DefaultCreatedAt()
cc.created_at = &v
@@ -105,6 +99,12 @@ func (cc *CardCreate) Save(ctx context.Context) (*Card, error) {
v := card.DefaultUpdatedAt()
cc.updated_at = &v
}
if cc.number == nil {
return nil, errors.New("ent: missing required field \"number\"")
}
if err := card.NumberValidator(*cc.number); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"number\": %v", err)
}
if len(cc.owner) > 1 {
return nil, errors.New("ent: multiple assignments on a unique edge \"owner\"")
}
@@ -137,10 +137,6 @@ func (cc *CardCreate) sqlSave(ctx context.Context) (*Card, error) {
return nil, err
}
builder := sql.Insert(card.Table).Default(cc.driver.Dialect())
if value := cc.number; value != nil {
builder.Set(card.FieldNumber, *value)
c.Number = *value
}
if value := cc.created_at; value != nil {
builder.Set(card.FieldCreatedAt, *value)
c.CreatedAt = *value
@@ -149,6 +145,10 @@ func (cc *CardCreate) sqlSave(ctx context.Context) (*Card, error) {
builder.Set(card.FieldUpdatedAt, *value)
c.UpdatedAt = *value
}
if value := cc.number; value != nil {
builder.Set(card.FieldNumber, *value)
c.Number = *value
}
query, args := builder.Query()
if err := tx.Exec(ctx, query, args, &res); err != nil {
return nil, rollback(tx, err)
@@ -207,15 +207,15 @@ func (cc *CardCreate) gremlin() *dsl.Traversal {
}
constraints := make([]*constraint, 0, 1)
v := g.AddV(card.Label)
if cc.number != nil {
v.Property(dsl.Single, card.FieldNumber, *cc.number)
}
if cc.created_at != nil {
v.Property(dsl.Single, card.FieldCreatedAt, *cc.created_at)
}
if cc.updated_at != nil {
v.Property(dsl.Single, card.FieldUpdatedAt, *cc.updated_at)
}
if cc.number != nil {
v.Property(dsl.Single, card.FieldNumber, *cc.number)
}
for id := range cc.owner {
v.AddE(user.CardLabel).From(g.V(id)).InV()
constraints = append(constraints, &constraint{

View File

@@ -279,12 +279,12 @@ func (cq *CardQuery) Clone() *CardQuery {
// Example:
//
// var v []struct {
// Number string `json:"number,omitempty"`
// CreatedAt time.Time `json:"created_at,omitempty"`
// Count int `json:"count,omitempty"`
// }
//
// client.Card.Query().
// GroupBy(card.FieldNumber).
// GroupBy(card.FieldCreatedAt).
// Aggregate(ent.Count()).
// Scan(ctx, &v)
//
@@ -305,11 +305,11 @@ func (cq *CardQuery) GroupBy(field string, fields ...string) *CardGroupBy {
// Example:
//
// var v []struct {
// Number string `json:"number,omitempty"`
// CreatedAt time.Time `json:"created_at,omitempty"`
// }
//
// client.Card.Query().
// Select(card.FieldNumber).
// Select(card.FieldCreatedAt).
// Scan(ctx, &v)
//
func (cq *CardQuery) Select(field string, fields ...string) *CardSelect {

View File

@@ -28,9 +28,9 @@ import (
// CardUpdate is the builder for updating Card entities.
type CardUpdate struct {
config
number *string
updated_at *time.Time
number *string
owner map[string]struct{}
clearedOwner bool
predicates []predicate.Card
@@ -78,15 +78,15 @@ func (cu *CardUpdate) ClearOwner() *CardUpdate {
// Save executes the query and returns the number of rows/vertices matched by this operation.
func (cu *CardUpdate) Save(ctx context.Context) (int, error) {
if cu.updated_at == nil {
v := card.UpdateDefaultUpdatedAt()
cu.updated_at = &v
}
if cu.number != nil {
if err := card.NumberValidator(*cu.number); err != nil {
return 0, fmt.Errorf("ent: validator failed for field \"number\": %v", err)
}
}
if cu.updated_at == nil {
v := card.UpdateDefaultUpdatedAt()
cu.updated_at = &v
}
if len(cu.owner) > 1 {
return 0, errors.New("ent: multiple assignments on a unique edge \"owner\"")
}
@@ -153,12 +153,12 @@ func (cu *CardUpdate) sqlSave(ctx context.Context) (n int, err error) {
res sql.Result
builder = sql.Update(card.Table).Where(sql.InInts(card.FieldID, ids...))
)
if value := cu.number; value != nil {
builder.Set(card.FieldNumber, *value)
}
if value := cu.updated_at; value != nil {
builder.Set(card.FieldUpdatedAt, *value)
}
if value := cu.number; value != nil {
builder.Set(card.FieldNumber, *value)
}
if !builder.Empty() {
query, args := builder.Query()
if err := tx.Exec(ctx, query, args, &res); err != nil {
@@ -230,12 +230,12 @@ func (cu *CardUpdate) gremlin() *dsl.Traversal {
trs []*dsl.Traversal
)
if value := cu.number; value != nil {
v.Property(dsl.Single, card.FieldNumber, *value)
}
if value := cu.updated_at; value != nil {
v.Property(dsl.Single, card.FieldUpdatedAt, *value)
}
if value := cu.number; value != nil {
v.Property(dsl.Single, card.FieldNumber, *value)
}
if cu.clearedOwner {
tr := rv.Clone().InE(user.CardLabel).Drop().Iterate()
trs = append(trs, tr)
@@ -265,10 +265,10 @@ func (cu *CardUpdate) gremlin() *dsl.Traversal {
// CardUpdateOne is the builder for updating a single Card entity.
type CardUpdateOne struct {
config
id string
number *string
id string
updated_at *time.Time
number *string
owner map[string]struct{}
clearedOwner bool
}
@@ -309,15 +309,15 @@ func (cuo *CardUpdateOne) ClearOwner() *CardUpdateOne {
// Save executes the query and returns the updated entity.
func (cuo *CardUpdateOne) Save(ctx context.Context) (*Card, error) {
if cuo.updated_at == nil {
v := card.UpdateDefaultUpdatedAt()
cuo.updated_at = &v
}
if cuo.number != nil {
if err := card.NumberValidator(*cuo.number); err != nil {
return nil, fmt.Errorf("ent: validator failed for field \"number\": %v", err)
}
}
if cuo.updated_at == nil {
v := card.UpdateDefaultUpdatedAt()
cuo.updated_at = &v
}
if len(cuo.owner) > 1 {
return nil, errors.New("ent: multiple assignments on a unique edge \"owner\"")
}
@@ -387,14 +387,14 @@ func (cuo *CardUpdateOne) sqlSave(ctx context.Context) (c *Card, err error) {
res sql.Result
builder = sql.Update(card.Table).Where(sql.InInts(card.FieldID, ids...))
)
if value := cuo.number; value != nil {
builder.Set(card.FieldNumber, *value)
c.Number = *value
}
if value := cuo.updated_at; value != nil {
builder.Set(card.FieldUpdatedAt, *value)
c.UpdatedAt = *value
}
if value := cuo.number; value != nil {
builder.Set(card.FieldNumber, *value)
c.Number = *value
}
if !builder.Empty() {
query, args := builder.Query()
if err := tx.Exec(ctx, query, args, &res); err != nil {
@@ -467,12 +467,12 @@ func (cuo *CardUpdateOne) gremlin(id string) *dsl.Traversal {
trs []*dsl.Traversal
)
if value := cuo.number; value != nil {
v.Property(dsl.Single, card.FieldNumber, *value)
}
if value := cuo.updated_at; value != nil {
v.Property(dsl.Single, card.FieldUpdatedAt, *value)
}
if value := cuo.number; value != nil {
v.Property(dsl.Single, card.FieldNumber, *value)
}
if cuo.clearedOwner {
tr := rv.Clone().InE(user.CardLabel).Drop().Iterate()
trs = append(trs, tr)

View File

@@ -36,9 +36,9 @@ func ExampleCard() {
// create card vertex with its edges.
c := client.Card.
Create().
SetNumber("string").
SetCreatedAt(time.Now()).
SetUpdatedAt(time.Now()).
SetNumber("string").
SaveX(ctx)
log.Println("card created:", c)
@@ -346,9 +346,9 @@ func ExampleUser() {
// creating vertices for the user's edges.
c0 := client.Card.
Create().
SetNumber("string").
SetCreatedAt(time.Now()).
SetUpdatedAt(time.Now()).
SetNumber("string").
SaveX(ctx)
log.Println("card created:", c0)
pe1 := client.Pet.

View File

@@ -75,6 +75,7 @@ var Columns = []string{
var (
fields = schema.FieldType{}.Fields()
// descValidateOptionalInt32 is the schema descriptor for validate_optional_int32 field.
descValidateOptionalInt32 = fields[15].Descriptor()
// ValidateOptionalInt32Validator is a validator for the "validate_optional_int32" field. It is called by the builders before save.

View File

@@ -58,6 +58,7 @@ var Columns = []string{
var (
fields = schema.File{}.Fields()
// descSize is the schema descriptor for size field.
descSize = fields[0].Descriptor()
// DefaultSize holds the default value on creation for the size field.

View File

@@ -83,20 +83,24 @@ var (
var (
fields = schema.Group{}.Fields()
// descActive is the schema descriptor for active field.
descActive = fields[0].Descriptor()
// DefaultActive holds the default value on creation for the active field.
DefaultActive = descActive.Default.(bool)
// descType is the schema descriptor for type field.
descType = fields[2].Descriptor()
// TypeValidator is a validator for the "type" field. It is called by the builders before save.
TypeValidator = descType.Validators[0].(func(string) error)
// descMaxUsers is the schema descriptor for max_users field.
descMaxUsers = fields[3].Descriptor()
// DefaultMaxUsers holds the default value on creation for the max_users field.
DefaultMaxUsers = descMaxUsers.Default.(int)
// MaxUsersValidator is a validator for the "max_users" field. It is called by the builders before save.
MaxUsersValidator = descMaxUsers.Validators[0].(func(int) error)
// descName is the schema descriptor for name field.
descName = fields[4].Descriptor()
// NameValidator is a validator for the "name" field. It is called by the builders before save.

View File

@@ -43,6 +43,7 @@ var Columns = []string{
var (
fields = schema.GroupInfo{}.Fields()
// descMaxUsers is the schema descriptor for max_users field.
descMaxUsers = fields[1].Descriptor()
// DefaultMaxUsers holds the default value on creation for the max_users field.

View File

@@ -20,9 +20,9 @@ var (
// CardsColumns holds the columns for the "cards" table.
CardsColumns = []*schema.Column{
{Name: "id", Type: field.TypeInt, Increment: true},
{Name: "number", Type: field.TypeString},
{Name: "created_at", Type: field.TypeTime},
{Name: "updated_at", Type: field.TypeTime},
{Name: "number", Type: field.TypeString},
{Name: "owner_id", Type: field.TypeInt, Unique: true, Nullable: true},
}
// CardsTable holds the schema information for the "cards" table.

View File

@@ -13,6 +13,20 @@ import (
"github.com/facebookincubator/ent/schema/field"
)
type TimeMixin struct{}
func (TimeMixin) Fields() []ent.Field {
return []ent.Field{
field.Time("created_at").
Default(time.Now).
Immutable(),
field.Time("updated_at").
Default(time.Now).
UpdateDefault(time.Now).
Immutable(),
}
}
// Card holds the schema definition for the CreditCard entity.
type Card struct {
ent.Schema
@@ -23,18 +37,17 @@ type Card struct {
Logger *log.Logger // Logger.
}
func (Card) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeMixin{},
}
}
// Fields of the Comment.
func (Card) Fields() []ent.Field {
return []ent.Field{
field.String("number").
NotEmpty(),
field.Time("created_at").
Default(time.Now).
Immutable(),
field.Time("updated_at").
Default(time.Now).
UpdateDefault(time.Now).
Immutable(),
}
}

View File

@@ -131,6 +131,7 @@ var (
var (
fields = schema.User{}.Fields()
// 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

@@ -42,6 +42,7 @@ var Columns = []string{
var (
fields = schema.User{}.Fields()
// descName is the schema descriptor for name field.
descName = fields[1].Descriptor()
// NameValidator is a validator for the "name" field. It is called by the builders before save.

View File

@@ -48,10 +48,12 @@ var Columns = []string{
var (
fields = schema.User{}.Fields()
// descBuffer is the schema descriptor for buffer field.
descBuffer = fields[3].Descriptor()
// DefaultBuffer holds the default value on creation for the buffer field.
DefaultBuffer = descBuffer.Default.([]byte)
// descTitle is the schema descriptor for title field.
descTitle = fields[4].Descriptor()
// DefaultTitle holds the default value on creation for the title field.