package com.bocloud.cmp.provider.blob;

import com.bocloud.cmp.model.azure.account.StorageAccountModel;
import com.bocloud.cmp.model.azure.blob.ContainerModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

import java.util.Map;

/**
 * 对象存储容器访问接口
 *
 * @author wangyu
 * @version 5.0.0-SNAPSHOT
 * @since 2021/2/1
 */
public interface ContainerProvider extends SuperProvider {


    /**
     * 查询容器列表
     *
     * @param account 存储账户
     * @return
     */
    default BocloudResult list(StorageAccountModel account) {
        return null;
    }


    /**
     * 创建容器
     *
     * @param model
     * @param account
     * @return
     */
    default BocloudResult create(ContainerModel model, StorageAccountModel account) {
        return null;
    }

    /**
     * 删除容器
     *
     * @param name    容器数据
     * @param account 存储账号
     * @return
     */
    default BocloudResult delete(String name, StorageAccountModel account) {
        return null;
    }

    /**
     * 更新容器元数据
     *
     * @param name     容器名称
     * @param metadata 元数据
     * @param account  存储账号
     * @return
     */
    default BocloudResult updateMetadata(String name, Map<String, String> metadata, StorageAccountModel account) {
        return null;
    }

    /**
     * 更新公共访问级别
     *
     * @param name             容器名称
     * @param publicAccessType 公共访问级别
     * @param account          存储账号
     * @return
     */
    default BocloudResult updatePublicAccess(String name, String publicAccessType, StorageAccountModel account) {
        return null;
    }

}
