insert method

PostgrestFilterBuilder<T> insert(
  1. Object values, {
  2. bool defaultToNull = true,
})

Perform an INSERT into the table or view.

By default no data is returned. Use a trailing select to return data.

When inserting multiple rows in bulk, defaultToNull is used to set the values of fields missing in a proper subset of rows to be either NULL or the default value of these columns. Fields missing in all rows always use the default value of these columns.

For single row insertions, missing fields will be set to default values when applicable.

Default (not returning data):

await supabase.from('messages').insert(
    {'message': 'foo', 'username': 'supabot', 'channel_id': 1});

Returning data:

final data = await supabase.from('messages').insert({
  'message': 'foo',
  'username': 'supabot',
  'channel_id': 1
}).select();

Implementation

PostgrestFilterBuilder<T> insert(
  Object values, {
  bool defaultToNull = true,
}) {
  final newHeaders = {..._headers};
  newHeaders['Prefer'] = '';

  if (!defaultToNull) {
    newHeaders['Prefer'] = 'missing=default';
  }

  Uri url = _url;
  if (values is List) {
    url = _setColumnsSearchParam(values);
  }

  return PostgrestFilterBuilder(_copyWith(
    method: METHOD_POST,
    headers: newHeaders,
    body: values,
    url: url,
  ));
}