@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
39 lines (31 loc) • 1.35 kB
JavaScript
// Extract entities from EntityRouter
import fs from 'fs';
// Read EntityRouter.ts
const routerContent = fs.readFileSync('src/tools/EntityRouter.ts', 'utf8');
// Extract entity definitions
const entityRegex = /^\s+([a-z_]+):\s*{$/gm;
const entities = [];
let match;
while ((match = entityRegex.exec(routerContent)) !== null) {
if (match[1] !== 'platform' && match[1] !== 'apiEndpoint' && match[1] !== 'supportsArchive') {
entities.push(match[1]);
}
}
// Read SQLiteEngine.ts
const sqliteContent = fs.readFileSync('src/storage/SQLiteEngine.ts', 'utf8');
// Extract table names
const tableRegex = /CREATE TABLE IF NOT EXISTS ([a-z_]+)/g;
const tables = [];
while ((match = tableRegex.exec(sqliteContent)) !== null) {
tables.push(match[1]);
}
console.log('=== Entity Router Entities ===');
console.log(entities.sort().join('\n'));
console.log('\n=== SQLite Tables ===');
console.log(tables.sort().join('\n'));
console.log('\n=== Missing Tables (Entities without tables) ===');
const missingTables = entities.filter(e => !tables.includes(e) && !tables.includes(e + 's'));
console.log(missingTables.sort().join('\n'));
console.log('\n=== Orphan Tables (Tables without entities) ===');
const orphanTables = tables.filter(t => !entities.includes(t) && !entities.includes(t.replace(/s$/, '')));
console.log(orphanTables.sort().join('\n'));