where<T extends Model> static method

Future<List<T>> where<T extends Model>({
  1. required String field,
  2. String comp = "==",
  3. dynamic value,
})

Filters records with comparison operators.

Supported: ==, !=, >, <, >=, <=

Implementation

static Future<List<T>> where<T extends Model>({
  required String field,
  String comp = "==",
  dynamic value,
}) async {
  final constructor = _jsonConstructors[T];
  if (constructor == null) return [];

  try {
    final records = await jsonIndex<T>();
    final filtered = records.where((r) {
      final fieldValue = r[field];
      switch (comp) {
        case "==":
          return fieldValue == value;
        case "!=":
          return fieldValue != value;
        case ">":
          return fieldValue is num && fieldValue > value;
        case "<":
          return fieldValue is num && fieldValue < value;
        case ">=":
          return fieldValue is num && fieldValue >= value;
        case "<=":
          return fieldValue is num && fieldValue <= value;
        default:
          return false;
      }
    }).toList();

    return filtered.map((json) => constructor(json) as T).toList();
  } catch (e) {
    return [];
  }
}