diff --git a/osu.Game/Beatmaps/BeatmapStore.cs b/osu.Game/Beatmaps/BeatmapStore.cs
index 3322a4c236..6248dcc359 100644
--- a/osu.Game/Beatmaps/BeatmapStore.cs
+++ b/osu.Game/Beatmaps/BeatmapStore.cs
@@ -25,21 +25,6 @@ namespace osu.Game.Beatmaps
{
}
- protected override void Prepare(bool reset = false)
- {
- if (reset)
- {
- var context = GetContext();
-
- // https://stackoverflow.com/a/10450893
- context.Database.ExecuteSqlCommand("DELETE FROM BeatmapMetadata");
- context.Database.ExecuteSqlCommand("DELETE FROM BeatmapDifficulty");
- context.Database.ExecuteSqlCommand("DELETE FROM BeatmapSetInfo");
- context.Database.ExecuteSqlCommand("DELETE FROM BeatmapSetFileInfo");
- context.Database.ExecuteSqlCommand("DELETE FROM BeatmapInfo");
- }
- }
-
///
/// Add a to the database.
///
@@ -151,6 +136,18 @@ namespace osu.Game.Beatmaps
context.SaveChanges();
}
+ public override void Reset()
+ {
+ var context = GetContext();
+
+ // https://stackoverflow.com/a/10450893
+ context.Database.ExecuteSqlCommand("DELETE FROM BeatmapMetadata");
+ context.Database.ExecuteSqlCommand("DELETE FROM BeatmapDifficulty");
+ context.Database.ExecuteSqlCommand("DELETE FROM BeatmapSetInfo");
+ context.Database.ExecuteSqlCommand("DELETE FROM BeatmapSetFileInfo");
+ context.Database.ExecuteSqlCommand("DELETE FROM BeatmapInfo");
+ }
+
public IEnumerable BeatmapSets => GetContext().BeatmapSetInfo
.Include(s => s.Metadata)
.Include(s => s.Beatmaps).ThenInclude(s => s.Ruleset)
diff --git a/osu.Game/Database/DatabaseBackedStore.cs b/osu.Game/Database/DatabaseBackedStore.cs
index 68f412eee6..f46c388ba6 100644
--- a/osu.Game/Database/DatabaseBackedStore.cs
+++ b/osu.Game/Database/DatabaseBackedStore.cs
@@ -3,7 +3,6 @@
using System;
using System.Threading;
-using osu.Framework.Logging;
using osu.Framework.Platform;
namespace osu.Game.Database
@@ -32,16 +31,6 @@ namespace osu.Game.Database
queryContext = new ThreadLocal(CreateContext);
Storage = storage;
-
- try
- {
- Prepare();
- }
- catch (Exception e)
- {
- Logger.Error(e, $@"Failed to initialise the {GetType()}! Trying again with a clean database...");
- Prepare(true);
- }
}
///
@@ -51,14 +40,9 @@ namespace osu.Game.Database
{
}
- ///
- /// Prepare this database for use. Tables should be created here.
- ///
- protected abstract void Prepare(bool reset = false);
-
///
/// Reset this database to a default state. Undo all changes to database and storage backings.
///
- public void Reset() => Prepare(true);
+ public abstract void Reset();
}
}
diff --git a/osu.Game/IO/FileStore.cs b/osu.Game/IO/FileStore.cs
index b69916e565..9f63151ed1 100644
--- a/osu.Game/IO/FileStore.cs
+++ b/osu.Game/IO/FileStore.cs
@@ -27,17 +27,6 @@ namespace osu.Game.IO
Store = new StorageBackedResourceStore(Storage);
}
- protected override void Prepare(bool reset = false)
- {
- if (reset)
- {
- if (Storage.ExistsDirectory(string.Empty))
- Storage.DeleteDirectory(string.Empty);
-
- GetContext().Database.ExecuteSqlCommand("DELETE FROM FileInfo");
- }
- }
-
public FileInfo Add(Stream data, bool reference = true)
{
var context = GetContext();
@@ -114,5 +103,13 @@ namespace osu.Game.IO
context.SaveChanges();
}
+
+ public override void Reset()
+ {
+ if (Storage.ExistsDirectory(string.Empty))
+ Storage.DeleteDirectory(string.Empty);
+
+ GetContext().Database.ExecuteSqlCommand("DELETE FROM FileInfo");
+ }
}
}
diff --git a/osu.Game/Input/KeyBindingStore.cs b/osu.Game/Input/KeyBindingStore.cs
index 1e1b1d74d4..ea99f84de9 100644
--- a/osu.Game/Input/KeyBindingStore.cs
+++ b/osu.Game/Input/KeyBindingStore.cs
@@ -30,12 +30,6 @@ namespace osu.Game.Input
public void Register(KeyBindingInputManager manager) => insertDefaults(manager.DefaultKeyBindings);
- protected override void Prepare(bool reset = false)
- {
- if (reset)
- GetContext().Database.ExecuteSqlCommand("DELETE FROM KeyBinding");
- }
-
private void insertDefaults(IEnumerable defaults, int? rulesetId = null, int? variant = null)
{
var context = GetContext();
@@ -83,5 +77,10 @@ namespace osu.Game.Input
KeyBindingChanged?.Invoke();
}
+
+ public override void Reset()
+ {
+ GetContext().Database.ExecuteSqlCommand("DELETE FROM KeyBinding");
+ }
}
}
diff --git a/osu.Game/Rulesets/RulesetStore.cs b/osu.Game/Rulesets/RulesetStore.cs
index 7d982eb39e..958642f9aa 100644
--- a/osu.Game/Rulesets/RulesetStore.cs
+++ b/osu.Game/Rulesets/RulesetStore.cs
@@ -29,6 +29,7 @@ namespace osu.Game.Rulesets
public RulesetStore(Func factory)
: base(factory)
{
+ AddMissingRulesets();
}
///
@@ -47,15 +48,10 @@ namespace osu.Game.Rulesets
private const string ruleset_library_prefix = "osu.Game.Rulesets";
- protected override void Prepare(bool reset = false)
+ protected void AddMissingRulesets()
{
var context = GetContext();
- if (reset)
- {
- context.Database.ExecuteSqlCommand("DELETE FROM RulesetInfo");
- }
-
var instances = loaded_assemblies.Values.Select(r => (Ruleset)Activator.CreateInstance(r, new RulesetInfo())).ToList();
//add all legacy modes in correct order
@@ -123,5 +119,10 @@ namespace osu.Game.Rulesets
InstantiationInfo = ruleset.GetType().AssemblyQualifiedName,
ID = ruleset.LegacyID
};
+
+ public override void Reset()
+ {
+ GetContext().Database.ExecuteSqlCommand("DELETE FROM RulesetInfo");
+ }
}
}
diff --git a/osu.Game/Rulesets/Scoring/ScoreStore.cs b/osu.Game/Rulesets/Scoring/ScoreStore.cs
index 67a8e5372e..b971161f88 100644
--- a/osu.Game/Rulesets/Scoring/ScoreStore.cs
+++ b/osu.Game/Rulesets/Scoring/ScoreStore.cs
@@ -144,8 +144,9 @@ namespace osu.Game.Rulesets.Scoring
return new Replay { Frames = frames };
}
- protected override void Prepare(bool reset = false)
+ public override void Reset()
{
+ throw new NotImplementedException();
}
}
}