Update hashing method in line with master

This commit is contained in:
Dean Herbert 2018-11-30 17:36:06 +09:00
parent be37f3c328
commit 66e43e6ed9
4 changed files with 9 additions and 29 deletions

View File

@ -121,10 +121,8 @@ public void TestImportStatistics()
} }
} }
private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score, string guidOverride = null) private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score)
{ {
score.MD5Hash = guidOverride ?? Guid.NewGuid().ToString();
var beatmapManager = osu.Dependencies.Get<BeatmapManager>(); var beatmapManager = osu.Dependencies.Get<BeatmapManager>();
score.Beatmap = beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps.First(); score.Beatmap = beatmapManager.GetAllUsableBeatmapSets().First().Beatmaps.First();
@ -133,9 +131,7 @@ private ScoreInfo loadIntoOsu(OsuGameBase osu, ScoreInfo score, string guidOverr
var scoreManager = osu.Dependencies.Get<ScoreManager>(); var scoreManager = osu.Dependencies.Get<ScoreManager>();
scoreManager.Import(score); scoreManager.Import(score);
var imported = scoreManager.Query(s => s.MD5Hash == score.MD5Hash); return scoreManager.GetAllUsableScores().First();
return imported;
} }
private string createTemporaryBeatmap() private string createTemporaryBeatmap()

View File

@ -46,7 +46,9 @@ public Score Parse(Stream stream)
score.ScoreInfo.Beatmap = currentBeatmap.BeatmapInfo; score.ScoreInfo.Beatmap = currentBeatmap.BeatmapInfo;
score.ScoreInfo.User = score.Replay.User = new User { Username = sr.ReadString() }; score.ScoreInfo.User = score.Replay.User = new User { Username = sr.ReadString() };
score.ScoreInfo.MD5Hash = sr.ReadString();
// MD5Hash
sr.ReadString();
var count300 = (int)sr.ReadUInt16(); var count300 = (int)sr.ReadUInt16();
var count100 = (int)sr.ReadUInt16(); var count100 = (int)sr.ReadUInt16();

View File

@ -110,14 +110,10 @@ public string StatisticsJson
} }
} }
/// <summary>
/// MD5 is kept for legacy support.
/// </summary>
[JsonProperty("file_md5")]
public string MD5Hash { get; set; }
public List<ScoreFileInfo> Files { get; set; } public List<ScoreFileInfo> Files { get; set; }
public string Hash { get; set; }
public bool DeletePending { get; set; } public bool DeletePending { get; set; }
[Serializable] [Serializable]

View File

@ -20,20 +20,18 @@ public class ScoreManager : ArchiveModelManager<ScoreInfo, ScoreFileInfo>
{ {
public override string[] HandledExtensions => new[] { ".osr" }; public override string[] HandledExtensions => new[] { ".osr" };
protected override string[] HashableFileTypes => new[] { ".osr" };
protected override string ImportFromStablePath => "Replays"; protected override string ImportFromStablePath => "Replays";
private readonly RulesetStore rulesets; private readonly RulesetStore rulesets;
private readonly BeatmapManager beatmaps; private readonly BeatmapManager beatmaps;
private readonly ScoreStore scores;
public ScoreManager(RulesetStore rulesets, BeatmapManager beatmaps, Storage storage, IDatabaseContextFactory contextFactory, IIpcHost importHost = null) public ScoreManager(RulesetStore rulesets, BeatmapManager beatmaps, Storage storage, IDatabaseContextFactory contextFactory, IIpcHost importHost = null)
: base(storage, contextFactory, new ScoreStore(contextFactory, storage), importHost) : base(storage, contextFactory, new ScoreStore(contextFactory, storage), importHost)
{ {
this.rulesets = rulesets; this.rulesets = rulesets;
this.beatmaps = beatmaps; this.beatmaps = beatmaps;
scores = (ScoreStore)ModelStore;
} }
protected override ScoreInfo CreateModel(ArchiveReader archive) protected override ScoreInfo CreateModel(ArchiveReader archive)
@ -55,18 +53,6 @@ protected override ScoreInfo CreateModel(ArchiveReader archive)
} }
} }
protected override ScoreInfo CheckForExisting(ScoreInfo model)
{
var existingHashMatch = scores.ConsumableItems.FirstOrDefault(s => s.MD5Hash != null && s.MD5Hash == model.MD5Hash);
if (existingHashMatch != null)
{
Undelete(existingHashMatch);
return existingHashMatch;
}
return null;
}
public Score GetScore(ScoreInfo score) => new LegacyDatabasedScore(score, rulesets, beatmaps, Files.Store); public Score GetScore(ScoreInfo score) => new LegacyDatabasedScore(score, rulesets, beatmaps, Files.Store);
public List<ScoreInfo> GetAllUsableScores() => ModelStore.ConsumableItems.Where(s => !s.DeletePending).ToList(); public List<ScoreInfo> GetAllUsableScores() => ModelStore.ConsumableItems.Where(s => !s.DeletePending).ToList();