package com.kolobochki.memory;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import java.util.List;

public class GameRepository {
    private final LevelRecordDao recordDao;

    public GameRepository(LevelRecordDao recordDao) {
        this.recordDao = recordDao;
    }

    // Сохранить результат уровня
    public void saveLevelResult(int levelId, int score) {
        new Thread(() -> {
            LevelRecord existing = recordDao.getRecordForLevel(levelId);

            if (existing == null) {
                // Первая попытка на этом уровне
                recordDao.insert(new LevelRecord(levelId, score, 1));
            } else {
                // Обновляем если результат лучше
                recordDao.updateIfBetter(levelId, score);
                if (score <= existing.bestScore) {
                    // Просто увеличиваем счётчик попыток
                    existing.attemptsCount++;
                    recordDao.update(existing);
                }
            }
        }).start();
    }

    // Получить все записи
    public LiveData<List<LevelRecord>> getAllRecords() {
        MutableLiveData<List<LevelRecord>> liveData = new MutableLiveData<>();
        new Thread(() -> {
            liveData.postValue(recordDao.getAllRecords());
        }).start();
        return liveData;
    }

    // Сбросить все данные
    public void resetAllData() {
        new Thread(() -> {
            recordDao.deleteAllRecords();
        }).start();
    }
}
