ent/entc: use select/scan on id query (#1552)

Summary:
Pull Request resolved: https://github.com/facebookexternal/fbc/pull/1552

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

avoids complete ent load on id query

Reviewed By: a8m

Differential Revision: D17906002

fbshipit-source-id: 7749a0d7c707858eab368978a1d220b581ea6dbb
This commit is contained in:
Alex Snast
2019-10-14 23:14:52 -07:00
committed by Facebook Github Bot
parent 638e34b11a
commit 5d988870bc
48 changed files with 313 additions and 892 deletions

View File

@@ -177,7 +177,11 @@ func (cq *CarQuery) AllX(ctx context.Context) []*Car {
// IDs executes the query and returns a list of Car ids.
func (cq *CarQuery) IDs(ctx context.Context) ([]int, error) {
return cq.sqlIDs(ctx)
var ids []int
if err := cq.Select(car.FieldID).Scan(ctx, &ids); err != nil {
return nil, err
}
return ids, nil
}
// IDsX is like IDs, but panics if an error occurs.
@@ -323,18 +327,6 @@ func (cq *CarQuery) sqlExist(ctx context.Context) (bool, error) {
return n > 0, nil
}
func (cq *CarQuery) sqlIDs(ctx context.Context) ([]int, error) {
vs, err := cq.sqlAll(ctx)
if err != nil {
return nil, err
}
var ids []int
for _, v := range vs {
ids = append(ids, v.ID)
}
return ids, nil
}
func (cq *CarQuery) sqlQuery() *sql.Selector {
t1 := sql.Table(car.Table)
selector := sql.Select(t1.Columns(car.Columns...)...).From(t1)

View File

@@ -182,7 +182,11 @@ func (gq *GroupQuery) AllX(ctx context.Context) []*Group {
// IDs executes the query and returns a list of Group ids.
func (gq *GroupQuery) IDs(ctx context.Context) ([]int, error) {
return gq.sqlIDs(ctx)
var ids []int
if err := gq.Select(group.FieldID).Scan(ctx, &ids); err != nil {
return nil, err
}
return ids, nil
}
// IDsX is like IDs, but panics if an error occurs.
@@ -328,18 +332,6 @@ func (gq *GroupQuery) sqlExist(ctx context.Context) (bool, error) {
return n > 0, nil
}
func (gq *GroupQuery) sqlIDs(ctx context.Context) ([]int, error) {
vs, err := gq.sqlAll(ctx)
if err != nil {
return nil, err
}
var ids []int
for _, v := range vs {
ids = append(ids, v.ID)
}
return ids, nil
}
func (gq *GroupQuery) sqlQuery() *sql.Selector {
t1 := sql.Table(group.Table)
selector := sql.Select(t1.Columns(group.Columns...)...).From(t1)

View File

@@ -196,7 +196,11 @@ func (uq *UserQuery) AllX(ctx context.Context) []*User {
// IDs executes the query and returns a list of User ids.
func (uq *UserQuery) IDs(ctx context.Context) ([]int, error) {
return uq.sqlIDs(ctx)
var ids []int
if err := uq.Select(user.FieldID).Scan(ctx, &ids); err != nil {
return nil, err
}
return ids, nil
}
// IDsX is like IDs, but panics if an error occurs.
@@ -342,18 +346,6 @@ func (uq *UserQuery) sqlExist(ctx context.Context) (bool, error) {
return n > 0, nil
}
func (uq *UserQuery) sqlIDs(ctx context.Context) ([]int, error) {
vs, err := uq.sqlAll(ctx)
if err != nil {
return nil, err
}
var ids []int
for _, v := range vs {
ids = append(ids, v.ID)
}
return ids, nil
}
func (uq *UserQuery) sqlQuery() *sql.Selector {
t1 := sql.Table(user.Table)
selector := sql.Select(t1.Columns(user.Columns...)...).From(t1)