mirror of
https://github.com/streetwriters/notesnook-sync-server.git
synced 2026-02-13 03:32:46 +00:00
25 lines
871 B
C#
25 lines
871 B
C#
using System.Threading;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MongoDB.Driver
|
|
{
|
|
public static class TransactionHelper
|
|
{
|
|
public static async Task StartTransaction(this IMongoClient client, Action<CancellationToken> operate, CancellationToken ct)
|
|
{
|
|
using (var session = await client.StartSessionAsync())
|
|
{
|
|
var transactionOptions = new TransactionOptions(readPreference: ReadPreference.Nearest, readConcern: ReadConcern.Local, writeConcern: WriteConcern.WMajority);
|
|
await session.WithTransactionAsync((handle, token) =>
|
|
{
|
|
return Task.Run(() =>
|
|
{
|
|
operate(token);
|
|
return true;
|
|
});
|
|
}, transactionOptions, ct);
|
|
}
|
|
}
|
|
}
|
|
} |