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