MCPcopy Index your code
hub / github.com/ent/ent / count

Method count

dialect/sql/sqlgraph/graph.go:1032–1064  ·  view source on GitHub ↗
(ctx context.Context, drv dialect.Driver)

Source from the content-addressed store, hash-verified

1030}
1031
1032func (q *query) count(ctx context.Context, drv dialect.Driver) (int, error) {
1033 rows := &sql.Rows{}
1034 selector, err := q.selector(ctx)
1035 if err != nil {
1036 return 0, err
1037 }
1038 // Remove any ORDER BY clauses present in the COUNT query as
1039 // they are not allowed in some databases, such as PostgreSQL.
1040 if q.Order != nil {
1041 selector.ClearOrder()
1042 }
1043 // If no columns were selected in count,
1044 // the default selection is by node ids.
1045 columns := q.Node.Columns
1046 if len(columns) == 0 && q.Node.ID != nil {
1047 columns = append(columns, q.Node.ID.Column)
1048 }
1049 for i, c := range columns {
1050 columns[i] = selector.C(c)
1051 }
1052 if q.Unique {
1053 selector.SetDistinct(false)
1054 selector.Count(sql.Distinct(columns...))
1055 } else {
1056 selector.Count(columns...)
1057 }
1058 query, args := selector.Query()
1059 if err := drv.Query(ctx, query, args, rows); err != nil {
1060 return 0, err
1061 }
1062 defer rows.Close()
1063 return sql.ScanInt(rows)
1064}
1065
1066func (q *query) selector(ctx context.Context) (*sql.Selector, error) {
1067 selector := q.builder.

Callers 1

CountNodesFunction · 0.95

Calls 9

selectorMethod · 0.95
DistinctFunction · 0.92
ScanIntFunction · 0.92
SetDistinctMethod · 0.80
CMethod · 0.65
QueryMethod · 0.65
CloseMethod · 0.65
ClearOrderMethod · 0.45
CountMethod · 0.45

Tested by

no test coverage detected