| |
| |
|
|
| CREATE TABLE IF NOT EXISTS sources ( |
| id VARCHAR(36) PRIMARY KEY, |
| type VARCHAR(20) NOT NULL, |
| title VARCHAR(500) NOT NULL, |
| origin TEXT, |
| language VARCHAR(10) DEFAULT 'EN', |
| status VARCHAR(20) DEFAULT 'pending', |
| chunk_count INT DEFAULT 0, |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS chunks ( |
| id VARCHAR(36) PRIMARY KEY, |
| source_id VARCHAR(36), |
| chunk_index INT, |
| chunk_text TEXT, |
| chunk_type VARCHAR(20) DEFAULT 'text', |
| page_number INT DEFAULT NULL, |
| timestamp_s INT DEFAULT NULL, |
| unified_metadata JSON DEFAULT NULL, |
| url_ref TEXT DEFAULT NULL, |
| FOREIGN KEY (source_id) REFERENCES sources(id) ON DELETE CASCADE |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS chat_history ( |
| id VARCHAR(36) PRIMARY KEY, |
| question TEXT NOT NULL, |
| answer TEXT NOT NULL, |
| sources_used JSON DEFAULT NULL, |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| conversation_id VARCHAR(36) DEFAULT NULL |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS conversations ( |
| id VARCHAR(36) PRIMARY KEY, |
| title VARCHAR(500) DEFAULT 'New Chat', |
| conv_type VARCHAR(20) DEFAULT 'general', |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
| ); |
|
|
| CREATE TABLE IF NOT EXISTS image_jobs ( |
| image_id VARCHAR(36) PRIMARY KEY, |
| source_id VARCHAR(36) NULL, |
| image_data LONGBLOB, |
| caption TEXT, |
| status VARCHAR(20) DEFAULT 'pending', |
| created_at DATETIME DEFAULT CURRENT_TIMESTAMP |
| ); |
|
|
| |
| CREATE INDEX idx_chunks_source ON chunks(source_id); |
| CREATE INDEX idx_chunks_type ON chunks(chunk_type); |
| CREATE INDEX idx_sources_type ON sources(type); |
| CREATE INDEX idx_chat_created ON chat_history(created_at); |