mirror of
https://github.com/osukey/osukey.git
synced 2025-08-02 14:17:06 +09:00
Add automatic transaction handling to realm helper methods
This commit is contained in:
@ -8,18 +8,45 @@ namespace osu.Game.Database
|
||||
{
|
||||
public static class RealmExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Perform a write operation against the provided realm instance.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This will automatically start a transaction if not already in one.
|
||||
/// </remarks>
|
||||
/// <param name="realm">The realm to operate on.</param>
|
||||
/// <param name="function">The write operation to run.</param>
|
||||
public static void Write(this Realm realm, Action<Realm> function)
|
||||
{
|
||||
using var transaction = realm.BeginWrite();
|
||||
Transaction? transaction = null;
|
||||
|
||||
if (!realm.IsInTransaction)
|
||||
transaction = realm.BeginWrite();
|
||||
|
||||
function(realm);
|
||||
transaction.Commit();
|
||||
|
||||
transaction?.Commit();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Perform a write operation against the provided realm instance.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This will automatically start a transaction if not already in one.
|
||||
/// </remarks>
|
||||
/// <param name="realm">The realm to operate on.</param>
|
||||
/// <param name="function">The write operation to run.</param>
|
||||
public static T Write<T>(this Realm realm, Func<Realm, T> function)
|
||||
{
|
||||
using var transaction = realm.BeginWrite();
|
||||
Transaction? transaction = null;
|
||||
|
||||
if (!realm.IsInTransaction)
|
||||
transaction = realm.BeginWrite();
|
||||
|
||||
var result = function(realm);
|
||||
transaction.Commit();
|
||||
|
||||
transaction?.Commit();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user