diff --git a/Manager.Data/Manager.Data.csproj b/Manager.Data/Manager.Data.csproj index 1d58c45..3b2f466 100644 --- a/Manager.Data/Manager.Data.csproj +++ b/Manager.Data/Manager.Data.csproj @@ -17,7 +17,6 @@ - diff --git a/Manager.Data/Models/DateTimeBase.cs b/Manager.Data/Models/DateTimeBase.cs new file mode 100644 index 0000000..ff02e2b --- /dev/null +++ b/Manager.Data/Models/DateTimeBase.cs @@ -0,0 +1,7 @@ +namespace Manager.Data.Models; + +public abstract class DateTimeBase +{ + public DateTime CreatedAtUtc { get; set; } = DateTime.UtcNow; + public DateTime LastModifiedUtc { get; set; } = DateTime.UtcNow; +} \ No newline at end of file diff --git a/Manager.Data/Models/LibraryContext/CaptionEntity.cs b/Manager.Data/Models/LibraryContext/CaptionEntity.cs new file mode 100644 index 0000000..b0e5c99 --- /dev/null +++ b/Manager.Data/Models/LibraryContext/CaptionEntity.cs @@ -0,0 +1,9 @@ +namespace Manager.Data.Models.LibraryContext; + +public class CaptionEntity +{ + public required string MediaId { get; set; } + public required string Name { get; set; } + public required string CaptionPath { get; set; } + public string? LanguageCode { get; set; } +} \ No newline at end of file diff --git a/Manager.Data/Models/LibraryContext/ChannelEntity.cs b/Manager.Data/Models/LibraryContext/ChannelEntity.cs new file mode 100644 index 0000000..29ec5d4 --- /dev/null +++ b/Manager.Data/Models/LibraryContext/ChannelEntity.cs @@ -0,0 +1,15 @@ +namespace Manager.Data.Models.LibraryContext; + +public class ChannelEntity +{ + public required string Id { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public DateTime JoinedDate { get; set; } + public long Subscribers { get; set; } + public long TotalVideos { get; set; } + public long TotalViews { get; set; } + + public DateTime AddedDate { get; set; } + public DateTime ModifiedDate { get; set; } +} \ No newline at end of file diff --git a/Manager.Data/Models/LibraryContext/ClientAccountEntity.cs b/Manager.Data/Models/LibraryContext/ClientAccountEntity.cs new file mode 100644 index 0000000..5853b2c --- /dev/null +++ b/Manager.Data/Models/LibraryContext/ClientAccountEntity.cs @@ -0,0 +1,9 @@ +namespace Manager.Data.Models.LibraryContext; + +public class ClientAccountEntity : DateTimeBase +{ + public Guid Id { get; set; } + public string Name { get; set; } = ""; + public List Playlists { get; set; } = []; + public List HttpCookies { get; set; } = []; +} \ No newline at end of file diff --git a/Manager.Data/Models/LibraryContext/HttpCookieEntity.cs b/Manager.Data/Models/LibraryContext/HttpCookieEntity.cs new file mode 100644 index 0000000..7134ebd --- /dev/null +++ b/Manager.Data/Models/LibraryContext/HttpCookieEntity.cs @@ -0,0 +1,15 @@ +namespace Manager.Data.Models.LibraryContext; + +public class HttpCookieEntity : DateTimeBase +{ + public required string Name { get; set; } + public string? Value { get; set; } + public string? Domain { get; set; } + public string? Path { get; set; } + public DateTimeOffset? ExpiresUtc { get; set; } + public bool Secure { get; set; } + public bool HttpOnly { get; set; } + public string? SameSite { get; set; } + + public required string ClientId { get; set; } +} diff --git a/Manager.Data/Models/LibraryContext/MediaEntity.cs b/Manager.Data/Models/LibraryContext/MediaEntity.cs new file mode 100644 index 0000000..141d426 --- /dev/null +++ b/Manager.Data/Models/LibraryContext/MediaEntity.cs @@ -0,0 +1,33 @@ +namespace Manager.Data.Models.LibraryContext; + +public class MediaEntity : DateTimeBase +{ + public required string Id { get; set; } + public string? Title { get; set; } + public string? Description { get; set; } + public DateTime UploadDateUtc { get; set; } + public required string ChannelId { get; set; } + public List Formats { get; set; } = []; + public List Captions { get; set; } = []; + + public MediaState State { get; set; } = MediaState.Online; + public bool IsDownloaded { get; set; } + public MediaProcessState ProcessState { get; set; } = MediaProcessState.ToDownload; +} + +public enum MediaState +{ + Online, + Offline, + Limited, + Removed +} + +public enum MediaProcessState +{ + ToDownload, + Downloaded, + ToRemove, + Removed, + Failed +} diff --git a/Manager.Data/Models/LibraryContext/MediaFormatEntity.cs b/Manager.Data/Models/LibraryContext/MediaFormatEntity.cs new file mode 100644 index 0000000..2c0d293 --- /dev/null +++ b/Manager.Data/Models/LibraryContext/MediaFormatEntity.cs @@ -0,0 +1,36 @@ +namespace Manager.Data.Models.LibraryContext; + +public class MediaFormatEntity +{ + public required string MediaId { get; set; } + public required string MediaPath { get; set; } + public VideoQuality VideoQuality { get; set; } = VideoQuality.None; + public bool IsAdaptive { get; set; } + public string? MimeType { get; set; } + public long Bitrate { get; set; } + public long AverageBitrate { get; set; } + public long LastModifiedUnixEpoch { get; set; } + public long ContentLengthBytes { get; set; } + public long ApproxDurationMs { get; set; } + public int Width { get; set; } + public int Height { get; set; } + public double Framerate { get; set; } + public string? QualityLabel { get; set; } + public int AudioChannels { get; set; } + public string? AudioSampleRate { get; set; } + public double LoudnessDb { get; set; } +} + +public enum VideoQuality +{ + P4320 = 4320, + P2160 = 2160, + P1440 = 1440, + P1080 = 1080, + P720 = 720, + P480 = 480, + P360 = 360, + P240 = 240, + P144 = 144, + None = 0 +} \ No newline at end of file diff --git a/Manager.Data/Models/LibraryContext/PlaylistEntity.cs b/Manager.Data/Models/LibraryContext/PlaylistEntity.cs new file mode 100644 index 0000000..622878e --- /dev/null +++ b/Manager.Data/Models/LibraryContext/PlaylistEntity.cs @@ -0,0 +1,9 @@ +namespace Manager.Data.Models.LibraryContext; + +public class PlaylistEntity : DateTimeBase +{ + public required string Id { get; set; } + public required string Name { get; set; } + public string? Description { get; set; } + public required string ChannelId { get; set; } +} \ No newline at end of file