package com.easyagents.skill.repository;

import com.easyagents.skill.model.Skill;
import com.easyagents.skill.model.SkillDescriptor;

import java.util.List;
import java.util.Optional;

/**
 * Skill 聚合存储接口。
 */
public interface SkillRepository {

    /**
     * 保存 Skill。
     *
     * @param skill Skill 聚合
     */
    void save(Skill skill);

    /**
     * 获取完整 Skill。
     *
     * @param skillId Skill ID
     * @return Skill 聚合
     */
    Optional<Skill> get(String skillId);

    /**
     * 获取 Skill 描述。
     *
     * @param skillId Skill ID
     * @return Skill 描述
     */
    Optional<SkillDescriptor> getDescriptor(String skillId);

    /**
     * 列出 Skill 描述。
     *
     * @return Skill 描述列表
     */
    List<SkillDescriptor> listDescriptors();

    /**
     * 删除 Skill。
     *
     * @param skillId Skill ID
     */
    void delete(String skillId);

    /**
     * 判断 Skill 是否存在。
     *
     * @param skillId Skill ID
     * @return 存在时为 true
     */
    boolean exists(String skillId);
}
