sql<T> function

Expr<T> sql<T>(
  1. List<String> parts,
  2. List<Expr<Object?>> values,
  3. Codec<T> codec
)

parts are trusted SQL, values are expressions. Never put user input in parts.

Implementation

Expr<T> sql<T>(List<String> parts, List<Expr<Object?>> values, Codec<T> codec) {
  if (parts.length != values.length + 1) {
    throw ArgumentError('SQL needs one more text part than expression.');
  }
  for (final part in parts) {
    checkSqlText(part);
  }
  return Expr.internal(
    RawNode(List.of(parts), [for (final v in values) v.expressionNode]),
    codec,
  );
}