package cn.reghao.tnb.file.app.rpc;

import cn.reghao.file.api.dto.StoreConfigInfo;
import cn.reghao.file.api.iface.StoreConfigService;
import cn.reghao.tnb.file.app.db.mapper.StoreConfigMapper;
import cn.reghao.tnb.file.app.model.constant.OssType;
import cn.reghao.tnb.file.app.model.po.StoreConfig;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author reghao
 * @date 2024-11-01 10:02:43
 */
@DubboService
@Service
public class StoreConfigServiceImpl implements StoreConfigService {
    private final StoreConfigMapper storeConfigMapper;

    public StoreConfigServiceImpl(StoreConfigMapper storeConfigMapper) {
        this.storeConfigMapper = storeConfigMapper;
    }

    @Override
    public List<StoreConfigInfo> getStoreConfigs() {
        List<StoreConfig> list = storeConfigMapper.findAll();
        return list.stream().map(this::getStoreConfigInfo).collect(Collectors.toList());
    }

    private StoreConfigInfo getStoreConfigInfo(StoreConfig storeConfig) {
        int ossType = storeConfig.getOssType();
        String ossTypeStr = OssType.getDescByCode(ossType);
        String endpoint = storeConfig.getEndpoint();
        String accessKeyId = storeConfig.getAccessKeyId();
        String accessKeySecret = storeConfig.getAccessKeySecret();
        String region = storeConfig.getRegion();
        String bucketName = storeConfig.getBucketName();
        String roleArn = storeConfig.getRoleArn();
        return new StoreConfigInfo(ossTypeStr, endpoint, accessKeyId, accessKeySecret, region, bucketName, roleArn);
    }
}
