Postgrest Dart

Dart client for PostgREST. The goal of this library is to make an "ORM-like" restful interface.

pub package pub test

Using

The usage should be the same as postgrest-js except:

  • data is directly returned by awaiting the query when count option is not specified.
  • Exceptions will not be returned within the response, but will be thrown.
  • is_ and in_ filter methods are suffixed with _ sign to avoid collisions with reserved keywords.

You can find detail documentation from here.

Reading your data

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
final response = await client.from<PostgrestList>('users').select();

Reading your data and converting it to an object

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
final response = await client
    .from('users')
    .select<PostgrestList>()
    .withConverter((data) => data.map(User.fromJson).toList());

Insert records

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
try {
  await client.from('users')
    .insert([
      {'username': 'supabot', 'status': 'ONLINE'}
    ]);
} on PostgrestException catch (error, stacktrace) {
  // handle a PostgrestError
  print('$error \n $stacktrace');
} catch (error, stacktrace) {
  // handle other errors
  print('$error \n $stracktrace');
}

Update a record

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
await client.from('users')
      .update({'status': 'OFFLINE'})
      .eq('username', 'dragarcia');

Delete records

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
await client.from('users')
      .delete()
      .eq('username', 'supabot');

Get Count

import 'package:postgrest/postgrest.dart';

final url = 'https://example.com/postgrest/endpoint';
final client = PostgrestClient(url);
final response = await client.from('countries')
      .select<PostgrestResponse>('*', FetchOptions(count: CountOption.exact));
final data = response.data;
final count = response.count;

Contributing

  • Fork the repo on GitHub
  • Clone the project to your own machine
  • Commit changes to your own branch
  • Push your work back up to your fork
  • Submit a Pull request so that we can review your changes and merge

License

This repo is licensed under MIT.

Credits

Libraries

postgrest