customer_service / database_schema.sql
codeBOKER's picture
connect to supabase
511ba56
-- Conversation History Database Schema
-- SQLite Database Structure
-- Users table to store user information
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id BIGINT UNIQUE NOT NULL,
username VARCHAR(255),
first_name VARCHAR(255),
last_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Messages table to store conversation history
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id BIGINT NOT NULL,
message_text TEXT NOT NULL,
message_type VARCHAR(20) NOT NULL CHECK (message_type IN ('user', 'assistant')),
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (chat_id) REFERENCES users(chat_id) ON DELETE CASCADE
);
-- Conversation sessions to group messages by session
CREATE TABLE IF NOT EXISTS conversation_sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id BIGINT NOT NULL,
session_start TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
session_end TIMESTAMP NULL,
message_count INTEGER DEFAULT 0,
FOREIGN KEY (chat_id) REFERENCES users(chat_id) ON DELETE CASCADE
);
-- Indexes for better performance
CREATE INDEX IF NOT EXISTS idx_messages_chat_id_timestamp ON messages(chat_id, timestamp);
CREATE INDEX IF NOT EXISTS idx_users_chat_id ON users(chat_id);
CREATE INDEX IF NOT EXISTS idx_sessions_chat_id ON conversation_sessions(chat_id);
-- Trigger to update user's updated_at timestamp
CREATE TRIGGER IF NOT EXISTS update_user_timestamp
AFTER INSERT ON messages
FOR EACH ROW
BEGIN
UPDATE users SET updated_at = CURRENT_TIMESTAMP WHERE chat_id = NEW.chat_id;
END;
-- Trigger to update session message count
CREATE TRIGGER IF NOT EXISTS update_session_count
AFTER INSERT ON messages
FOR EACH ROW
BEGIN
UPDATE conversation_sessions
SET message_count = message_count + 1
WHERE chat_id = NEW.chat_id AND session_end IS NULL;
END;