1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-14 05:47:20 +08:00

Add helper function to get realm class names rather than hard-coding each time

This commit is contained in:
Dean Herbert 2021-11-05 17:01:00 +09:00
parent c2c567f5f5
commit 7772a97cf7

View File

@ -3,6 +3,7 @@
using System;
using System.Linq;
using System.Reflection;
using System.Threading;
using osu.Framework.Allocation;
using osu.Framework.Development;
@ -167,7 +168,7 @@ namespace osu.Game.Database
void convertOnlineIDs<T>() where T : RealmObject
{
string className = typeof(T).Name.Replace(@"Realm", string.Empty);
string className = getMappedOrOriginalName(typeof(T));
// version was not bumped when the beatmap/ruleset models were added
// therefore we must manually check for their presence to avoid throwing on the `DynamicApi` calls.
@ -208,9 +209,7 @@ namespace osu.Game.Database
case 9:
// Pretty pointless to do this as beatmaps aren't really loaded via realm yet, but oh well.
string className = nameof(RealmBeatmapMetadata).Replace(@"Realm", string.Empty);
var oldItems = migration.OldRealm.DynamicApi.All(className);
var oldItems = migration.OldRealm.DynamicApi.All(getMappedOrOriginalName(typeof(RealmBeatmapMetadata)));
var newItems = migration.NewRealm.All<RealmBeatmapMetadata>();
int itemCount = newItems.Count();
@ -285,6 +284,9 @@ namespace osu.Game.Database
});
}
// https://github.com/realm/realm-dotnet/blob/32f4ebcc88b3e80a3b254412665340cd9f3bd6b5/Realm/Realm/Extensions/ReflectionExtensions.cs#L46
private static string getMappedOrOriginalName(MemberInfo member) => member.GetCustomAttribute<MapToAttribute>()?.Mapping ?? member.Name;
private bool isDisposed;
public void Dispose()