simpleTransaction method
Implementation
Future<dynamic> simpleTransaction(
Future<dynamic> Function(QueryExecutor) f) async {
logger?.fine('Entering simpleTransaction');
if (connection is! PostgreSQLConnection) {
return await f(this);
}
final conn = connection as PostgreSQLConnection;
var returnValue;
var txResult = await conn.transaction((ctx) async {
try {
logger?.fine('Entering transaction');
var tx =
PostgreSqlExecutor(connectionInfo, logger: logger, connection: ctx);
returnValue = await f(tx);
} catch (e) {
ctx.cancelTransaction(reason: e.toString());
rethrow;
} finally {
logger?.fine('Exiting transaction');
}
});
if (txResult is PostgreSQLRollback) {
/*if (txResult.reason == null) {
throw StateError('The transaction was cancelled.');
} else {*/
throw StateError(
'The transaction was cancelled with reason "${txResult.reason}".');
//}
} else {
return returnValue;
}
}