sqlSelectByColumnsRaw method

Iterable<List> sqlSelectByColumnsRaw(
  1. Map<DatabaseColumn, List> m, {
  2. bool and = true,
})

Select raw values from some columns values, where MapEntry.key is column, and MapEntry.value is List of raw column value

Implementation

Iterable<List> sqlSelectByColumnsRaw(Map<DatabaseColumn, List> m,
    {bool and = true}) {
  final sb = StringBuffer('WHERE ');
  final e = m.entries.first;
  sb.write('${e.key.name} IN (${sqlQueryRowBindings(e.value.length)})');
  for (final e in m.entries.skip(1)) {
    if (and) {
      sb.write(' AND ');
    } else {
      sb.write(' OR ');
    }
    sb.write('${e.key.name} IN (${sqlQueryRowBindings(e.value.length)})');
  }
  return sqlSelectRaw(
    sb.toString(),
    m.entries.expand((c) => c.value.map(c.key.databaseSaveMutator)).toList(),
  );
}