insertReturningOrNull method
Future<D?>
insertReturningOrNull(
- Insertable<
D> entity, { - InsertMode? mode,
- UpsertClause<
T, D> ? onConflict,
Inserts a row into the table and returns it.
When no row was inserted and no exception was thrown, for instance because
InsertMode.insertOrIgnore was used or because the upsert clause had a
where
clause that didn't match, null
is returned instead.
Implementation
Future<D?> insertReturningOrNull(Insertable<D> entity,
{InsertMode? mode, UpsertClause<T, D>? onConflict}) async {
final ctx = createContext(entity, mode ?? InsertMode.insert,
onConflict: onConflict, returning: true);
return database.withCurrentExecutor((e) async {
final result = await e.runSelect(ctx.sql, ctx.boundVariables);
if (result.isNotEmpty) {
database.notifyUpdates(
{TableUpdate.onTable(table, kind: UpdateKind.insert)});
return table.map(result.single);
} else {
return null;
}
});
}