whereIn method

Future<List<T>> whereIn(
  1. String field,
  2. List values
)

Find records with custom conditions

Implementation

Future<List<T>> whereIn(String field, List<dynamic> values) async {
  if (values.isEmpty) return [];

  if (DB.driver == DBDriver.mysql) {
    // For MySQL, use positional parameters
    final placeholders = List.generate(values.length, (_) => '?').join(', ');
    final result = await DB.query(
      'SELECT * FROM ${table.name} WHERE $field IN ($placeholders)',
      positionalParams: values,
    );
    return result.map((map) => fromMap(_convertDatabaseTypes(map))).toList();
  } else {
    // For PostgreSQL, use named parameters
    final placeholders =
        List.generate(values.length, (i) => ':value$i').join(', ');
    final params = {
      for (var i = 0; i < values.length; i++) 'value$i': values[i]
    };

    final result = await DB.query(
      'SELECT * FROM ${table.name} WHERE $field IN ($placeholders)',
      namedParams: params,
    );
    return result.map((map) => fromMap(_convertDatabaseTypes(map))).toList();
  }
}