package com.lingyue.graph.repository;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lingyue.graph.entity.Template;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 模板Repository
 * 
 * @author lingyue
 * @since 2026-01-14
 */
@Mapper
public interface TemplateRepository extends BaseMapper<Template> {
    
    /**
     * 根据用户ID查询模板列表
     * 
     * @param userId 用户ID
     * @return 模板列表
     */
    @Select("SELECT * FROM templates WHERE user_id = #{userId} ORDER BY create_time DESC")
    List<Template> findByUserId(@Param("userId") String userId);
    
    /**
     * 根据用户ID和状态查询模板
     * 
     * @param userId 用户ID
     * @param status 状态
     * @return 模板列表
     */
    @Select("SELECT * FROM templates WHERE user_id = #{userId} AND status = #{status} ORDER BY create_time DESC")
    List<Template> findByUserIdAndStatus(@Param("userId") String userId, @Param("status") String status);
    
    /**
     * 根据来源模板ID查询衍生模板
     * 
     * @param sourceTemplateId 来源模板ID
     * @return 模板列表
     */
    @Select("SELECT * FROM templates WHERE source_template_id = #{sourceTemplateId}")
    List<Template> findBySourceTemplateId(@Param("sourceTemplateId") String sourceTemplateId);
}
