toSQL<T extends SqlType> method

  1. @override
String toSQL<T extends SqlType>()
override

Generates the SQL representation with proper quoting and aliasing.

Handles table.field notation by quoting each part separately. Adds AS clause if an alias is provided.

Returns the properly quoted field name with optional alias.

Example:

QField('name').toSQL(); // "`name`"
QField('users.email').toSQL(); // "`users`.`email`"
QField('count', as: 'total').toSQL(); // "`count` AS `total`"

Implementation

@override
String toSQL<T extends SqlType>() {
  var hasDot = value.contains('.');
  var sql = distinct ? 'DISTINCT ' : '';
  if (hasDot) {
    var parts = value.split('.');
    if (as.isNotEmpty) {
      return '$sql${parts[0]}.${SQL.q<T>(parts[1])} AS ${SQL.q<T>(as)}';
    }
    return '$sql${parts[0]}.${SQL.q<T>(parts[1])}';
  }

  if (as.isNotEmpty) {
    return '$sql${SQL.q<T>(value)} AS ${SQL.q<T>(as)}';
  }
  return '$sql${SQL.q<T>(value)}';
}