pivoting to local yaml files for state

This commit is contained in:
2023-07-18 23:02:48 -06:00
parent d691f817b7
commit 04274bd6c5
15 changed files with 343 additions and 273 deletions

View File

@@ -0,0 +1,46 @@
using LocalModels;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
public class YamlManager
{
public string CourseToYaml(LocalCourse course)
{
var serializer = new SerializerBuilder()
.Build();
var yaml = serializer.Serialize(course);
System.Console.WriteLine(yaml);
return yaml;
}
public LocalCourse ParseCourse(string rawCourse)
{
var deserializer = new DeserializerBuilder()
.Build();
var person = deserializer.Deserialize<LocalCourse>(rawCourse);
return person;
}
public async Task SaveCourse(LocalCourse course)
{
var courseString = CourseToYaml(course);
await File.WriteAllTextAsync($"../storage/{course.Name}.yml", courseString);
}
public async Task<IEnumerable<LocalCourse>> LoadSavedCourses()
{
string path = "../storage/";
if (!Directory.Exists(path))
throw new Exception("storage folder not found");
var fileNames = Directory.GetFiles(path);
var courses = await Task.WhenAll(
fileNames.Select(async n => ParseCourse(await File.ReadAllTextAsync($"../storage/{n}")))
);
return courses;
}
}