logged<R> method
Times run, publishes a QueryEvent, and converts driver errors into
QueryException carrying the SQL and bindings.
Implementation
Future<R> logged<R>(
String sql,
List<Object?> bindings,
FutureOr<R> Function() run,
) async {
final watch = Stopwatch()..start();
try {
return await run();
} on DatabaseException {
rethrow;
} catch (e) {
throw wrapError(e, sql, bindings);
} finally {
final event = QueryEvent(sql, bindings, watch.elapsed);
_log?.add(event);
for (final l in _listeners) {
l(event);
}
}
}