package com.bocloud.ims.interfaces.resource;

import com.alibaba.fastjson.JSONObject;
import com.bocloud.cmp.model.ServerLabelParam;
import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.GridBean;
import com.bocloud.common.model.Pager;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.Label;

import java.util.List;

public interface LabelService {

    /**
     * 查询标签列表
     *
     * @param pager
     * @param context
     * @return
     */
    BocloudResult<GridBean<Label>> list(Pager pager, RequestContext context);

    /**
     * 查看标签详情
     *
     * @param id
     * @return
     */
    BocloudResult<Label> detail(Long id);

    /**
     * 创建标签
     *
     * @param label
     * @return
     */
    BocloudResult<Label> create(Label label);

    /**
     * 更新标签
     *
     * @param label
     * @return
     */
    BocloudResult<Label> modify(Label label);

    /**
     * 删除标签
     *
     * @param id
     * @return
     */
    BocloudResult remove(Long id);
    

    /**
     * 资源标签绑定
     *
     * @param serverLabelParam
     * @return
     */
    BocloudResult createResources(ServerLabelParam serverLabelParam, RequestContext context);

    /**
     * @return void 数组格式，如果存在已经删除的标签，则在方法中已经移除
     * @Author: lxy
     * @Description: 云主机、浮动ip、硬盘对应标签校验，可能存在标签已被删除的情况，如果被删除，则此方法自动移除已被删除的标签
     * @Date 2021/9/6 14:11
     * @Param parseArray 数组格式，传入值为云主机、浮动ip、硬盘对应标签
     * @throws:
     **/
    public BocloudResult isExistsValues(List<JSONObject> parseArray);
}
