firstWhere<T extends Model> static method
Returns first record matching where() condition.
Implementation
static Future<T?> firstWhere<T extends Model>({required String field, String comp = "==", required dynamic value}) async {
final constructor = _jsonConstructors[T];
if (constructor == null) return null;
const allowedOps = ['=', '==', '!=', '<', '>', '<=', '>=', 'LIKE'];
if (!allowedOps.contains(comp.toUpperCase()) && comp != "==") {
if (comp == "==") {
comp = "=";
} else {
throw ArgumentError("Invalid SQL operator: $comp");
}
} else if (comp == "==") {
comp = "=";
}
try {
final maps = await _database.query(_getTableName<T>(), where: '$field $comp ?', whereArgs: [value], limit: 1);
if (maps.isNotEmpty) {
return constructor(maps.first) as T;
}
return null;
} catch (e) {
return null;
}
}