select2<A, B> method

MssqlProjectedQuery<(A, B)> select2<A, B>(
  1. (MssqlExpression, MssqlExpression) select(
    1. TFields fields
    )
)

Two typed columns as a Dart record (A, B).

Named record shapes are generated DTOs; Dart will not map an arbitrary named record through a single generic.

Implementation

MssqlProjectedQuery<(A, B)> select2<A, B>(
  (MssqlExpression, MssqlExpression) Function(TFields fields) select,
) {
  final pair = select(fields);
  return this.select(
    MssqlProjection<(A, B)>(
      name: 'select2',
      columns: <MssqlProjectionColumn>[
        MssqlProjectionColumn('c0', pair.$1),
        MssqlProjectionColumn('c1', pair.$2),
      ],
      map: (row) => (
        MssqlProjection.decode<A>(
          row,
          0,
          projection: 'select2',
          column: 'c0',
          expression: pair.$1,
        ),
        MssqlProjection.decode<B>(
          row,
          1,
          projection: 'select2',
          column: 'c1',
          expression: pair.$2,
        ),
      ),
    ),
  );
}