/
rumina-v
/
asp-services
Обзор
Документация
Войти
/
rumina-v
/
asp-services
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/App/Storage/FileDatabase.cs
59 строк
1 KB
Viktoria Rumina
Add solution files
04 июн 2026, 12:13
04 июн 2026, 12:13
0d8ce54
Код
Авторство
О чём код?
using System.Text.Json; using App.Abstractions.Storage; namespace App.Storage; public class FileDatabase : IFileDatabase { private readonly string _filePath; private readonly object _lock = new(); public FileDatabase() { _filePath = Path.Combine(AppContext.BaseDirectory, "fake-db.json"); if (!File.Exists(_filePath)) { var emptyState = new DatabaseState(); SaveStateInternal(emptyState); } } public DatabaseState GetState() { lock (_lock) { var json = File.ReadAllText(_filePath); if (string.IsNullOrWhiteSpace(json)) { return new DatabaseState(); } var state = JsonSerializer.Deserialize<DatabaseState>(json, GetJsonOptions()); return state ?? new DatabaseState(); } } public void SaveState(DatabaseState state) { lock (_lock) { SaveStateInternal(state); } } private void SaveStateInternal(DatabaseState state) { var json = JsonSerializer.Serialize(state, GetJsonOptions()); File.WriteAllText(_filePath, json); } private static JsonSerializerOptions GetJsonOptions() { return new JsonSerializerOptions { WriteIndented = true }; } }