visitGroupBy method
Implementation
@override
SqlFragment visitGroupBy(GroupByExpr e) {
// The translator does NOT build the full
// `SELECT ... GROUP BY ...` statement here.
// It returns the GROUP BY fragment, which
// the caller (Queryable) splices into the
// outer SELECT. This keeps the translator
// composable: the `WHERE` translator + the
// `GROUP BY` translator + the `HAVING`
// translator each return their own fragment.
final SqlFragment key = e.keySelector.accept(this);
final List<SqlFragment> parts = <SqlFragment>[key];
if (e.elementSelector != null) {
parts.add(e.elementSelector!.accept(this));
}
final String cols = parts.map((SqlFragment f) => f.sql).join(', ');
final List<Object?> binds =
parts.expand((SqlFragment f) => f.binds).toList();
return SqlFragment('GROUP BY $cols', binds);
}