Skip to content

Commit 9f76c98

Browse files
fix
1 parent b4c3696 commit 9f76c98

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

src/Ydb.Sdk/src/Ado/YdbDataSource.cs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/YdbTransactionTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Data;
22
using Xunit;
33
using Ydb.Sdk.Ado.Tests.Utils;
4-
using Ydb.Sdk.Ado.Transaction;
54

65
namespace Ydb.Sdk.Ado.Tests;
76

0 commit comments

Comments
 (0)