Now, it's not necessary to call execute to perform a database call:
Before:
final response = await client.from('countries').select().execute();
print(response.data); // brazil, us, uk
Now:
final data = await client.from('countries').select();
print(data); //brazil, us, uk
execute is now deprecated. It should be removed in the following updates
This was possible by implementing Future<T?> on PostgrestBuilder, making it possible to do the following operations: await, then, asStream and whenComplete. Other future methods, if called on PostgrestBuilder, will throw a UnsuportedError
Now, all the properties inside PostgrestBuilder are private, providing a good experience with code completers. Because of this, all classes that extends PostgrestBuilder are now part/part ofpostgrest_builder.dart
Since the execute method is now deprecated, we need to handle head and count features. For that, the new class FetchOptions was created. options is now an optional parameter on all api calls. If count is not null, a PostgrestResponse object is returned instead of the data itself:
final response = await client.from('countries').select('*', FetchOptions(count: CountOption.exact));
print(response.data);
print(response.count);
Errors now should be handled inside a try/catch block. This provides a dev-friendly error handling flow:
Before:
final response = await client.from('countries').select().execute();
if (response.hasError) {
print(response.error!);
} else {
pinrt(response.data!);
}
Now:
try {
final data = await client.from('countries').select();
print(data);
} on PostgrestError catch (error, stacktrace) {
// handle a PostgrestError
print('$error \n $stacktrace');
} catch (error, stacktrace) {
// handle other errors
print('$error \n $stracktrace');
}
lints
package is now used for lintingNow, it's not necessary to call
execute
to perform a database call: Before:Now:
execute
is now deprecated. It should be removed in the following updatesThis was possible by implementing
Future<T?>
onPostgrestBuilder
, making it possible to do the following operations:await
,then
,asStream
andwhenComplete
. Other future methods, if called onPostgrestBuilder
, will throw aUnsuportedError
METHOD_GET, METHOD_HEAD, METHOD_POST, METHOD_PUT, METHOD_PATCH, METHOD_DELETE
)PostgrestBuilder
are private, providing a good experience with code completers. Because of this, all classes that extendsPostgrestBuilder
are nowpart
/part of
postgrest_builder.dart
execute
method is now deprecated, we need to handlehead
andcount
features. For that, the new classFetchOptions
was created.options
is now an optional parameter on all api calls. Ifcount
is not null, aPostgrestResponse
object is returned instead of the data itself:try/catch
block. This provides a dev-friendly error handling flow: Before:Now: