#!/usr/bin/env node
// Простой тест подключения к SQLite базе данных
import { SQLiteClient } from '../dist/rag/sqlite-client.js';
async function testSQLiteConnection() {
console.log('🧪 Тестирование подключения к SQLite базе данных...\n');
const sqliteClient = new SQLiteClient('./data/rag.db');
try {
// Инициализация
console.log('🔌 Инициализация SQLite клиента...');
const initResult = await sqliteClient.initialize();
if (initResult.isErr()) {
throw new Error(`Ошибка инициализации: ${initResult.error.message}`);
}
console.log('✅ SQLite клиент инициализирован');
// Проверка подключения
console.log('🔍 Проверка подключения...');
const isConnected = await sqliteClient.isConnected();
if (!isConnected) {
throw new Error('Нет подключения к базе данных');
}
console.log('✅ Подключение к базе данных установлено');
// Получение статистики
console.log('📊 Получение статистики...');
const statsResult = await sqliteClient.getStats();
if (statsResult.isErr()) {
throw new Error(`Ошибка получения статистики: ${statsResult.error.message}`);
}
const stats = statsResult.value;
console.log('✅ Статистика получена:');
console.log(` Документов: ${stats.documents}`);
console.log(` Чанков: ${stats.chunks}`);
console.log(` Эмбеддингов: ${stats.embeddings}`);
console.log(` Размер БД: ${(stats.dbSize / 1024).toFixed(2)} KB`);
console.log(` FTS включен: ${stats.ftsEnabled}`);
// Получение документов
console.log('\n📚 Получение документов...');
const docsResult = await sqliteClient.getDocuments();
if (docsResult.isErr()) {
throw new Error(`Ошибка получения документов: ${docsResult.error.message}`);
}
const docs = docsResult.value;
console.log(`✅ Найдено документов: ${docs.length}`);
docs.forEach((doc, index) => {
console.log(` ${index + 1}. ${doc.title} (${doc.uri})`);
console.log(` Создан: ${doc.created_at}`);
console.log(` Метаданные: ${doc.metadata || 'нет'}`);
});
// Получение чанков для первого документа
if (docs.length > 0) {
console.log('\n📄 Получение чанков для первого документа...');
const chunksResult = await sqliteClient.getDocumentChunks(docs[0].id);
if (chunksResult.isErr()) {
throw new Error(`Ошибка получения чанков: ${chunksResult.error.message}`);
}
const chunks = chunksResult.value;
console.log(`✅ Найдено чанков: ${chunks.length}`);
chunks.forEach((chunk, index) => {
console.log(` ${index + 1}. Размер: ${chunk.text.length} символов`);
console.log(` Секция: ${chunk.section}`);
console.log(` Токены: ${chunk.token_count || 'не подсчитано'}`);
});
}
console.log('\n🎉 Все тесты прошли успешно!');
} catch (error) {
console.error('❌ Ошибка в тестах SQLite:', error.message);
console.error('Детали:', error);
} finally {
await sqliteClient.close();
console.log('\n🔒 Соединение с базой данных закрыто');
}
}
testSQLiteConnection().catch(console.error);