package com.bbitcn.sericulture.base

import com.blankj.utilcode.util.GsonUtils
import com.example.iot_controlhost.utils.MMKVUtil
import com.google.gson.Gson
import java.lang.reflect.Type

/**
 *
 * @Description 临时数据库（单实体，列表请用@BaseListTempDataBase）
 * @Author DuanKaiji
 * @CreateTime 2024年08月06日 11:39:31
 */
abstract class BaseTempDataBase<T> {

    abstract fun getKey(): String
    abstract fun defaultData(): T
    abstract fun getType(): Type

    fun init(value :T) {
        MMKVUtil.put(getKey(), Gson().toJson(value))
    }

    fun getData(): T {
        val json = MMKVUtil.get(getKey(), GsonUtils.toJson(defaultData()))
        return Gson().fromJson(json, getType())
    }

}