package com.ycwl.basic.puzzle.mapper;

import com.ycwl.basic.puzzle.entity.PuzzleElementEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 拼图元素Mapper接口
 *
 * @author Claude
 * @since 2025-01-17
 */
@Mapper
public interface PuzzleElementMapper {

    /**
     * 根据ID查询元素
     */
    PuzzleElementEntity getById(@Param("id") Long id);

    /**
     * 根据模板ID查询元素列表（按z-index排序）
     */
    List<PuzzleElementEntity> getByTemplateId(@Param("templateId") Long templateId);

    /**
     * 根据模板ID和元素Key查询元素
     */
    PuzzleElementEntity getByTemplateIdAndKey(@Param("templateId") Long templateId,
                                              @Param("elementKey") String elementKey);

    /**
     * 插入元素
     */
    int insert(PuzzleElementEntity entity);

    /**
     * 批量插入元素
     */
    int batchInsert(@Param("list") List<PuzzleElementEntity> list);

    /**
     * 更新元素
     */
    int update(PuzzleElementEntity entity);

    /**
     * 删除元素（逻辑删除）
     */
    int deleteById(@Param("id") Long id);

    /**
     * 根据模板ID删除所有元素（逻辑删除）
     */
    int deleteByTemplateId(@Param("templateId") Long templateId);
}
