package com.emotion.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.emotion.common.PageResult;
import com.emotion.dto.request.LifePathCreateRequest;
import com.emotion.dto.request.LifePathPageRequest;
import com.emotion.dto.request.LifePathUpdateRequest;
import com.emotion.dto.response.LifePathResponse;
import com.emotion.entity.LifePath;

import java.util.List;

/**
 * 实现路径服务接口
 *
 * @author huazhongmin
 * @date 2025-12-22
 */
public interface LifePathService extends IService<LifePath> {

    /**
     * 分页查询当前用户的路径
     *
     * @param request 分页请求
     * @return 分页结果
     */
    PageResult<LifePathResponse> getPageByCurrentUser(LifePathPageRequest request);

    /**
     * 获取当前用户的所有路径列表
     *
     * @return 路径列表
     */
    List<LifePathResponse> getListByCurrentUser();

    /**
     * 根据剧本ID获取路径
     *
     * @param scriptId 剧本ID
     * @return 路径响应
     */
    LifePathResponse getByScriptId(String scriptId);

    /**
     * 根据ID获取路径
     *
     * @param id 路径ID
     * @return 路径响应
     */
    LifePathResponse getPathById(String id);

    /**
     * 创建路径
     *
     * @param request 创建请求
     * @return 路径响应
     */
    LifePathResponse createPath(LifePathCreateRequest request);

    /**
     * 更新路径
     *
     * @param request 更新请求
     * @return 路径响应
     */
    LifePathResponse updatePath(LifePathUpdateRequest request);

    /**
     * 删除路径
     *
     * @param id 路径ID
     * @return 是否成功
     */
    boolean deletePath(String id);

    /**
     * 根据剧本ID删除路径
     *
     * @param scriptId 剧本ID
     * @return 是否成功
     */
    boolean deleteByScriptId(String scriptId);
}
