From a77c00160131ec9ed6dedd31373a8264d0cce38c Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Tue, 5 Dec 2023 14:31:01 -0700 Subject: [PATCH] adding last saved course to try to reduces excessive file writes --- Management.Test/Markdown/FileStorageTests.cs | 12 ++++++------ Management.Web/Shared/InitializeNewCourse.razor | 2 +- Management/Features/Configuration/CoursePlanner.cs | 8 ++++++-- Management/Services/Files/FileStorageManager.cs | 4 ++-- Management/Services/Files/SaveMarkdownCourse.cs | 3 ++- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Management.Test/Markdown/FileStorageTests.cs b/Management.Test/Markdown/FileStorageTests.cs index 0fe39f8..07b0e32 100644 --- a/Management.Test/Markdown/FileStorageTests.cs +++ b/Management.Test/Markdown/FileStorageTests.cs @@ -53,7 +53,7 @@ public class FileStorageTests Modules = [] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); @@ -76,7 +76,7 @@ public class FileStorageTests Modules = [] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); @@ -99,7 +99,7 @@ public class FileStorageTests ] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); @@ -134,7 +134,7 @@ public class FileStorageTests ] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); @@ -174,7 +174,7 @@ public class FileStorageTests ] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); @@ -235,7 +235,7 @@ public class FileStorageTests ] }; - await fileManager.SaveCourseAsync(testCourse); + await fileManager.SaveCourseAsync(testCourse, null); var loadedCourses = await fileManager.LoadSavedMarkdownCourses(); var loadedCourse = loadedCourses.First(c => c.Settings.Name == testCourse.Settings.Name); diff --git a/Management.Web/Shared/InitializeNewCourse.razor b/Management.Web/Shared/InitializeNewCourse.razor index 5bb4982..15585b1 100644 --- a/Management.Web/Shared/InitializeNewCourse.razor +++ b/Management.Web/Shared/InitializeNewCourse.razor @@ -75,7 +75,7 @@ DaysOfWeek = days, } }; - await fileStorageManager.SaveCourseAsync(course); + await fileStorageManager.SaveCourseAsync(course, null); NewFileCreated(); } await updateCourses(); diff --git a/Management/Features/Configuration/CoursePlanner.cs b/Management/Features/Configuration/CoursePlanner.cs index 4a67c77..60a69b3 100644 --- a/Management/Features/Configuration/CoursePlanner.cs +++ b/Management/Features/Configuration/CoursePlanner.cs @@ -25,6 +25,7 @@ public class CoursePlanner private Timer? _debounceTimer; private int _debounceInterval = 1000; private LocalCourse? _localCourse { get; set; } + private LocalCourse? _lastSavedCourse { get; set; } public LocalCourse? LocalCourse { get => _localCourse; @@ -61,12 +62,15 @@ public class CoursePlanner if (LocalCourse == null) { Console.WriteLine("saving course as of debounce call time"); - await fileStorageManager.SaveCourseAsync(courseAsOfDebounce); + await fileStorageManager.SaveCourseAsync(courseAsOfDebounce, null); + _lastSavedCourse = courseAsOfDebounce; } else { Console.WriteLine("Saving latest version of file"); - await fileStorageManager.SaveCourseAsync(LocalCourse); + var courseToSave = LocalCourse; + await fileStorageManager.SaveCourseAsync(courseToSave, _lastSavedCourse); + _lastSavedCourse = courseToSave; } } diff --git a/Management/Services/Files/FileStorageManager.cs b/Management/Services/Files/FileStorageManager.cs index c9b0d8e..7c6b6a7 100644 --- a/Management/Services/Files/FileStorageManager.cs +++ b/Management/Services/Files/FileStorageManager.cs @@ -23,9 +23,9 @@ public class FileStorageManager this.logger.Log("Using storage directory: " + _basePath); } - public async Task SaveCourseAsync(LocalCourse course) + public async Task SaveCourseAsync(LocalCourse course, LocalCourse? previouslyStoredCourse) { - await _saveMarkdownCourse.Save(course); + await _saveMarkdownCourse.Save(course, previouslyStoredCourse); } diff --git a/Management/Services/Files/SaveMarkdownCourse.cs b/Management/Services/Files/SaveMarkdownCourse.cs index f97a79c..446f136 100644 --- a/Management/Services/Files/SaveMarkdownCourse.cs +++ b/Management/Services/Files/SaveMarkdownCourse.cs @@ -12,7 +12,7 @@ public class MarkdownCourseSaver _basePath = FileConfiguration.GetBasePath(); } - public async Task Save(LocalCourse course) + public async Task Save(LocalCourse course, LocalCourse? previouslyStoredCourse) { var courseDirectory = $"{_basePath}/{course.Settings.Name}"; if (!Directory.Exists(courseDirectory)) @@ -103,6 +103,7 @@ public class MarkdownCourseSaver var filePath = assignmentsDirectory + "/" + assignment.Name + ".md"; await File.WriteAllTextAsync(filePath, assignmentMarkdown); + Console.WriteLine("saving file"); } removeOldAssignments(assignmentsDirectory, module); }