package com.YuyeTech.TPlat.common.service;


import com.YuyeTech.TPlat.common.pojo.PageInfo;
import com.YuyeTech.TPlat.common.pojo.Result;
import com.YuyeTech.TPlat.enums.RedisType;

import java.util.List;

/**
 * 通用Service
 *
 * @param <V> 实体类Vo
 * @param <E> 实体类
 * @param <T> id主键类型
 */
public interface CommonService<V, E,T> {

    Result<PageInfo<V>> page(V entityVo);

    PageInfo<V> pageByClass(V entityVo, Class entityModelClass);

    Result<List<V>> list(V entityVo);


    Result<V> get(T id);

    V getVo(T id);

    Result<V> save(V entityVo);

    V saveReturnVo(V entityVo);

    Result<T> delete(T id);

    //更新当前列表数据到缓存
    List<E> updateListToCache(String key);
    //添加缓存列表操作
    List<E> getListFromCache(String key);

    //注解操作

    /**
     * 获取对应的列表缓存
     * @return
     */
    List<E> getListFromCache();

    /**
     * 更新对应的列表缓存
     * @return
     */
    List<E> updateListToCache();


    V saveAndCache(V entityVo);

    T deleteAndCache(T id);

}
