mirror of https://github.com/ppy/osu
58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
// 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 System.Collections.Generic;
|
|
using JetBrains.Annotations;
|
|
using osu.Game.Beatmaps;
|
|
using osu.Game.Database;
|
|
using Realms;
|
|
|
|
namespace osu.Game.Collections
|
|
{
|
|
/// <summary>
|
|
/// A collection of beatmaps grouped by a name.
|
|
/// </summary>
|
|
public class BeatmapCollection : RealmObject, IHasGuidPrimaryKey
|
|
{
|
|
[PrimaryKey]
|
|
public Guid ID { get; set; }
|
|
|
|
/// <summary>
|
|
/// The collection's name.
|
|
/// </summary>
|
|
public string Name { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// The <see cref="BeatmapInfo.MD5Hash"/>es of beatmaps contained by the collection.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// We store as hashes rather than references to <see cref="BeatmapInfo"/>s to allow collections to maintain
|
|
/// references to beatmaps even if they are removed. This helps with cases like importing collections before
|
|
/// importing the beatmaps they contain, or when sharing collections between users.
|
|
///
|
|
/// This can probably change in the future as we build the system up.
|
|
/// </remarks>
|
|
public IList<string> BeatmapMD5Hashes { get; } = null!;
|
|
|
|
/// <summary>
|
|
/// The date when this collection was last modified.
|
|
/// </summary>
|
|
public DateTimeOffset LastModified { get; set; }
|
|
|
|
public BeatmapCollection(string? name = null, IList<string>? beatmapMD5Hashes = null)
|
|
{
|
|
ID = Guid.NewGuid();
|
|
Name = name ?? string.Empty;
|
|
BeatmapMD5Hashes = beatmapMD5Hashes ?? new List<string>();
|
|
|
|
LastModified = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
[UsedImplicitly]
|
|
private BeatmapCollection()
|
|
{
|
|
}
|
|
}
|
|
}
|