package com.ycwl.basic.puzzle.service;

import com.ycwl.basic.puzzle.dto.PuzzleFillRuleDTO;
import com.ycwl.basic.puzzle.dto.PuzzleFillRuleSaveRequest;

import java.util.List;

/**
 * 拼图填充规则服务接口
 */
public interface IPuzzleFillRuleService {

    /**
     * 创建规则(主+明细)
     *
     * @param request 保存请求
     * @return 规则ID
     */
    Long create(PuzzleFillRuleSaveRequest request);

    /**
     * 更新规则(主+明细)
     *
     * @param request 保存请求
     * @return 是否成功
     */
    Boolean update(PuzzleFillRuleSaveRequest request);

    /**
     * 删除规则(级联删除明细)
     *
     * @param id 规则ID
     * @return 是否成功
     */
    Boolean delete(Long id);

    /**
     * 查询单条规则(含明细)
     *
     * @param id 规则ID
     * @return 规则DTO
     */
    PuzzleFillRuleDTO getById(Long id);

    /**
     * 查询模板的所有规则(含明细)
     *
     * @param templateId 模板ID
     * @return 规则列表
     */
    List<PuzzleFillRuleDTO> listByTemplateId(Long templateId);

    /**
     * 启用/禁用规则
     *
     * @param id 规则ID
     * @param enabled 是否启用
     * @return 是否成功
     */
    Boolean toggleEnabled(Long id, Integer enabled);
}
