narasiahli-be/migrations/001_create_chat_history_tab...

54 lines
2.3 KiB
SQL

-- 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;