
package com.pavis.admin.system.service;

import com.pavis.admin.common.model.req.CommonStatusUpdateReq;
import com.pavis.admin.system.model.entity.StorageDO;
import com.pavis.admin.system.model.query.StorageQuery;
import com.pavis.admin.system.model.req.StorageReq;
import com.pavis.admin.system.model.resp.StorageResp;
import top.continew.starter.data.mp.service.IService;
import top.continew.starter.extension.crud.service.BaseService;

/**
 * 存储业务接口
 *
 *
 * @since 2023/12/26 22:09
 */
public interface StorageService extends BaseService<StorageResp, StorageResp, StorageQuery, StorageReq>, IService<StorageDO> {

    /**
     * 修改状态
     *
     * @param req 状态信息
     * @param id  ID
     */
    void updateStatus(CommonStatusUpdateReq req, Long id);

    /**
     * 设置默认存储
     *
     * @param id ID
     */
    void setDefaultStorage(Long id);

    /**
     * 查询默认存储
     *
     * @return 存储配置
     */
    StorageDO getDefaultStorage();

    /**
     * 根据编码查询（如果编码为空，则返回默认存储）
     *
     * @param code 编码
     * @return 存储配置
     */
    StorageDO getByCode(String code);

    /**
     * 加载存储引擎
     *
     * @param storage 存储配置
     */
    void load(StorageDO storage);

    /**
     * 卸载存储引擎
     *
     * @param storage 存储配置
     */
    void unload(StorageDO storage);
}