From 63fe569afaead04c01fe7ca33891be05b72afce5 Mon Sep 17 00:00:00 2001 From: TocoToucan Date: Wed, 25 Oct 2017 14:53:20 +0300 Subject: [PATCH] Remove DatabaseBackedStore Prepare functions --- osu.Game/Beatmaps/BeatmapStore.cs | 27 +++++++++++------------- osu.Game/Database/DatabaseBackedStore.cs | 18 +--------------- osu.Game/IO/FileStore.cs | 19 +++++++---------- osu.Game/Input/KeyBindingStore.cs | 11 +++++----- osu.Game/Rulesets/RulesetStore.cs | 13 ++++++------ osu.Game/Rulesets/Scoring/ScoreStore.cs | 3 ++- 6 files changed, 35 insertions(+), 56 deletions(-) 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(); } } }