54 lines
2.3 KiB
MySQL
54 lines
2.3 KiB
MySQL
|
|
-- Migration: Create Chat History Tables
|
||
|
|
-- Description: Create tables for chat history functionality based on the old web API structure
|
||
|
|
-- Date: 2024-01-01
|
||
|
|
|
||
|
|
-- Create chat_sessions table
|
||
|
|
CREATE TABLE IF NOT EXISTS chat_sessions (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
session_id VARCHAR(255) NOT NULL UNIQUE,
|
||
|
|
user_id INTEGER NOT NULL,
|
||
|
|
agent_id VARCHAR(255) NOT NULL,
|
||
|
|
title VARCHAR(255) NOT NULL DEFAULT 'Chat Session',
|
||
|
|
message_count INTEGER DEFAULT 0,
|
||
|
|
status VARCHAR(50) DEFAULT 'active',
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Create chat_messages_new table (to avoid conflict with existing chat_messages)
|
||
|
|
CREATE TABLE IF NOT EXISTS chat_messages_new (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
session_id VARCHAR(255) NOT NULL,
|
||
|
|
message_type VARCHAR(50) NOT NULL CHECK (message_type IN ('user', 'assistant')),
|
||
|
|
content TEXT NOT NULL,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Create indexes for better performance
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_sessions_user_id ON chat_sessions (user_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_sessions_agent_id ON chat_sessions (agent_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_sessions_session_id ON chat_sessions (session_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_sessions_created_at ON chat_sessions (created_at);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_messages_new_session_id ON chat_messages_new (session_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_chat_messages_new_created_at ON chat_messages_new (created_at);
|
||
|
|
|
||
|
|
-- Add foreign key constraints
|
||
|
|
ALTER TABLE chat_sessions
|
||
|
|
ADD CONSTRAINT fk_chat_sessions_user_id
|
||
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
ALTER TABLE chat_messages_new
|
||
|
|
ADD CONSTRAINT fk_chat_messages_new_session_id
|
||
|
|
FOREIGN KEY (session_id) REFERENCES chat_sessions(session_id) ON DELETE CASCADE;
|
||
|
|
|
||
|
|
-- Insert sample data (optional)
|
||
|
|
INSERT INTO chat_sessions (session_id, user_id, agent_id, title, message_count)
|
||
|
|
VALUES ('sample-session-123', 1, 'd04bbced-ae93-4fb3-a015-9472e4e5e539', 'Sample Chat Session', 2)
|
||
|
|
ON CONFLICT (session_id) DO NOTHING;
|
||
|
|
|
||
|
|
INSERT INTO chat_messages_new (session_id, message_type, content)
|
||
|
|
VALUES
|
||
|
|
('sample-session-123', 'user', 'Halo, ada yang bisa saya tanyakan?'),
|
||
|
|
('sample-session-123', 'assistant', 'Halo! Tentu saja, saya siap membantu Anda dengan pertanyaan apapun.')
|
||
|
|
ON CONFLICT DO NOTHING;
|