@@ -7,18 +7,17 @@ namespace Dotnet6.GraphQL4.Repositories.Abstractions.Transactions
77{
88 public class TransactionScopeExecutor < T >
99 {
10- private TransactionScopeOption _scopeOption ;
10+ private readonly Func < T > _operation ;
11+ private readonly Func < CancellationToken , Task < T > > _operationAsync ;
12+ private readonly TransactionOptions _transactionOptions = new ( ) ;
13+
1114 private TransactionScopeAsyncFlowOption _asyncFlowOption ;
12-
1315 private Func < bool > _condition ;
1416 private Func < CancellationToken , Task < bool > > _conditionAsync ;
15-
16- private readonly TransactionOptions _transactionOptions ;
17- private readonly Func < T > _operation ;
18- private readonly Func < CancellationToken , Task < T > > _operationAsync ;
17+ private TransactionScopeOption _scopeOption ;
1918
2019 public TransactionScopeExecutor ( ) { }
21-
20+
2221 public TransactionScopeExecutor ( Func < T > operation )
2322 {
2423 _operation = operation ;
@@ -52,7 +51,7 @@ public TransactionScopeExecutor<T> WithCondition(Func<bool> condition)
5251 _condition = condition ;
5352 return this ;
5453 }
55-
54+
5655 public TransactionScopeExecutor < T > WithConditionAsync ( Func < CancellationToken , Task < bool > > conditionAsync )
5756 {
5857 _conditionAsync = conditionAsync ;
@@ -68,42 +67,20 @@ public T Execute(Func<T> operation)
6867 }
6968
7069 public T Execute ( )
71- {
72- using var scope = CreateScope ( ) ;
73- var result = _operation ( ) ;
74-
75- if ( _condition ( ) )
76- scope . Complete ( ) ;
77-
78- return result ;
79- }
70+ => Execute ( _operation ) ;
71+
72+ public Task < T > ExecuteAsync ( CancellationToken cancellationToken )
73+ => ExecuteAsync ( _operationAsync , cancellationToken ) ;
8074
81- public async Task < T > ExecuteAsync ( CancellationToken cancellationToken )
82- {
83- using var scope = CreateScope ( ) ;
84- var result = await _operationAsync ( cancellationToken ) ;
85-
86- if ( await _conditionAsync ( cancellationToken ) )
87- scope . Complete ( ) ;
88-
89- return result ;
90- }
91-
9275 public async Task < T > ExecuteAsync ( Func < CancellationToken , Task < T > > operationAsync , CancellationToken cancellationToken )
9376 {
9477 using var scope = CreateScope ( ) ;
9578 var result = await operationAsync ( cancellationToken ) ;
96-
97- if ( await _conditionAsync ( cancellationToken ) )
98- scope . Complete ( ) ;
99-
79+ if ( await _conditionAsync ( cancellationToken ) ) scope . Complete ( ) ;
10080 return result ;
10181 }
10282
10383 private TransactionScope CreateScope ( )
104- => new (
105- scopeOption : _scopeOption ,
106- transactionOptions : _transactionOptions ,
107- asyncFlowOption : _asyncFlowOption ) ;
84+ => new ( _scopeOption , _transactionOptions , _asyncFlowOption ) ;
10885 }
10986}
0 commit comments