final-database-test.jsā¢3.92 kB
// Polyfill fetch for Node.js
import fetch, { Headers, Request, Response } from 'node-fetch';
global.fetch = fetch;
global.Headers = Headers;
global.Request = Request;
global.Response = Response;
import { createClient } from '@supabase/supabase-js';
import { config } from 'dotenv';
import fs from 'fs';
config();
const supabaseUrl = process.env.SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_KEY;
console.log('š Final Database Test for MCP MAGMA Handbook');
console.log('=' .repeat(50));
const supabase = createClient(supabaseUrl, supabaseKey);
async function runFinalTest() {
try {
console.log('\nš 1. Database Connection Test');
const { data: connectionTest, error: connError } = await supabase
.from('magma_documents_v2')
.select('count')
.limit(1);
if (connError) {
console.log('ā Connection failed:', connError.message);
return;
}
console.log('ā
Database connection successful');
console.log('\nš 2. Table Status Check');
const { count: docCount } = await supabase
.from('magma_documents_v2')
.select('*', { count: 'exact', head: true });
const { count: funcCount } = await supabase
.from('magma_functions')
.select('*', { count: 'exact', head: true });
console.log(` š Documents: ${docCount || 0}`);
console.log(` āļø Functions: ${funcCount || 0}`);
console.log('\nš§ 3. Required Functions Check');
const requiredFunctions = [
'search_magma_hybrid',
'search_magma_functions',
'search_magma_documents',
'update_content_tsvector',
'cleanup_search_cache'
];
let functionsExist = 0;
for (const funcName of requiredFunctions) {
try {
const { error } = await supabase.rpc(funcName, {});
if (error && !error.message.includes('Could not find the function')) {
console.log(` ā
${funcName} exists`);
functionsExist++;
} else {
console.log(` ā ${funcName} missing`);
}
} catch (e) {
console.log(` ā ${funcName} error: ${e.message.substring(0, 50)}...`);
}
}
console.log('\nš 4. Schema Status Summary');
const schemaComplete = functionsExist === requiredFunctions.length;
const dataExists = (docCount || 0) > 0;
console.log(` Schema Complete: ${schemaComplete ? 'ā
' : 'ā'} (${functionsExist}/${requiredFunctions.length} functions)`);
console.log(` Data Indexed: ${dataExists ? 'ā
' : 'ā'} (${docCount || 0} documents)`);
console.log('\nšÆ 5. Next Steps');
if (!schemaComplete) {
console.log(' 1. Apply schema-v2.sql in Supabase Dashboard SQL Editor');
console.log(' 2. Ensure all PostgreSQL extensions are enabled (vector, pg_trgm, unaccent)');
}
if (!dataExists) {
console.log(' 3. Run: npm run index-advanced');
console.log(' 4. Wait for indexing to complete');
}
if (schemaComplete && dataExists) {
console.log(' š Ready to run benchmark: npm run benchmark');
}
console.log('\nš 6. File Status');
console.log(` š PDF exists: ${fs.existsSync('/Users/baegjaehyeon/mcp-magma-handbook/data/pdfs/Handbook.pdf') ? 'ā
' : 'ā'}`);
console.log(` š Schema file: ${fs.existsSync('/Users/baegjaehyeon/mcp-magma-handbook/supabase/schema-v2.sql') ? 'ā
' : 'ā'}`);
console.log('\nš§ 7. Commands to Run');
console.log(' Build: npm run build');
console.log(' Index: npm run index-advanced');
console.log(' Test: node final-database-test.js');
console.log(' Benchmark: npm run benchmark');
} catch (error) {
console.error('ā Test failed:', error.message);
}
}
runFinalTest().then(() => {
console.log('\n' + '=' .repeat(50));
console.log('ā
Final test completed!');
}).catch(err => {
console.error('ā Test error:', err);
});