@@ -174,6 +174,24 @@ IRetryPolicy retryPolicy
174174 await func ( ydbConnection ) ;
175175 } ) ;
176176
177+ public Task < TResult > ExecuteAsync < TResult > (
178+ Func < YdbConnection , Task < TResult > > func ,
179+ YdbRetryPolicyConfig retryPolicyConfig
180+ ) => GetExecutor ( retryPolicyConfig ) . ExecuteAsync ( async ct =>
181+ {
182+ await using var ydbConnection = await OpenConnectionAsync ( ct ) ;
183+ return await func ( ydbConnection ) ;
184+ } ) ;
185+
186+ public Task < TResult > ExecuteAsync < TResult > (
187+ Func < YdbConnection , Task < TResult > > func ,
188+ IRetryPolicy retryPolicy
189+ ) => new YdbRetryPolicyExecutor ( retryPolicy ) . ExecuteAsync ( async ct =>
190+ {
191+ await using var ydbConnection = await OpenConnectionAsync ( ct ) ;
192+ return await func ( ydbConnection ) ;
193+ } ) ;
194+
177195 public Task ExecuteAsync (
178196 Func < YdbConnection , CancellationToken , Task > func ,
179197 YdbRetryPolicyConfig retryPolicyConfig ,
@@ -262,6 +280,31 @@ public Task<TResult> ExecuteInTransactionAsync<TResult>(
262280 return result ;
263281 } , cancellationToken ) ;
264282
283+ public Task ExecuteInTransactionAsync (
284+ Func < YdbConnection , Task > func ,
285+ YdbRetryPolicyConfig retryPolicyConfig ,
286+ TransactionMode transactionMode = TransactionMode . SerializableRw
287+ ) => GetExecutor ( retryPolicyConfig ) . ExecuteAsync ( async cancellationToken =>
288+ {
289+ await using var ydbConnection = await OpenConnectionAsync ( cancellationToken ) ;
290+ await using var transaction = ydbConnection . BeginTransaction ( transactionMode ) ;
291+ await func ( ydbConnection ) ;
292+ await transaction . CommitAsync ( cancellationToken ) ;
293+ } ) ;
294+
295+ public Task < TResult > ExecuteInTransactionAsync < TResult > (
296+ Func < YdbConnection , Task < TResult > > func ,
297+ YdbRetryPolicyConfig retryPolicyConfig ,
298+ TransactionMode transactionMode = TransactionMode . SerializableRw
299+ ) => GetExecutor ( retryPolicyConfig ) . ExecuteAsync ( async cancellationToken =>
300+ {
301+ await using var ydbConnection = await OpenConnectionAsync ( cancellationToken ) ;
302+ await using var transaction = ydbConnection . BeginTransaction ( transactionMode ) ;
303+ var result = await func ( ydbConnection ) ;
304+ await transaction . CommitAsync ( cancellationToken ) ;
305+ return result ;
306+ } ) ;
307+
265308 public Task ExecuteInTransactionAsync (
266309 Func < YdbConnection , CancellationToken , Task > func ,
267310 YdbRetryPolicyConfig retryPolicyConfig ,
@@ -289,6 +332,31 @@ public Task<TResult> ExecuteInTransactionAsync<TResult>(
289332 return result ;
290333 } , cancellationToken ) ;
291334
335+ public Task ExecuteInTransactionAsync (
336+ Func < YdbConnection , Task > func ,
337+ IRetryPolicy retryPolicy ,
338+ TransactionMode transactionMode = TransactionMode . SerializableRw
339+ ) => new YdbRetryPolicyExecutor ( retryPolicy ) . ExecuteAsync ( async ct =>
340+ {
341+ await using var ydbConnection = await OpenConnectionAsync ( ct ) ;
342+ await using var transaction = ydbConnection . BeginTransaction ( transactionMode ) ;
343+ await func ( ydbConnection ) ;
344+ await transaction . CommitAsync ( ct ) ;
345+ } ) ;
346+
347+ public Task < TResult > ExecuteInTransactionAsync < TResult > (
348+ Func < YdbConnection , Task < TResult > > func ,
349+ IRetryPolicy retryPolicy ,
350+ TransactionMode transactionMode = TransactionMode . SerializableRw
351+ ) => new YdbRetryPolicyExecutor ( retryPolicy ) . ExecuteAsync ( async cancellationToken =>
352+ {
353+ await using var ydbConnection = await OpenConnectionAsync ( cancellationToken ) ;
354+ await using var transaction = ydbConnection . BeginTransaction ( transactionMode ) ;
355+ var result = await func ( ydbConnection ) ;
356+ await transaction . CommitAsync ( cancellationToken ) ;
357+ return result ;
358+ } ) ;
359+
292360 public Task ExecuteInTransactionAsync (
293361 Func < YdbConnection , CancellationToken , Task > func ,
294362 IRetryPolicy retryPolicy ,
0 commit comments