Files
PiperFeladat/Repository/JsonRepository.cs
2025-09-27 23:01:24 +02:00

65 lines
1.6 KiB
C#

using System.Text.Json;
using Models;
namespace Repository;
public class JsonRepository : IRepository
{
private const string _fileName = "data.json";
public User? Read()
{
if (File.Exists(_fileName))
{
try
{
string json = File.ReadAllText(_fileName);
return JsonSerializer.Deserialize<User>(json) ?? new User("fallback", "fallback", "fallback");
}
catch (JsonException e)
{
WriteToStdErr($"JSON error: {e.Message}");
}
catch (IOException e)
{
WriteToStdErr($"File I/O error: {e.Message}");
}
catch (Exception e)
{
WriteToStdErr($"Unexpected error: {e.Message}");
}
}
return null;
}
public int Write(User item)
{
try
{
string json = JsonSerializer.Serialize(item);
File.WriteAllText(_fileName, json);
return 0;
}
catch (JsonException e)
{
WriteToStdErr($"JSON error: {e.Message}");
return e.GetHashCode();
}
catch (IOException e)
{
WriteToStdErr($"File I/O error: {e.Message}");
return e.GetHashCode();
}
catch (Exception e)
{
WriteToStdErr($"Unexpected error: {e.Message}");
return e.GetHashCode();
}
}
private void WriteToStdErr(string message)
{
using var sw = new StreamWriter(Console.OpenStandardError());
sw.WriteLine(message);
}
}