Update all usages of CreateContext to use either Run or Write

This commit is contained in:
Dean Herbert
2022-01-21 17:08:20 +09:00
parent da0a803e6c
commit 114c9e8c1f
22 changed files with 230 additions and 250 deletions

View File

@ -73,7 +73,7 @@ namespace osu.Game.Database
int count = existingBeatmapSets.Count();
using (var realm = realmContextFactory.CreateContext())
realmContextFactory.Run(realm =>
{
Logger.Log($"Found {count} beatmaps in EF", LoggingTarget.Database);
@ -160,7 +160,7 @@ namespace osu.Game.Database
Logger.Log($"Successfully migrated {count} beatmaps to realm", LoggingTarget.Database);
}
}
});
}
private BeatmapMetadata getBestMetadata(EFBeatmapMetadata? beatmapMetadata, EFBeatmapMetadata? beatmapSetMetadata)
@ -206,7 +206,7 @@ namespace osu.Game.Database
int count = existingScores.Count();
using (var realm = realmContextFactory.CreateContext())
realmContextFactory.Run(realm =>
{
Logger.Log($"Found {count} scores in EF", LoggingTarget.Database);
@ -276,7 +276,7 @@ namespace osu.Game.Database
Logger.Log($"Successfully migrated {count} scores to realm", LoggingTarget.Database);
}
}
});
}
private void migrateSkins(OsuDbContext db)
@ -307,37 +307,39 @@ namespace osu.Game.Database
break;
}
using (var realm = realmContextFactory.CreateContext())
using (var transaction = realm.BeginWrite())
realmContextFactory.Run(realm =>
{
// only migrate data if the realm database is empty.
// note that this cannot be written as: `realm.All<SkinInfo>().All(s => s.Protected)`, because realm does not support `.All()`.
if (!realm.All<SkinInfo>().Any(s => !s.Protected))
using (var transaction = realm.BeginWrite())
{
Logger.Log($"Migrating {existingSkins.Count} skins", LoggingTarget.Database);
foreach (var skin in existingSkins)
// only migrate data if the realm database is empty.
// note that this cannot be written as: `realm.All<SkinInfo>().All(s => s.Protected)`, because realm does not support `.All()`.
if (!realm.All<SkinInfo>().Any(s => !s.Protected))
{
var realmSkin = new SkinInfo
Logger.Log($"Migrating {existingSkins.Count} skins", LoggingTarget.Database);
foreach (var skin in existingSkins)
{
Name = skin.Name,
Creator = skin.Creator,
Hash = skin.Hash,
Protected = false,
InstantiationInfo = skin.InstantiationInfo,
};
var realmSkin = new SkinInfo
{
Name = skin.Name,
Creator = skin.Creator,
Hash = skin.Hash,
Protected = false,
InstantiationInfo = skin.InstantiationInfo,
};
migrateFiles(skin, realm, realmSkin);
migrateFiles(skin, realm, realmSkin);
realm.Add(realmSkin);
realm.Add(realmSkin);
if (skin.ID == userSkinInt)
userSkinChoice.Value = realmSkin.ID.ToString();
if (skin.ID == userSkinInt)
userSkinChoice.Value = realmSkin.ID.ToString();
}
}
}
transaction.Commit();
}
transaction.Commit();
}
});
}
private static void migrateFiles<T>(IHasFiles<T> fileSource, Realm realm, IHasRealmFiles realmObject) where T : INamedFileInfo
@ -365,36 +367,38 @@ namespace osu.Game.Database
Logger.Log("Beginning settings migration to realm", LoggingTarget.Database);
ensureBackup();
using (var realm = realmContextFactory.CreateContext())
using (var transaction = realm.BeginWrite())
realmContextFactory.Run(realm =>
{
// only migrate data if the realm database is empty.
if (!realm.All<RealmRulesetSetting>().Any())
using (var transaction = realm.BeginWrite())
{
Logger.Log($"Migrating {existingSettings.Count} settings", LoggingTarget.Database);
foreach (var dkb in existingSettings)
// only migrate data if the realm database is empty.
if (!realm.All<RealmRulesetSetting>().Any())
{
if (dkb.RulesetID == null)
continue;
Logger.Log($"Migrating {existingSettings.Count} settings", LoggingTarget.Database);
string? shortName = getRulesetShortNameFromLegacyID(dkb.RulesetID.Value);
if (string.IsNullOrEmpty(shortName))
continue;
realm.Add(new RealmRulesetSetting
foreach (var dkb in existingSettings)
{
Key = dkb.Key,
Value = dkb.StringValue,
RulesetName = shortName,
Variant = dkb.Variant ?? 0,
});
}
}
if (dkb.RulesetID == null)
continue;
transaction.Commit();
}
string? shortName = getRulesetShortNameFromLegacyID(dkb.RulesetID.Value);
if (string.IsNullOrEmpty(shortName))
continue;
realm.Add(new RealmRulesetSetting
{
Key = dkb.Key,
Value = dkb.StringValue,
RulesetName = shortName,
Variant = dkb.Variant ?? 0,
});
}
}
transaction.Commit();
}
});
}
private string? getRulesetShortNameFromLegacyID(long rulesetId) =>