fix(database): add DELETED to conversations status CHECK constraint
用户删除历史对话时报错 conversations_status_check 违反约束, 因为 softDelete() 设置 status='DELETED' 但数据库 CHECK 约束 只允许 ACTIVE/ENDED/ARCHIVED。 修复: - 新增 migration 修改 CHECK 约束,添加 DELETED 值 - 同步更新 init.sql 以支持全新部署 生产环境需执行: database/migrations/20260207_add_deleted_status_to_conversations.sql Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ce13c8b770
commit
68ffa6b7eb
|
|
@ -0,0 +1,10 @@
|
||||||
|
-- Migration: Add 'DELETED' to conversations status CHECK constraint
|
||||||
|
-- 修复:软删除功能需要 DELETED 状态,但数据库 CHECK 约束未包含该值
|
||||||
|
-- 导致用户无法删除历史对话(QueryFailedError: conversations_status_check)
|
||||||
|
|
||||||
|
-- 删除旧约束
|
||||||
|
ALTER TABLE conversations DROP CONSTRAINT IF EXISTS conversations_status_check;
|
||||||
|
|
||||||
|
-- 添加包含 DELETED 的新约束
|
||||||
|
ALTER TABLE conversations ADD CONSTRAINT conversations_status_check
|
||||||
|
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED', 'DELETED'));
|
||||||
|
|
@ -62,9 +62,9 @@ CREATE TABLE conversations (
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||||
-- 所属用户ID
|
-- 所属用户ID
|
||||||
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
||||||
-- 对话状态: ACTIVE(进行中), ENDED(已结束), ARCHIVED(已归档)
|
-- 对话状态: ACTIVE(进行中), ENDED(已结束), ARCHIVED(已归档), DELETED(软删除)
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE'
|
status VARCHAR(20) NOT NULL DEFAULT 'ACTIVE'
|
||||||
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED')),
|
CHECK (status IN ('ACTIVE', 'ENDED', 'ARCHIVED', 'DELETED')),
|
||||||
-- 对话标题(自动生成或用户设置)
|
-- 对话标题(自动生成或用户设置)
|
||||||
title VARCHAR(255),
|
title VARCHAR(255),
|
||||||
-- 对话摘要(AI生成)
|
-- 对话摘要(AI生成)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue