driverOverride method

ColumnBuilder driverOverride(
  1. String driver, {
  2. ColumnType? type,
  3. String? sqlType,
  4. ColumnDefault? defaultValue,
  5. String? collation,
  6. String? charset,
})

Implementation

ColumnBuilder driverOverride(
  String driver, {
  ColumnType? type,
  String? sqlType,
  ColumnDefault? defaultValue,
  String? collation,
  String? charset,
}) {
  if (type == null &&
      sqlType == null &&
      defaultValue == null &&
      collation == null &&
      charset == null) {
    throw ArgumentError('At least one override value is required.');
  }
  if (type != null && sqlType != null) {
    throw ArgumentError(
      'Provide either a logical ColumnType or a raw sqlType string.',
    );
  }
  if (sqlType != null && sqlType.trim().isEmpty) {
    throw ArgumentError.value(sqlType, 'sqlType', 'must not be empty.');
  }
  final overrides = Map<String, ColumnDriverOverride>.from(
    _definition.driverOverrides,
  );
  final merged = (overrides[driver] ?? const ColumnDriverOverride()).merge(
    ColumnDriverOverride(
      type: type,
      sqlType: sqlType,
      defaultValue: defaultValue,
      collation: collation,
      charset: charset,
    ),
  );
  overrides[driver] = merged;
  _entry.updateDefinition(
    _definition.copyWith(driverOverrides: Map.unmodifiable(overrides)),
  );
  return this;
}