package com.wallpaper.perfectwallpaper.utils;

import android.content.Context;

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

import com.wallpaper.perfectwallpaper.room.AppDatabase;
import com.wallpaper.perfectwallpaper.room.Category;
import com.wallpaper.perfectwallpaper.room.ImageEntry;
import com.wallpaper.perfectwallpaper.room.ImageEntryDao;

import java.util.ArrayList;
import java.util.List;

public class DatabaseUtils {

    private final ImageEntryDao imageEntryDao;

    public DatabaseUtils(Context context) {
        AppDatabase db = AppDatabase.getInstance(context);
        imageEntryDao = db.imageEntryDao();
    }

    public void insertAllImages(List<Category> categoryList) {

        List<ImageEntry> imageEntryList = new ArrayList<>();

        for (Category category : categoryList) {
            imageEntryList.addAll(category.getList());
        }

        imageEntryDao.insertAll(imageEntryList);

    }

    public LiveData<List<ImageEntry>> getImageEntryList(int i) {
        if (i == 1) {
            return imageEntryDao.getImageEntriesWithRange(20, 20);
        } else if (i == 2) {
            return imageEntryDao.getImageEntriesWithRange(20, 50);
        } else if (i == 3) {
            return imageEntryDao.getRandomImageEntries();
        } else {
            return new MutableLiveData<>();
        }
    }

    public LiveData<List<ImageEntry>> getAllFavoriteList() {
        return imageEntryDao.getAllFavoriteLive();
    }

    public LiveData<List<ImageEntry>> getCategoryFirst() {
        return imageEntryDao.getFirstRecordOfEachName();
    }

    public LiveData<List<ImageEntry>> getAllCategory(String name) {
        return imageEntryDao.getAllCategoryLive(name);
    }

    public ImageEntry getImageEntry(String ImagePath) {
        return imageEntryDao.getImageEntry(ImagePath);
    }

    public LiveData<ImageEntry> getImageEntryLive(String ImagePath) {
        return imageEntryDao.getImageEntryLive(ImagePath);
    }

    public void update(ImageEntry imageEntry) {
        imageEntryDao.update(imageEntry);
    }


}
