toSql method

String toSql(
  1. DatabaseType dbType
)

Generate column definition SQL

Implementation

String toSql(DatabaseType dbType) {
  final parts = <String>[name];

  // Type with auto-increment handling
  if (autoIncrement || primaryKey) {
    switch (dbType) {
      case DatabaseType.postgresql:
        parts.add(type == 'INTEGER' ? 'SERIAL' : 'BIGSERIAL');
      case DatabaseType.mysql:
        parts.add('$type AUTO_INCREMENT');
      case DatabaseType.sqlite:
        parts.add('INTEGER');
    }
  } else {
    parts.add(type);
  }

  // Primary key (for single column PK)
  if (primaryKey) {
    parts.add('PRIMARY KEY');
  }

  // Nullable
  if (!nullable && !primaryKey) {
    parts.add('NOT NULL');
  }

  // Unique
  if (unique && !primaryKey) {
    parts.add('UNIQUE');
  }

  // Default value
  if (defaultValue != null) {
    parts.add('DEFAULT $defaultValue');
  }

  return parts.join(' ');
}