entc/gen: move query-count to sqlgraph

This commit is contained in:
Ariel Mashraki
2019-12-22 19:42:28 +02:00
parent 1c54439d40
commit a26b9626a6
29 changed files with 819 additions and 408 deletions

View File

@@ -492,10 +492,11 @@ func (q *query) nodes(ctx context.Context, drv dialect.Driver) error {
func (q *query) count(ctx context.Context, drv dialect.Driver) (int, error) {
rows := &sql.Rows{}
selector := q.selector().Count(q.Node.ID.Column)
selector := q.selector()
selector.Count(selector.C(q.Node.ID.Column))
if q.Unique {
selector.SetDistinct(false)
selector.Count(sql.Distinct(q.Node.ID.Column))
selector.Count(sql.Distinct(selector.C(q.Node.ID.Column)))
}
query, args := selector.Query()
if err := drv.Query(ctx, query, args, rows); err != nil {
@@ -510,7 +511,7 @@ func (q *query) selector() *sql.Selector {
if q.From != nil {
selector = q.From
}
selector.Select(q.Node.Columns...)
selector.Select(selector.Columns(q.Node.Columns...)...)
if pred := q.Predicate; pred != nil {
pred(selector)
}

View File

@@ -1155,13 +1155,13 @@ func TestDeleteNodes(t *testing.T) {
func TestQueryNodes(t *testing.T) {
db, mock, err := sqlmock.New()
require.NoError(t, err)
mock.ExpectQuery(escape("SELECT DISTINCT `id`, `age`, `name`, `fk1`, `fk2` FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT ? OFFSET ?")).
mock.ExpectQuery(escape("SELECT DISTINCT `users`.`id`, `users`.`age`, `users`.`name`, `users`.`fk1`, `users`.`fk2` FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT ? OFFSET ?")).
WithArgs(40, 3, 4).
WillReturnRows(sqlmock.NewRows([]string{"id", "age", "name", "fk1", "fk2"}).
AddRow(1, 10, nil, nil, nil).
AddRow(2, 20, "", 0, 0).
AddRow(3, 30, "a8m", 1, 1))
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `id`) FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT ? OFFSET ?")).
mock.ExpectQuery(escape("SELECT COUNT(DISTINCT `users`.`id`) FROM `users` WHERE `age` < ? ORDER BY `id` LIMIT ? OFFSET ?")).
WithArgs(40, 3, 4).
WillReturnRows(sqlmock.NewRows([]string{"COUNT"}).
AddRow(3))