adding last saved course to try to reduces excessive file writes

This commit is contained in:
2023-12-05 14:31:01 -07:00
parent 466aa747b6
commit a77c001601
5 changed files with 17 additions and 12 deletions

View File

@@ -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);

View File

@@ -75,7 +75,7 @@
DaysOfWeek = days,
}
};
await fileStorageManager.SaveCourseAsync(course);
await fileStorageManager.SaveCourseAsync(course, null);
NewFileCreated();
}
await updateCourses();

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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);
}