From 725a37d9cf40cc77b9f6b668b8b0f69d0b7a3308 Mon Sep 17 00:00:00 2001 From: Mario Steele Date: Thu, 31 Jul 2025 16:13:49 -0500 Subject: [PATCH] Updated DBSyncWatcher Added new read code for reading data in from a database file. Added Logger to log when a file is created, or the file has been changed. Changed Error to log as error, instead of Console writting. --- FreeTubeSyncer/Library/DBSyncWatcher.cs | 38 ++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/FreeTubeSyncer/Library/DBSyncWatcher.cs b/FreeTubeSyncer/Library/DBSyncWatcher.cs index 2abd29f..f7a6bbf 100644 --- a/FreeTubeSyncer/Library/DBSyncWatcher.cs +++ b/FreeTubeSyncer/Library/DBSyncWatcher.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text.Json; using System.Threading; +using Serilog; namespace FreeTubeSyncer.Library; @@ -44,8 +45,15 @@ public class DBSyncWatcher if (!WatchFiles.Keys.Contains(dbName)) return; - var data = File.ReadAllText(e.FullPath); - foreach (var line in data.Split('\n')) + Log.Information("Database File Changed: {DbName}", dbName); + + var data = new List(); + + using var fh = File.OpenText(e.FullPath); + while (!fh.EndOfStream) + data.Add(fh.ReadLine() ?? string.Empty); + + foreach (var line in data) { if (line == "") continue; var type = WatchFiles[dbName]; @@ -56,11 +64,27 @@ public class DBSyncWatcher private void HandleCreated(object sender, FileSystemEventArgs e) { if (e.ChangeType != WatcherChangeTypes.Created) return; - var dbName = Path.GetFileName(e.FullPath); - if (!WatchFiles.Keys.Contains(dbName)) return; - var data = File.ReadAllText(e.FullPath); - foreach (var line in data.Split('\n')) + + while (Locked) { + Thread.Sleep(100); + } + + var dbName = Path.GetFileName(e.FullPath); + + if (!WatchFiles.Keys.Contains(dbName)) return; + + Log.Information("Database File Created: {DbName}", dbName); + + var data = new List(); + using var fh = File.OpenText(e.FullPath); + + while (!fh.EndOfStream) + data.Add(fh.ReadLine() ?? string.Empty); + + foreach (var line in data) + { + if (line == "") continue; var type = WatchFiles[dbName]; OnDatabaseChange?.Invoke(dbName, line); } @@ -68,6 +92,6 @@ public class DBSyncWatcher private void HandleError(object sender, ErrorEventArgs e) { - Console.WriteLine("Error: {0}\n{1}", e.GetException().Message, e.GetException().StackTrace); + Log.Error("Error: {Message}\n{StackTrace}", e.GetException().Message, e.GetException().StackTrace); } } \ No newline at end of file