1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 20:47:28 +08:00

Use realm support for Guid

This commit is contained in:
Dean Herbert 2021-01-19 18:22:23 +09:00
parent 15db0e97d7
commit 68f2e7f61a
5 changed files with 15 additions and 15 deletions

View File

@ -2,7 +2,6 @@
// See the LICENCE file in the repository root for full licence text.
using System;
using System.ComponentModel.DataAnnotations.Schema;
using Newtonsoft.Json;
using Realms;
@ -11,16 +10,7 @@ namespace osu.Game.Database
public interface IHasGuidPrimaryKey
{
[JsonIgnore]
[Ignored]
public Guid Guid
{
get => new Guid(ID);
set => ID = value.ToString();
}
[JsonIgnore]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[PrimaryKey]
string ID { get; set; }
public Guid ID { get; set; }
}
}

View File

@ -7,7 +7,9 @@ using osu.Framework.Graphics;
using osu.Framework.Logging;
using osu.Framework.Platform;
using osu.Framework.Statistics;
using osu.Game.Input.Bindings;
using Realms;
using Realms.Schema;
namespace osu.Game.Database
{
@ -17,7 +19,7 @@ namespace osu.Game.Database
private const string database_name = @"client";
private const int schema_version = 5;
private const int schema_version = 6;
/// <summary>
/// Lock object which is held for the duration of a write operation (via <see cref="GetForWrite"/>).
@ -93,6 +95,13 @@ namespace osu.Game.Database
private void onMigration(Migration migration, ulong lastSchemaVersion)
{
switch (lastSchemaVersion)
{
case 5:
// let's keep things simple. changing the type of the primary key is a bit involved.
migration.NewRealm.RemoveAll<RealmKeyBinding>();
break;
}
}
protected override void Dispose(bool isDisposing)

View File

@ -1,6 +1,7 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Input.Bindings;
using osu.Game.Database;
using Realms;
@ -11,7 +12,7 @@ namespace osu.Game.Input.Bindings
public class RealmKeyBinding : RealmObject, IHasGuidPrimaryKey, IKeyBinding
{
[PrimaryKey]
public string ID { get; set; }
public Guid ID { get; set; }
public int? RulesetID { get; set; }

View File

@ -74,7 +74,7 @@ namespace osu.Game.Input
// insert any defaults which are missing.
usage.Realm.Add(new RealmKeyBinding
{
ID = Guid.NewGuid().ToString(),
ID = Guid.NewGuid(),
KeyCombinationString = k.KeyCombination.ToString(),
ActionInt = (int)k.Action,
RulesetID = rulesetId,

View File

@ -341,7 +341,7 @@ namespace osu.Game
{
usage.Realm.Add(new RealmKeyBinding
{
ID = Guid.NewGuid().ToString(),
ID = Guid.NewGuid(),
KeyCombinationString = dkb.KeyCombination.ToString(),
ActionInt = (int)dkb.Action,
RulesetID = dkb.RulesetID,