Refactoring, database structure changed

This commit is contained in:
2025-03-03 00:56:32 +01:00
Unverified
parent d3805ef3db
commit c603c41c0b
913 changed files with 21764 additions and 32775 deletions

View File

@@ -0,0 +1,47 @@
using WatchIt.Database.Model.Genres;
using WatchIt.Database.Model.Photos;
using WatchIt.Database.Model.Roles;
namespace WatchIt.Database.Model.Media;
public abstract class Medium
{
#region PROPERTIES
public long Id { get; set; }
public MediumType Type { get; set; }
public string Title { get; set; } = default!;
public string? OriginalTitle { get; set; }
public string? Description { get; set; }
public short? Duration { get; set; }
public DateOnly? ReleaseDate { get; set; }
public uint Version { get; set; }
#endregion
#region NAVIGATION
// Genres
public virtual IEnumerable<MediumGenre> GenresRelationshipObjects { get; set; } = new List<MediumGenre>();
public virtual IEnumerable<Genre> Genres { get; set; } = new List<Genre>();
// Picture
public virtual MediumPicture? Picture { get; set; }
// Photos
public virtual IEnumerable<Photo> Photos { get; set; } = new List<Photo>();
// View counts
public virtual IEnumerable<MediumViewCount> ViewCounts { get; set; } = new List<MediumViewCount>();
// Ratings
public virtual IEnumerable<MediumRating> Ratings { get; set; } = new List<MediumRating>();
public virtual IEnumerable<Accounts.Account> RatedBy { get; set; } = new List<Accounts.Account>();
// Roles
public virtual IEnumerable<Role> Roles { get; set; } = new List<Role>();
#endregion
}

View File

@@ -0,0 +1,26 @@
using WatchIt.Database.Model.Genres;
namespace WatchIt.Database.Model.Media;
public class MediumGenre
{
#region PROPERTIES
public long MediumId { get; set; }
public short GenreId { get; set; }
public uint Version { get; set; }
#endregion
#region NAVIGATION
// Medium
public virtual Medium Medium { get; set; } = default!;
// Genre
public virtual Genre Genre { get; set; } = default!;
#endregion
}

View File

@@ -0,0 +1,10 @@
namespace WatchIt.Database.Model.Media;
public class MediumMovie : Medium
{
#region PROPERTIES
public decimal? Budget { get; set; }
#endregion
}

View File

@@ -0,0 +1,22 @@
namespace WatchIt.Database.Model.Media;
public class MediumPicture : IImageEntity
{
#region PROPERTIES
public long MediumId { get; set; }
public byte[] Image { get; set; } = default!;
public string MimeType { get; set; } = default!;
public DateTimeOffset UploadDate { get; set; }
public uint Version { get; set; }
#endregion
#region NAVIGATION
public virtual Medium Medium { get; set; } = default!;
#endregion
}

View File

@@ -0,0 +1,26 @@
namespace WatchIt.Database.Model.Media;
public class MediumRating : IRatingEntity
{
#region PROPERTIES
public long AccountId { get; set; }
public long MediumId { get; set; }
public byte Rating { get; set; }
public DateTime Date { get; set; }
public uint Version { get; set; }
#endregion
#region NAVIGATION
// Account
public virtual Accounts.Account Account { get; set; } = default!;
// Medium
public virtual Medium Medium { get; set; } = default!;
#endregion
}

View File

@@ -0,0 +1,10 @@
namespace WatchIt.Database.Model.Media;
public class MediumSeries : Medium
{
#region PROPERTIES
public bool HasEnded { get; set; }
#endregion
}

View File

@@ -0,0 +1,7 @@
namespace WatchIt.Database.Model.Media;
public enum MediumType : byte
{
Movie = 0,
Series = 1,
}

View File

@@ -0,0 +1,23 @@
using WatchIt.Database.Model.Media;
namespace WatchIt.Database.Model.Media;
public class MediumViewCount : IViewCountEntity
{
#region PROPERTIES
public long MediumId { get; set; }
public DateOnly Date { get; set; }
public long ViewCount { get; set; }
public uint Version { get; set; }
#endregion
#region NAVIGATION
public virtual Medium Medium { get; set; } = default!;
#endregion
}