From 24fae2b7ac108f979803769f30128d055b51a9cd Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Mon, 21 Jul 2025 17:12:24 -0500 Subject: [PATCH] Worked on Syncing Logic Created Syncer Generic Class to handle Monitoring, and Syncing between local database, and remote REST server. Temporarily changed Program.cs from an Avalonia UI app, to a Console App for testing and debugging purposes. --- FreeTubeSyncer/Library/DBSyncWatcher.cs | 1 + .../Models/DatabaseModels/History.cs | 5 +- .../Models/DatabaseModels/IDataModel.cs | 7 ++ .../Models/DatabaseModels/Playlist.cs | 5 +- .../Models/DatabaseModels/Profile.cs | 5 +- .../Models/DatabaseModels/SearchHistory.cs | 5 +- .../Models/DatabaseModels/Setting.cs | 5 +- FreeTubeSyncer/Program.cs | 48 ++++++++- FreeTubeSyncer/REST/RestSync.cs | 102 ------------------ FreeTubeSyncer/REST/Syncer.cs | 88 +++++++++++++++ 10 files changed, 162 insertions(+), 109 deletions(-) create mode 100644 FreeTubeSyncer/Models/DatabaseModels/IDataModel.cs delete mode 100644 FreeTubeSyncer/REST/RestSync.cs create mode 100644 FreeTubeSyncer/REST/Syncer.cs diff --git a/FreeTubeSyncer/Library/DBSyncWatcher.cs b/FreeTubeSyncer/Library/DBSyncWatcher.cs index 865885a..dc656f8 100644 --- a/FreeTubeSyncer/Library/DBSyncWatcher.cs +++ b/FreeTubeSyncer/Library/DBSyncWatcher.cs @@ -41,6 +41,7 @@ public class DBSyncWatcher var data = File.ReadAllText(e.FullPath); foreach (var line in data.Split('\n')) { + if (line == "") continue; var type = WatchFiles[dbName]; var item = JsonSerializer.Deserialize(line, type); if (item == null) continue; diff --git a/FreeTubeSyncer/Models/DatabaseModels/History.cs b/FreeTubeSyncer/Models/DatabaseModels/History.cs index be3eba3..17afb97 100644 --- a/FreeTubeSyncer/Models/DatabaseModels/History.cs +++ b/FreeTubeSyncer/Models/DatabaseModels/History.cs @@ -3,7 +3,7 @@ using System.Diagnostics.CodeAnalysis; namespace FreeTubeSyncer.Models.DatabaseModels; [SuppressMessage("ReSharper", "InconsistentNaming")] -public class History +public class History : IDataModel { public string _id { get; set; } = string.Empty; public string videoId { get; set; } = string.Empty; @@ -20,4 +20,7 @@ public class History public string type { get; set; } = string.Empty; public string lastViewedPlaylistType { get; set; } = string.Empty; public string? lastViewedPlaylistItemId { get; set; } + + public string Id() => _id; + public bool EqualId(string oid) => _id == oid; } \ No newline at end of file diff --git a/FreeTubeSyncer/Models/DatabaseModels/IDataModel.cs b/FreeTubeSyncer/Models/DatabaseModels/IDataModel.cs new file mode 100644 index 0000000..32f5341 --- /dev/null +++ b/FreeTubeSyncer/Models/DatabaseModels/IDataModel.cs @@ -0,0 +1,7 @@ +namespace FreeTubeSyncer.Models.DatabaseModels; + +public interface IDataModel +{ + string Id(); + bool EqualId(string oid); +} \ No newline at end of file diff --git a/FreeTubeSyncer/Models/DatabaseModels/Playlist.cs b/FreeTubeSyncer/Models/DatabaseModels/Playlist.cs index 4e0c6cc..e4b20ef 100644 --- a/FreeTubeSyncer/Models/DatabaseModels/Playlist.cs +++ b/FreeTubeSyncer/Models/DatabaseModels/Playlist.cs @@ -4,7 +4,7 @@ using System.Diagnostics.CodeAnalysis; namespace FreeTubeSyncer.Models.DatabaseModels; [SuppressMessage("ReSharper", "InconsistentNaming")] -public class Playlist +public class Playlist : IDataModel { public string _id { get; set; } = string.Empty; public string playlistName { get; set; } = string.Empty; @@ -12,4 +12,7 @@ public class Playlist public List