mssqlRedactParameters function

Object mssqlRedactParameters(
  1. Object parameters, {
  2. bool includeValues = false,
})

Bound parameters with secrets removed.

Names that look like passwords stay redacted even when includeValues is true. A generated toString is a different surface — that one omits hidden columns — but an observer log is the one that would otherwise print @password next to the SQL.

Implementation

Object mssqlRedactParameters(Object parameters, {bool includeValues = false}) {
  if (parameters is Map) {
    return <String, Object?>{
      for (final entry in parameters.entries)
        entry.key.toString(): _redactValue(
          entry.key.toString(),
          entry.value,
          includeValues: includeValues,
        ),
    };
  }
  if (parameters is Iterable) {
    return <Object?>[
      for (final value in parameters) includeValues ? value : '<redacted>',
    ];
  }
  return includeValues ? parameters : '<redacted>';
}