diff --git a/FreeTubeSync.sln b/FreeTubeSync.sln
index 1e234e7..29c73d0 100644
--- a/FreeTubeSync.sln
+++ b/FreeTubeSync.sln
@@ -7,7 +7,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
compose.yaml = compose.yaml
Dockerfile = Dockerfile
README.md = README.md
- data\FreeTubeSync.db = data\FreeTubeSync.db
EndProjectSection
EndProject
Global
diff --git a/FreeTubeSync.sln.DotSettings.user b/FreeTubeSync.sln.DotSettings.user
index ead3520..6675bb5 100644
--- a/FreeTubeSync.sln.DotSettings.user
+++ b/FreeTubeSync.sln.DotSettings.user
@@ -1,6 +1,3 @@
ForceIncluded
- ForceIncluded
- ForceIncluded
- ForceIncluded
- ForceIncluded
\ No newline at end of file
+ ForceIncluded
\ No newline at end of file
diff --git a/FreeTubeSync/Database/MapData.cs b/FreeTubeSync/Database/MapData.cs
index ef8b010..f6dc079 100644
--- a/FreeTubeSync/Database/MapData.cs
+++ b/FreeTubeSync/Database/MapData.cs
@@ -4,7 +4,7 @@ namespace FreeTubeSync.Database;
public static class MapData
{
- public static void MapFrom(this object obj2, object obj1)
+ public static void MapFrom(this object obj1, object obj2)
{
var props = new Dictionary();
var t1Type = obj1.GetType();
@@ -18,12 +18,8 @@ public static class MapData
properties = t2Type.GetProperties();
foreach (var property in properties)
{
- if (props.ContainsKey(property.Name))
- {
- var value = props[property.Name];
- if (value is string || value is not IEnumerable)
- property.SetValue(obj2, value);
- }
+ if (props[property.Name] is not IEnumerable)
+ property.SetValue(obj2, props[property.Name]);
}
}
diff --git a/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.Designer.cs b/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.Designer.cs
deleted file mode 100644
index 418a0d5..0000000
--- a/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.Designer.cs
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-using System.Text.Json;
-using FreeTubeSync.Database;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace FreeTubeSync.Migrations
-{
- [DbContext(typeof(DataContext))]
- [Migration("20250724061008_ChangeSettingToJsonElement")]
- partial class ChangeSettingToJsonElement
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder.HasAnnotation("ProductVersion", "9.0.7");
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.History", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("author")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("authorId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("description")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("isLive")
- .HasColumnType("INTEGER");
-
- b.Property("lastViewedPlaylistItemId")
- .HasColumnType("TEXT");
-
- b.Property("lastViewedPlaylistType")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("lengthSeconds")
- .HasColumnType("INTEGER");
-
- b.Property("published")
- .HasColumnType("INTEGER");
-
- b.Property("timeWatched")
- .HasColumnType("INTEGER");
-
- b.Property("title")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("type")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("videoId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("viewCount")
- .HasColumnType("INTEGER");
-
- b.Property("watchProgress")
- .HasColumnType("REAL");
-
- b.HasKey("_id");
-
- b.ToTable("Histories");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("createdAt")
- .HasColumnType("INTEGER");
-
- b.Property("lastUpdatedAt")
- .HasColumnType("INTEGER");
-
- b.Property("playlistName")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("protected")
- .HasColumnType("INTEGER");
-
- b.HasKey("_id");
-
- b.ToTable("Playlists");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("bgColor")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("name")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("textColor")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("_id");
-
- b.ToTable("Profiles");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.SearchHistory", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("lastUpdatedAt")
- .HasColumnType("INTEGER");
-
- b.HasKey("_id");
-
- b.ToTable("SearchHistories");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Setting", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("value")
- .HasColumnType("TEXT");
-
- b.HasKey("_id");
-
- b.ToTable("Settings");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
- {
- b.Property("id")
- .HasColumnType("TEXT");
-
- b.Property("Profile_id")
- .HasColumnType("TEXT");
-
- b.Property("name")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("thumbnail")
- .HasColumnType("TEXT");
-
- b.HasKey("id");
-
- b.HasIndex("Profile_id");
-
- b.ToTable("Subscriptions");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
- {
- b.Property("playlistItemId")
- .HasColumnType("TEXT");
-
- b.Property("Playlist_id")
- .HasColumnType("TEXT");
-
- b.Property("author")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("authorId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("lengthSeconds")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("pubished")
- .HasColumnType("INTEGER");
-
- b.Property("timeAdded")
- .HasColumnType("INTEGER");
-
- b.Property("title")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("type")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("videoId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("playlistItemId");
-
- b.HasIndex("Playlist_id");
-
- b.ToTable("Videos");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
- {
- b.HasOne("FreeTubeSync.Model.Database.Profile", null)
- .WithMany("subscriptions")
- .HasForeignKey("Profile_id");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
- {
- b.HasOne("FreeTubeSync.Model.Database.Playlist", null)
- .WithMany("videos")
- .HasForeignKey("Playlist_id");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
- {
- b.Navigation("videos");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
- {
- b.Navigation("subscriptions");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.cs b/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.cs
deleted file mode 100644
index 7a033a2..0000000
--- a/FreeTubeSync/Migrations/20250724061008_ChangeSettingToJsonElement.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace FreeTubeSync.Migrations
-{
- ///
- public partial class ChangeSettingToJsonElement : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.Designer.cs b/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.Designer.cs
deleted file mode 100644
index 4e70266..0000000
--- a/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.Designer.cs
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-using FreeTubeSync.Database;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace FreeTubeSync.Migrations
-{
- [DbContext(typeof(DataContext))]
- [Migration("20250724074916_FinalizeSettingStringValue")]
- partial class FinalizeSettingStringValue
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder.HasAnnotation("ProductVersion", "9.0.7");
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.History", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("author")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("authorId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("description")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("isLive")
- .HasColumnType("INTEGER");
-
- b.Property("lastViewedPlaylistItemId")
- .HasColumnType("TEXT");
-
- b.Property("lastViewedPlaylistType")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("lengthSeconds")
- .HasColumnType("INTEGER");
-
- b.Property("published")
- .HasColumnType("INTEGER");
-
- b.Property("timeWatched")
- .HasColumnType("INTEGER");
-
- b.Property("title")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("type")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("videoId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("viewCount")
- .HasColumnType("INTEGER");
-
- b.Property("watchProgress")
- .HasColumnType("REAL");
-
- b.HasKey("_id");
-
- b.ToTable("Histories");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("createdAt")
- .HasColumnType("INTEGER");
-
- b.Property("lastUpdatedAt")
- .HasColumnType("INTEGER");
-
- b.Property("playlistName")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("protected")
- .HasColumnType("INTEGER");
-
- b.HasKey("_id");
-
- b.ToTable("Playlists");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("bgColor")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("name")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("textColor")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("_id");
-
- b.ToTable("Profiles");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.SearchHistory", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("lastUpdatedAt")
- .HasColumnType("INTEGER");
-
- b.HasKey("_id");
-
- b.ToTable("SearchHistories");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Setting", b =>
- {
- b.Property("_id")
- .HasColumnType("TEXT");
-
- b.Property("value")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("_id");
-
- b.ToTable("Settings");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
- {
- b.Property("id")
- .HasColumnType("TEXT");
-
- b.Property("Profile_id")
- .HasColumnType("TEXT");
-
- b.Property("name")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("thumbnail")
- .HasColumnType("TEXT");
-
- b.HasKey("id");
-
- b.HasIndex("Profile_id");
-
- b.ToTable("Subscriptions");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
- {
- b.Property("playlistItemId")
- .HasColumnType("TEXT");
-
- b.Property("Playlist_id")
- .HasColumnType("TEXT");
-
- b.Property("author")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("authorId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("lengthSeconds")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("pubished")
- .HasColumnType("INTEGER");
-
- b.Property("timeAdded")
- .HasColumnType("INTEGER");
-
- b.Property("title")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("type")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.Property("videoId")
- .IsRequired()
- .HasColumnType("TEXT");
-
- b.HasKey("playlistItemId");
-
- b.HasIndex("Playlist_id");
-
- b.ToTable("Videos");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Subscription", b =>
- {
- b.HasOne("FreeTubeSync.Model.Database.Profile", null)
- .WithMany("subscriptions")
- .HasForeignKey("Profile_id");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Video", b =>
- {
- b.HasOne("FreeTubeSync.Model.Database.Playlist", null)
- .WithMany("videos")
- .HasForeignKey("Playlist_id");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Playlist", b =>
- {
- b.Navigation("videos");
- });
-
- modelBuilder.Entity("FreeTubeSync.Model.Database.Profile", b =>
- {
- b.Navigation("subscriptions");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.cs b/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.cs
deleted file mode 100644
index 307c6e6..0000000
--- a/FreeTubeSync/Migrations/20250724074916_FinalizeSettingStringValue.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace FreeTubeSync.Migrations
-{
- ///
- public partial class FinalizeSettingStringValue : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/FreeTubeSync/Model/Json/SettingJson.cs b/FreeTubeSync/Model/Json/SettingJson.cs
index a9d8f9a..2971293 100644
--- a/FreeTubeSync/Model/Json/SettingJson.cs
+++ b/FreeTubeSync/Model/Json/SettingJson.cs
@@ -6,5 +6,5 @@ namespace FreeTubeSync.Model.Json;
public class SettingJson
{
public string _id { get; set; } = string.Empty;
- public string value { get; set; }
+ public object value { get; set; }
}
\ No newline at end of file