|
|
@@ -1,80 +0,0 @@
|
|
|
-import { NextResponse } from 'next/server';
|
|
|
-import mysql from 'mysql2/promise';
|
|
|
-
|
|
|
-// 创建全局的 MySQL 连接池
|
|
|
-const pool = mysql.createPool({
|
|
|
- connectionLimit: 100,
|
|
|
- host: '60.204.184.98', // 服务器地址
|
|
|
- port: 33308,
|
|
|
- user: 'chat',
|
|
|
- password: 'DZzx6ACMhinTtTtS', // 密码
|
|
|
- database: 'chat',
|
|
|
-})
|
|
|
-
|
|
|
-interface Request {
|
|
|
- id: string;
|
|
|
- messages: {
|
|
|
- id: string;
|
|
|
- date: string;
|
|
|
- role: "system" | "user" | "assistant";
|
|
|
- content: string;
|
|
|
- }[];
|
|
|
-}
|
|
|
-
|
|
|
-// 插入数据
|
|
|
-export async function POST(req: any) {
|
|
|
- try {
|
|
|
- // 从连接池中获取连接
|
|
|
- const connection = await pool.getConnection()
|
|
|
- const data: Request = await req.json();
|
|
|
- const id = data.id;
|
|
|
- const messages = data.messages;
|
|
|
-
|
|
|
- const [rows, fields] = await connection.query('SELECT * FROM dialog where id = ?', [id]);
|
|
|
-
|
|
|
- if ((rows as any).length === 0) {
|
|
|
- // 执行 MySQL 添加头表
|
|
|
- await connection.execute('INSERT INTO dialog (id, create_time) VALUES (?,?)', [id, new Date])
|
|
|
- }
|
|
|
-
|
|
|
- messages.forEach(async function (message) {
|
|
|
- const detailId = message.id;
|
|
|
- const role = message.role;
|
|
|
- const createDate = message.date;
|
|
|
- const content = message.content;
|
|
|
- const [detailRows, fields] = await connection.query('SELECT * FROM dialog_detail where id = ?', [detailId]);
|
|
|
- if ((detailRows as any).length === 0) {
|
|
|
- // 执行 MySQL 添加明细表
|
|
|
- await connection.execute('INSERT INTO dialog_detail (id,dialog_id,type,content,create_by, create_time) VALUES (?, ?, ?,?,?,?)', [detailId, id, role, content, role, createDate])
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 释放连接回连接池
|
|
|
- connection.release()
|
|
|
-
|
|
|
- return NextResponse.json({ message: 'success', data: {} }, { status: 200 })
|
|
|
- } catch (e) {
|
|
|
- console.error('Error:', e)
|
|
|
- return NextResponse.json({ message: 'error' }, { status: 500 })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// 查询数据
|
|
|
-export async function GET() {
|
|
|
- try {
|
|
|
- // 从连接池中获取连接
|
|
|
- const connection = await pool.getConnection()
|
|
|
-
|
|
|
- // 执行 MySQL 查询
|
|
|
- const [rows, fields] = await connection.query('SELECT he.id,he.dialog_name,de.id did,de.dialog_id,de.type,de.content,de.create_time ' +
|
|
|
- 'FROM dialog he left join dialog_detail de on he.id = de.dialog_id order by he.create_time desc, he.id , de.create_time, type desc')
|
|
|
-
|
|
|
- // 释放连接回连接池
|
|
|
- connection.release()
|
|
|
-
|
|
|
- return NextResponse.json({ message: 'success', data: rows }, { status: 200 })
|
|
|
- } catch (e) {
|
|
|
- console.error('Error:', e)
|
|
|
- return NextResponse.json({ message: 'error' }, { status: 500 })
|
|
|
- }
|
|
|
-}
|