Files
CliFx/CliFx.Demo/Domain/LibraryProvider.cs
Tyrrrz a62ce71424 asd
2024-09-03 02:03:50 +03:00

44 lines
1.1 KiB
C#

using System.IO;
using System.Linq;
using System.Text.Json;
namespace CliFx.Demo.Domain;
public class LibraryProvider
{
private static string StorageFilePath { get; } =
Path.Combine(Directory.GetCurrentDirectory(), "Library.json");
private void StoreLibrary(Library library)
{
var data = JsonSerializer.Serialize(library, LibraryJsonContext.Default.Library);
File.WriteAllText(StorageFilePath, data);
}
public Library GetLibrary()
{
if (!File.Exists(StorageFilePath))
return Library.Empty;
var data = File.ReadAllText(StorageFilePath);
return JsonSerializer.Deserialize(data, LibraryJsonContext.Default.Library)
?? Library.Empty;
}
public Book? TryGetBook(string title) =>
GetLibrary().Books.FirstOrDefault(b => b.Title == title);
public void AddBook(Book book)
{
var updatedLibrary = GetLibrary().WithBook(book);
StoreLibrary(updatedLibrary);
}
public void RemoveBook(Book book)
{
var updatedLibrary = GetLibrary().WithoutBook(book);
StoreLibrary(updatedLibrary);
}
}