package tech.easyflow.skill.service;

import com.mybatisflex.core.service.IService;
import tech.easyflow.skill.entity.Skill;

import java.math.BigInteger;
import java.util.Map;

/**
 * Skill 业务服务。
 */
public interface SkillService extends IService<Skill> {

    /**
     * 获取 Skill 详情。
     *
     * @param id Skill ID
     * @return Skill 详情
     */
    Skill getDetail(BigInteger id);

    /**
     * 保存 Skill 草稿。
     *
     * @param skill Skill 草稿
     * @return 保存后的 Skill
     */
    Skill saveDraft(Skill skill);

    /**
     * 更新 Skill 草稿。
     *
     * @param skill Skill 草稿
     * @return 更新后的 Skill
     */
    Skill updateDraft(Skill skill);

    /**
     * 构建发布快照。
     *
     * @param skill Skill 草稿
     * @return 发布快照
     */
    Map<String, Object> buildPublishSnapshot(Skill skill);

    /**
     * 从发布快照还原 Skill。
     *
     * @param snapshot 发布快照
     * @return Skill
     */
    Skill fromSnapshot(Map<String, Object> snapshot);

    /**
     * 删除 Skill 聚合。
     *
     * @param id Skill ID
     */
    void removeAggregate(BigInteger id);
}
