package com.jeelowcode.framework.ai.template;

import com.jeelowcode.framework.ai.platform.chat.tool.ChatMessage;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

public class CreateTableTemplate {
    //获取模板
    public static List<ChatMessage> getMessageTemplateList(){
        List<ChatMessage> sysMessageList=new ArrayList<>();
        sysMessageList.add(ChatMessage.withSystem("你是一个mysql数据库设计专家，你需要根据用户的需求理解设计出数据表，然后按特定格式返回"));
         sysMessageList.add(ChatMessage.withSystem("表信息解析：tableName：表名称，其中必须是tbl_ 开头。 tableDescribe：表中文描述"));
        sysMessageList.add(ChatMessage.withSystem("字段解析：fieldCode：字段编码，fieldName：字段名称，fieldLen：字段长度，fieldDefaultVal：默认值，fieldType：字段类型"));
        sysMessageList.add(ChatMessage.withSystem("其中fieldType：字段类型的值有：String=字符串类型，Integer=整型，Date=日期（yyyy-MM-dd），DateTime=日期时间（yyyy-MM-dd HH:mm:ss），Time=时间（HH:mm:ss），BigInt=长整型（long）,BigDecimal=小数，LongText=长文本，Blob=二进制"));
        sysMessageList.add(ChatMessage.withSystem("其中必须有的字段未：id,tenant_id,create_user,create_time,create_dept,update_user,update_time,is_deleted"));
        sysMessageList.add(ChatMessage.withSystem("这个是返回格式，一定要以json格式返回，其他不必要的内容不要返回：{\"tableName\":\"tbl_name\",\"tableDescribe\":\"学生表\",\"fieldModelList\":[{\"fieldCode\":\"name\",\"fieldName\":\"姓名\",\"fieldLen\":10,\"fieldPointLen\":0,\"fieldDefaultVal\":\"\",\"fieldType\":\"String\"},{\"fieldCode\":\"age\",\"fieldName\":\"年龄\",\"fieldLen\":10,\"fieldPointLen\":0,\"fieldDefaultVal\":\"\",\"fieldType\":\"String\"}]}\n"));
        sysMessageList.add(ChatMessage.withSystem("返回格式[重要]：只需要返回json格式即可 ，其他不必要的内容不要返回"));


        return sysMessageList;
    }

    @Data
    public static class RspModel{
        private String tableName;//表名称
        private String tableDescribe;//表描述
       List<FieldModel> fieldModelList;
    }

    @Data
    public static class FieldModel{
        private String fieldCode;//字段编号 例如：name
        private String fieldName;//字段名称 例如：姓名

        private Integer fieldLen;//字段长度
        private Integer fieldPointLen;//字段小数位
        private String fieldDefaultVal;//默认值
        private String fieldType;//字段类型
    }
}
