35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
-- AI Assistant plugin migration 0002: chat folders + attachments
|
|
|
|
CREATE TABLE IF NOT EXISTS ai_chat_folders (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(255) NOT NULL,
|
|
parent_id UUID REFERENCES ai_chat_folders(id) ON DELETE CASCADE,
|
|
user_id UUID NOT NULL,
|
|
tenant_id UUID NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_folders_user ON ai_chat_folders(user_id);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_folders_tenant ON ai_chat_folders(tenant_id);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_folders_parent ON ai_chat_folders(parent_id);
|
|
|
|
ALTER TABLE ai_chat_sessions ADD COLUMN IF NOT EXISTS folder_id UUID REFERENCES ai_chat_folders(id) ON DELETE SET NULL;
|
|
|
|
CREATE TABLE IF NOT EXISTS ai_chat_attachments (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id UUID REFERENCES ai_chat_messages(id) ON DELETE CASCADE,
|
|
session_id UUID NOT NULL REFERENCES ai_chat_sessions(id) ON DELETE CASCADE,
|
|
filename VARCHAR(255) NOT NULL,
|
|
mime_type VARCHAR(255) NOT NULL DEFAULT 'application/octet-stream',
|
|
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
storage_path VARCHAR(1024) NOT NULL,
|
|
tenant_id UUID NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_attachments_message ON ai_chat_attachments(message_id);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_attachments_session ON ai_chat_attachments(session_id);
|
|
CREATE INDEX IF NOT EXISTS ix_ai_attachments_tenant ON ai_chat_attachments(tenant_id);
|