From 364dc9f7092d2f4b957e59ece8b56953a5d4f379 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Fri, 7 Oct 2016 13:50:34 -0400 Subject: [PATCH] Refactor database to reuse existing types --- .../Beatmaps/IO/LegacyFilesystemReader.cs | 2 +- .../Beatmap.cs => Beatmaps/BaseDifficulty.cs} | 13 ++++------ osu.Game/Beatmaps/Beatmap.cs | 24 +++++++++++++------ .../{Metadata.cs => BeatmapMetadata.cs} | 6 ++++- osu.Game/Beatmaps/BeatmapSet.cs | 16 ++++++++----- osu.Game/Beatmaps/IO/ArchiveReader.cs | 2 +- osu.Game/Beatmaps/IO/OszArchiveReader.cs | 2 +- osu.Game/Database/BeatmapDatabase.cs | 3 ++- osu.Game/Database/BeatmapMetadata.cs | 23 ------------------ osu.Game/Database/BeatmapSet.cs | 14 ----------- osu.Game/osu.Game.csproj | 6 ++--- 11 files changed, 44 insertions(+), 67 deletions(-) rename osu.Game/{Database/Beatmap.cs => Beatmaps/BaseDifficulty.cs} (63%) rename osu.Game/Beatmaps/{Metadata.cs => BeatmapMetadata.cs} (84%) delete mode 100644 osu.Game/Database/BeatmapMetadata.cs delete mode 100644 osu.Game/Database/BeatmapSet.cs diff --git a/osu.Desktop/Beatmaps/IO/LegacyFilesystemReader.cs b/osu.Desktop/Beatmaps/IO/LegacyFilesystemReader.cs index 31c7b4c365..fa960b876c 100644 --- a/osu.Desktop/Beatmaps/IO/LegacyFilesystemReader.cs +++ b/osu.Desktop/Beatmaps/IO/LegacyFilesystemReader.cs @@ -45,7 +45,7 @@ namespace osu.Desktop.Beatmaps.IO return File.OpenRead(Path.Combine(BasePath, name)); } - public override Metadata ReadMetadata() + public override BeatmapMetadata ReadMetadata() { return FirstMap.Metadata; } } diff --git a/osu.Game/Database/Beatmap.cs b/osu.Game/Beatmaps/BaseDifficulty.cs similarity index 63% rename from osu.Game/Database/Beatmap.cs rename to osu.Game/Beatmaps/BaseDifficulty.cs index e60d455a16..62acf07695 100644 --- a/osu.Game/Database/Beatmap.cs +++ b/osu.Game/Beatmaps/BaseDifficulty.cs @@ -1,16 +1,12 @@ using System; using SQLite; -namespace osu.Game.Database +namespace osu.Game.Beatmaps { - public class Beatmap + public class BaseDifficulty { - [PrimaryKey] + [PrimaryKey, AutoIncrement] public int ID { get; set; } - [NotNull, Indexed] - public int BeatmapSetID { get; set; } - [Indexed] - public int BeatmapMetadataID { get; set; } public float DrainRate { get; set; } public float CircleSize { get; set; } public float OverallDifficulty { get; set; } @@ -18,4 +14,5 @@ namespace osu.Game.Database public float SliderMultiplier { get; set; } public float SliderTickRate { get; set; } } -} \ No newline at end of file +} + diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs index 762d06eb17..b6ec2855ba 100644 --- a/osu.Game/Beatmaps/Beatmap.cs +++ b/osu.Game/Beatmaps/Beatmap.cs @@ -5,17 +5,27 @@ using System.Collections.Generic; using osu.Game.Beatmaps.Objects; using osu.Game.Beatmaps.Timing; using osu.Game.Users; +using SQLite; namespace osu.Game.Beatmaps { public class Beatmap { - public int BeatmapID; - - public List HitObjects; - public List ControlPoints; - - public string Version; - public Metadata Metadata; + [PrimaryKey] + public int BeatmapID { get; set; } + [NotNull, Indexed] + public int BeatmapSetID { get; set; } + [Indexed] + public int BeatmapMetadataID { get; set; } + public int BaseDifficultyID { get; set; } + [Ignore] + public List HitObjects { get; set; } + [Ignore] + public List ControlPoints { get; set; } + [Ignore] + public BeatmapMetadata Metadata { get; set; } + [Ignore] + public BaseDifficulty BaseDifficulty { get; set; } + public string Version { get; set; } } } \ No newline at end of file diff --git a/osu.Game/Beatmaps/Metadata.cs b/osu.Game/Beatmaps/BeatmapMetadata.cs similarity index 84% rename from osu.Game/Beatmaps/Metadata.cs rename to osu.Game/Beatmaps/BeatmapMetadata.cs index c23573e232..a1808a80e6 100644 --- a/osu.Game/Beatmaps/Metadata.cs +++ b/osu.Game/Beatmaps/BeatmapMetadata.cs @@ -2,11 +2,15 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using osu.Game.GameModes.Play; +using SQLite; namespace osu.Game.Beatmaps { - public class Metadata + public class BeatmapMetadata { + [PrimaryKey] + public int ID { get; set; } + public int BeatmapSetID { get; set; } public string Title { get; set; } public string TitleUnicode { get; set; } diff --git a/osu.Game/Beatmaps/BeatmapSet.cs b/osu.Game/Beatmaps/BeatmapSet.cs index a110f094ea..5f1be7f9b0 100644 --- a/osu.Game/Beatmaps/BeatmapSet.cs +++ b/osu.Game/Beatmaps/BeatmapSet.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using osu.Game.Users; +using SQLite; namespace osu.Game.Beatmaps { @@ -11,12 +12,15 @@ namespace osu.Game.Beatmaps /// public class BeatmapSet { - public int BeatmapSetID; - + [PrimaryKey] + public int BeatmapSetID { get; set; } + [NotNull, Indexed] + public int BeatmapMetadataID { get; set; } + [Ignore] public List Beatmaps { get; protected set; } - - public Metadata Metadata; - - public User Creator; + [Ignore] + public BeatmapMetadata Metadata { get; set; } + [Ignore] + public User Creator { get; set; } } } diff --git a/osu.Game/Beatmaps/IO/ArchiveReader.cs b/osu.Game/Beatmaps/IO/ArchiveReader.cs index a009f89b1f..0731b35bb0 100644 --- a/osu.Game/Beatmaps/IO/ArchiveReader.cs +++ b/osu.Game/Beatmaps/IO/ArchiveReader.cs @@ -33,7 +33,7 @@ namespace osu.Game.Beatmaps.IO /// /// Reads the beatmap metadata from this archive. /// - public abstract Metadata ReadMetadata(); + public abstract BeatmapMetadata ReadMetadata(); /// /// Gets a list of beatmap file names. /// diff --git a/osu.Game/Beatmaps/IO/OszArchiveReader.cs b/osu.Game/Beatmaps/IO/OszArchiveReader.cs index 036ce07128..c7213cbedc 100644 --- a/osu.Game/Beatmaps/IO/OszArchiveReader.cs +++ b/osu.Game/Beatmaps/IO/OszArchiveReader.cs @@ -53,7 +53,7 @@ namespace osu.Game.Beatmaps.IO return entry.OpenReader(); } - public override Metadata ReadMetadata() + public override BeatmapMetadata ReadMetadata() { return FirstMap.Metadata; } diff --git a/osu.Game/Database/BeatmapDatabase.cs b/osu.Game/Database/BeatmapDatabase.cs index df3eba7b1f..5b087388a7 100644 --- a/osu.Game/Database/BeatmapDatabase.cs +++ b/osu.Game/Database/BeatmapDatabase.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using osu.Framework.OS; +using osu.Game.Beatmaps; using osu.Game.Beatmaps.Formats; using osu.Game.Beatmaps.IO; using SQLite; @@ -52,7 +53,7 @@ namespace osu.Game.Database var beatmap = decoder.Decode(stream); maps.Add(new Beatmap { - ID = beatmap.BeatmapID, + BeatmapID = beatmap.BeatmapID, BeatmapSetID = metadata.BeatmapSetID, // TODO: Import more things }); diff --git a/osu.Game/Database/BeatmapMetadata.cs b/osu.Game/Database/BeatmapMetadata.cs deleted file mode 100644 index 4073bb7d57..0000000000 --- a/osu.Game/Database/BeatmapMetadata.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using osu.Game.GameModes.Play; -using SQLite; - -namespace osu.Game.Database -{ - public class BeatmapMetadata - { - [PrimaryKey] - public int ID { get; set; } - public string Title { get; set; } - public string TitleUnicode { get; set; } - public string Artist { get; set; } - public string ArtistUnicode { get; set; } - public string Author { get; set; } - public string Source { get; set; } - public string Tags { get; set; } - public PlayMode Mode { get; set; } - public int PreviewTime { get; set; } - public string AudioFile { get; set; } - public string BackgroundFile { get; set; } - } -} \ No newline at end of file diff --git a/osu.Game/Database/BeatmapSet.cs b/osu.Game/Database/BeatmapSet.cs deleted file mode 100644 index 9222be7107..0000000000 --- a/osu.Game/Database/BeatmapSet.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using SQLite; - -namespace osu.Game.Database -{ - public class BeatmapSet - { - [PrimaryKey] - public int BeatmapSetID { get; set; } - [NotNull, Indexed] - public int BeatmapMetadataID { get; set; } - } -} - diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index e50e0847d8..8775034271 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -62,7 +62,7 @@ - + @@ -149,13 +149,11 @@ - - - +