/
evsyukov.s
/
test
Обзор
Документация
Войти
/
evsyukov.s
/
test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/DicePoker.Core/Services/GamePersistenceService.cs
54 строки
2 KB
evsyukov.s
Рефакторинг сервисного слоя
02 дек 2025, 15:26
02 дек 2025, 15:26
ac93369
Код
Авторство
О чём код?
using DicePoker.Core.Data.Abstractions; using DicePoker.Core.Game; namespace DicePoker.Core.Services; /// <summary> /// Сервис для управления сохранением и загрузкой игр (бизнес-логика) /// </summary> public sealed class GamePersistenceService { private readonly IGameRepository _repository; private const string DefaultSaveKey = "save"; public GamePersistenceService(IGameRepository repository) { _repository = repository ?? throw new ArgumentNullException(nameof(repository)); } /// <summary> /// Сохраняет текущее состояние игры /// </summary> public async Task SaveGameAsync(GameState state, string? saveKey = null) { if (state == null) throw new ArgumentNullException(nameof(state)); var snapshot = GameSnapshot.FromState(state); await _repository.SaveAsync(snapshot, saveKey ?? DefaultSaveKey); } /// <summary> /// Загружает сохраненную игру /// </summary> public async Task<GameState?> LoadGameAsync(string? saveKey = null) { var snapshot = await _repository.LoadAsync(saveKey ?? DefaultSaveKey); return snapshot?.ToState(); } /// <summary> /// Проверяет наличие сохранения /// </summary> public Task<bool> HasSavedGameAsync(string? saveKey = null) { return _repository.ExistsAsync(saveKey ?? DefaultSaveKey); } /// <summary> /// Удаляет сохранение /// </summary> public Task DeleteSaveAsync(string? saveKey = null) { return _repository.DeleteAsync(saveKey ?? DefaultSaveKey); } }