findBy<T extends Model> static method

Future<T?> findBy<T extends Model>({
  1. required String field,
  2. required dynamic value,
})

Implementation

static Future<T?> findBy<T extends Model>({required String field, required dynamic value}) async {

  try {

    final constructor = _jsonConstructors[T];
    if (constructor == null) return null;

    final tableName = _getTableName<T>();

    final records = await _database.execute(Sql.named('SELECT * FROM "$tableName" WHERE $field = @$field LIMIT 1'),
      parameters: { field: value},
    );

    if (records.isNotEmpty) {
      return constructor(records.first.toColumnMap()) as T;
    }
    return null;
  } catch (e) {
    print('Postgres findBy error: $e');
    return null;
  }
}