feat: add migration scripts
This commit is contained in:
46
backend/migrations/add_general_chat.sql
Normal file
46
backend/migrations/add_general_chat.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- 添加通用对话表
|
||||
-- 执行日期: 2025-10-11
|
||||
-- 用途: 支持无项目/无智能体的纯AI对话功能
|
||||
|
||||
-- 1. 创建通用对话表
|
||||
CREATE TABLE IF NOT EXISTS general_conversations (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
user_id VARCHAR(36) NOT NULL,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
model_name VARCHAR(50),
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 2. 创建通用消息表
|
||||
CREATE TABLE IF NOT EXISTS general_messages (
|
||||
id VARCHAR(36) PRIMARY KEY,
|
||||
conversation_id VARCHAR(36) NOT NULL,
|
||||
role VARCHAR(20) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
model VARCHAR(50),
|
||||
metadata JSONB,
|
||||
tokens INTEGER,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (conversation_id) REFERENCES general_conversations(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
-- 3. 创建索引
|
||||
CREATE INDEX IF NOT EXISTS idx_general_conversations_user_id ON general_conversations(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_general_conversations_created_at ON general_conversations(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_general_conversations_updated_at ON general_conversations(updated_at);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_general_messages_conversation_id ON general_messages(conversation_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_general_messages_created_at ON general_messages(created_at);
|
||||
|
||||
-- 4. 验证表已创建
|
||||
SELECT 'general_conversations表已创建' AS status
|
||||
WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'general_conversations');
|
||||
|
||||
SELECT 'general_messages表已创建' AS status
|
||||
WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'general_messages');
|
||||
|
||||
45
backend/run-migration.ps1
Normal file
45
backend/run-migration.ps1
Normal file
@@ -0,0 +1,45 @@
|
||||
# 运行数据库迁移
|
||||
# 用途: 添加general_conversations和general_messages表
|
||||
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " 执行数据库迁移: 添加通用对话表" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# 读取.env获取数据库连接信息
|
||||
$envFile = Get-Content .env
|
||||
$dbUrl = ($envFile | Select-String "DATABASE_URL").ToString().Split('=')[1].Trim()
|
||||
|
||||
Write-Host "📦 数据库URL: $($dbUrl.Substring(0, 30))..." -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
# 使用Prisma db push(开发环境最快)
|
||||
Write-Host "[1/2] 同步数据库Schema..." -ForegroundColor Green
|
||||
npx prisma db push --skip-generate
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "✅ Schema同步成功!" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "[2/2] 生成Prisma Client..." -ForegroundColor Green
|
||||
npx prisma generate
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "✅ Prisma Client生成成功!" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host " ✅ 迁移完成!请重启后端服务" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
} else {
|
||||
Write-Host "❌ Prisma Client生成失败" -ForegroundColor Red
|
||||
}
|
||||
} else {
|
||||
Write-Host "❌ Schema同步失败,请检查数据库连接" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Write-Host "💡 提示:请确保PostgreSQL服务正在运行" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "按任意键退出..."
|
||||
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
|
||||
|
||||
Reference in New Issue
Block a user