public override void Execute(TContext context) { var summary = default(IResultSummary); var error = default(Exception); try { using (var session = NewSession(AccessMode.Write, context)) { using (var txc = BeginTransaction(session, context)) { summary = txc.Run("CREATE ()").Consume(); txc.Success(); } context.Bookmark = session.LastBookmark; } } catch (Exception exc) { error = exc; if (!_test.HandleWriteFailure(error, context)) { throw; } } if (error == null && summary != null) { summary.Counters.NodesCreated.Should().Be(1); context.NodeCreated(); } }
public override async Task ExecuteAsync(TContext context) { var session = NewSession(AccessMode.Write, context); await BeginTransaction(session, context) .SelectMany(txc => txc .Run("CREATE ()") .Summary() .Catch((Exception error) => !_test.HandleWriteFailure(error, context) ? txc.Rollback <IResultSummary>().Concat(Observable.Throw <IResultSummary>(error)) : txc.Rollback <IResultSummary>() ) .Concat(txc.Commit <IResultSummary>()) .Select(summary => { summary.Counters.NodesCreated.Should().Be(1); context.NodeCreated(); return(summary); }) .Finally(() => { if (session.LastBookmark != null) { context.Bookmark = session.LastBookmark; } }) ).SingleOrDefaultAsync() .CatchAndThrow(_ => session.Close <IResultSummary>()) .Concat(session.Close <IResultSummary>()); }
public override async Task ExecuteAsync(TContext context) { var summary = default(IResultSummary); var error = default(Exception); var session = NewSession(AccessMode.Write, context); try { var txc = await BeginTransaction(session, context); try { var cursor = await txc.RunAsync("CREATE ()"); summary = await cursor.SummaryAsync(); await txc.CommitAsync(); } catch { await txc.RollbackAsync(); throw; } context.Bookmark = session.LastBookmark; } catch (Exception exc) { error = exc; if (!_test.HandleWriteFailure(error, context)) { throw; } } finally { await session.CloseAsync(); } if (error == null && summary != null) { summary.Counters.NodesCreated.Should().Be(1); context.NodeCreated(); } }