build method
Implementation
@protected
@override
String build({String? aggregateFunction, String? aggregateColumn}) {
final buf = StringBuffer();
if (selectColumns.length > 1) {
selectColumns.remove('*');
}
final withClause = buildWithClause();
if (withClause.isNotEmpty) {
buf.write(withClause);
buf.write(' ');
}
final table = getTable;
if (table.isNotEmpty) {
if (aggregateFunction != null && aggregateColumn != null) {
buf
..write('SELECT ')
..write(aggregateFunction)
..write('(')
..write(aggregateColumn)
..write(') FROM ')
..write(table);
} else {
buf.write('SELECT ');
if (selectColumns.isEmpty) {
buf.write('*');
} else {
buf.writeAll(selectColumns, ', ');
}
buf
..write(' FROM ')
..write(table);
}
if (joins.isNotEmpty) {
buf.write(' ');
buf.writeAll(joins, ' ');
}
if (conditions.isNotEmpty) {
buf.write(' WHERE ');
buf.writeAll(conditions, ' ');
}
if (unions.isNotEmpty) {
buf.write(' ');
buf.writeAll(unions, ' ');
}
if (aggregateFunction == null && aggregateColumn == null) {
if (_groupBy.isNotEmpty) {
buf.write(' GROUP BY ');
buf.writeAll(_groupBy, ', ');
}
if (_having.isNotEmpty) {
buf.write(' HAVING ');
buf.writeAll(_having, ' ');
}
if (_orderBy.isNotEmpty) {
buf.write(' ORDER BY ');
buf.writeAll(_orderBy, ', ');
}
if (_limit != null) {
buf
..write(' LIMIT ')
..write(_limit);
}
if (_offset != null) {
buf
..write(' OFFSET ')
..write(_offset);
}
}
} else if (conditions.isNotEmpty) {
buf.writeAll(conditions, ' ');
}
return buf.toString().trim();
}